From 01e77fe5eb2bd21a785e1bf406941e6b507d4305 Mon Sep 17 00:00:00 2001 From: sveitser Date: Thu, 19 Dec 2024 17:26:03 +0100 Subject: [PATCH] Update contract bindings, non-test code --- .../src/permissioned_stake_table.rs | 86 ++++--------------- contracts/rust/adapter/src/stake_table.rs | 50 +++++++---- .../bin/update-permissioned-stake-table.rs | 6 +- sequencer/src/genesis.rs | 2 +- types/src/v0/impls/stake_table.rs | 43 ++++------ utils/src/stake_table.rs | 13 ++- 6 files changed, 76 insertions(+), 124 deletions(-) diff --git a/contract-bindings/src/permissioned_stake_table.rs b/contract-bindings/src/permissioned_stake_table.rs index 416ad97bdf..5a656e5c05 100644 --- a/contract-bindings/src/permissioned_stake_table.rs +++ b/contract-bindings/src/permissioned_stake_table.rs @@ -143,40 +143,15 @@ pub mod permissioned_stake_table { kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ],), ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct PermissionedStakeTable.NodeInfo[]", - ), + ::std::borrow::ToOwned::to_owned("struct BN254.G2Point[]"), ), }, ::ethers::core::abi::ethabi::Param { @@ -257,33 +232,10 @@ pub mod permissioned_stake_table { kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ],), ), ), @@ -403,12 +355,12 @@ pub mod permissioned_stake_table { pub static PERMISSIONEDSTAKETABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0B\xF28\x03\x80b\0\x0B\xF2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x03\x03V[3\x80b\0\0\\W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[b\0\0g\x81b\0\0zV[Pb\0\0s\x81b\0\0\xCAV[Pb\0\x04LV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15b\0\x01\xA1W`\0b\0\x01\n\x83\x83\x81Q\x81\x10b\0\0\xF2Wb\0\0\xF2b\0\x046V[` \x02` \x01\x01Q`\0\x01Qb\0\x01\xA5` \x1B` \x1CV[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15b\0\x01\x7FW\x82\x82\x81Q\x81\x10b\0\x01:Wb\0\x01:b\0\x046V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01b\0\0SV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01b\0\0\xCDV[PPV[`\0\x81`\0\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01b\0\x01\xE5\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02=Wb\0\x02=b\0\x02\x02V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02=Wb\0\x02=b\0\x02\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02\x93Wb\0\x02\x93b\0\x02\x02V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x02\xAEW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02\xD3Wb\0\x02\xD3b\0\x02\x02V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x80Q\x80\x15\x15\x81\x14b\0\x02\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15b\0\x03\x17W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03/W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\x03DW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x03YWb\0\x03Yb\0\x02\x02V[b\0\x03i\x84\x82`\x05\x1B\x01b\0\x02hV[\x81\x81R\x84\x81\x01\x92P`\xE0\x91\x82\x02\x84\x01\x85\x01\x91\x88\x83\x11\x15b\0\x03\x89W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15b\0\x04*W\x84\x89\x03\x81\x81\x12\x15b\0\x03\xA9W`\0\x80\x81\xFD[b\0\x03\xB3b\0\x02\x18V[`\x80\x80\x83\x12\x15b\0\x03\xC4W`\0\x80\x81\xFD[b\0\x03\xCEb\0\x02CV[\x92P\x87Q\x83R\x88\x88\x01Q\x89\x84\x01R`@\x80\x89\x01Q\x81\x85\x01R``\x80\x8A\x01Q\x81\x86\x01RP\x83\x83Rb\0\x04\x02\x8D\x83\x8B\x01b\0\x02\x9BV[\x8A\x84\x01Rb\0\x04\x14`\xC0\x8A\x01b\0\x02\xEDV[\x90\x83\x01RP\x85RP\x93\x84\x01\x93\x92\x85\x01\x92b\0\x03\x8EV[P\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[a\x07\x96\x80b\0\x04\\`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cqP\x18\xA6\x14a\0gW\x80cu\xD7\x05\xE9\x14a\0qW\x80c\x8D\xA5\xCB[\x14a\0\x99W\x80c\x9B0\xA5\xE6\x14a\0\xB4W\x80c\xA8\xA0\xEA\\\x14a\0\xD5W\x80c\xF2\xFD\xE3\x8B\x14a\0\xE8W[`\0\x80\xFD[a\0oa\0\xFBV[\0[a\0\x84a\0\x7F6`\x04a\x05\x1EV[a\x01\x0FV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x90V[a\0\xC7a\0\xC26`\x04a\x05\x1EV[a\x018V[`@Q\x90\x81R` \x01a\0\x90V[a\0oa\0\xE36`\x04a\x062V[a\x01\x94V[a\0oa\0\xF66`\x04a\x06\x96V[a\x01\xEBV[a\x01\x03a\x02.V[a\x01\r`\0a\x02[V[V[`\0`\x01`\0a\x01\x1E\x84a\x018V[\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16\x92\x91PPV[`\0\x81`\0\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x01w\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x01\x9Ca\x02.V[a\x01\xA5\x82a\x02\xABV[a\x01\xAE\x81a\x03qV[\x7F5\r\xA2J2\x14l\xFD\x14\xB4\xFD\x11\xFB>;t\xA3\xB9\xA0\xCC\x92\x01KEL)S\xA0\x0E\xAB\xA3=\x82\x82`@Qa\x01\xDF\x92\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xA1PPV[a\x01\xF3a\x02.V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\"W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x02+\x81a\x02[V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x02\x19V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15a\x03mW`\0a\x02\xDF\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x07sV[` \x02` \x01\x01Q`\0\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16a\x03NW\x82\x82\x81Q\x81\x10a\x03\nWa\x03\na\x07sV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc4\xA7V\x1F`\xE0\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x90U\x01a\x02\xAEV[PPV[`\0[\x81Q\x81\x10\x15a\x03mW`\0a\x03\x94\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x07sV[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15a\x04\x04W\x82\x82\x81Q\x81\x10a\x03\xC0Wa\x03\xC0a\x07sV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01a\x03tV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04^Wa\x04^a\x04%V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04^Wa\x04^a\x04%V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xB0Wa\x04\xB0a\x04%V[`@R\x91\x90PV[`\0`\x80\x82\x84\x03\x12\x15a\x04\xCAW`\0\x80\xFD[`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x04\xEDWa\x04\xEDa\x04%V[\x80`@RP\x80\x91P\x825\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01RP\x92\x91PPV[`\0`\x80\x82\x84\x03\x12\x15a\x050W`\0\x80\xFD[a\x05:\x83\x83a\x04\xB8V[\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x05RW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05nWa\x05na\x04%V[a\x05|\x81\x83`\x05\x1B\x01a\x04\x87V[\x82\x81R`\xE0\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\x9BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06%W\x80\x89\x03\x82\x81\x12\x15a\x05\xB8W`\0\x80\x81\xFD[a\x05\xC0a\x04;V[a\x05\xCA\x8B\x84a\x04\xB8V[\x81R`@\x80`\x7F\x19\x84\x01\x12\x15a\x05\xE0W`\0\x80\x81\xFD[a\x05\xE8a\x04dV[`\x80\x85\x015\x81R`\xA0\x85\x015\x89\x82\x01R\x82\x89\x01R`\xC0\x84\x015\x92P\x82\x15\x15\x83\x14a\x06\x12W`\0\x80\x81\xFD[\x81\x01\x91\x90\x91R\x84R\x92\x84\x01\x92\x81\x01a\x05\x9FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06EW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[a\x06i\x86\x83\x87\x01a\x05AV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x06\x7FW`\0\x80\xFD[Pa\x06\x8C\x85\x82\x86\x01a\x05AV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xA8W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05:W`\0\x80\xFD[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x07:W\x81Qa\x07\n\x88\x82Q\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q`@\x83\x01R``\x81\x01Q``\x83\x01RPPV[\x80\x84\x01Q\x80Q`\x80\x8A\x01R\x84\x01Q`\xA0\x89\x01R`@\x01Q\x15\x15`\xC0\x88\x01R`\xE0\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x06\xD4V[P\x94\x95\x94PPPPPV[`@\x81R`\0a\x07X`@\x83\x01\x85a\x06\xBFV[\x82\x81\x03` \x84\x01Ra\x07j\x81\x85a\x06\xBFV[\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD\xFE\xA1dsolcC\0\x08\x17\0\n"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0C\xB28\x03\x80b\0\x0C\xB2\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x03\x03V[3\x80b\0\0\\W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[b\0\0g\x81b\0\0zV[Pb\0\0s\x81b\0\0\xCAV[Pb\0\x04LV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15b\0\x01\xA1W`\0b\0\x01\n\x83\x83\x81Q\x81\x10b\0\0\xF2Wb\0\0\xF2b\0\x046V[` \x02` \x01\x01Q`\0\x01Qb\0\x01\xA5` \x1B` \x1CV[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15b\0\x01\x7FW\x82\x82\x81Q\x81\x10b\0\x01:Wb\0\x01:b\0\x046V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01b\0\0SV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01b\0\0\xCDV[PPV[`\0\x81`\0\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01b\0\x01\xE5\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02=Wb\0\x02=b\0\x02\x02V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02=Wb\0\x02=b\0\x02\x02V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02\x93Wb\0\x02\x93b\0\x02\x02V[`@R\x91\x90PV[`\0`@\x82\x84\x03\x12\x15b\0\x02\xAEW`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15b\0\x02\xD3Wb\0\x02\xD3b\0\x02\x02V[`@R\x82Q\x81R` \x92\x83\x01Q\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x80Q\x80\x15\x15\x81\x14b\0\x02\xFEW`\0\x80\xFD[\x91\x90PV[`\0` \x80\x83\x85\x03\x12\x15b\0\x03\x17W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x03/W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\x03DW`\0\x80\xFD[\x81Q\x81\x81\x11\x15b\0\x03YWb\0\x03Yb\0\x02\x02V[b\0\x03i\x84\x82`\x05\x1B\x01b\0\x02hV[\x81\x81R\x84\x81\x01\x92P`\xE0\x91\x82\x02\x84\x01\x85\x01\x91\x88\x83\x11\x15b\0\x03\x89W`\0\x80\xFD[\x93\x85\x01\x93[\x82\x85\x10\x15b\0\x04*W\x84\x89\x03\x81\x81\x12\x15b\0\x03\xA9W`\0\x80\x81\xFD[b\0\x03\xB3b\0\x02\x18V[`\x80\x80\x83\x12\x15b\0\x03\xC4W`\0\x80\x81\xFD[b\0\x03\xCEb\0\x02CV[\x92P\x87Q\x83R\x88\x88\x01Q\x89\x84\x01R`@\x80\x89\x01Q\x81\x85\x01R``\x80\x8A\x01Q\x81\x86\x01RP\x83\x83Rb\0\x04\x02\x8D\x83\x8B\x01b\0\x02\x9BV[\x8A\x84\x01Rb\0\x04\x14`\xC0\x8A\x01b\0\x02\xEDV[\x90\x83\x01RP\x85RP\x93\x84\x01\x93\x92\x85\x01\x92b\0\x03\x8EV[P\x97\x96PPPPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[a\x08V\x80b\0\x04\\`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cqP\x18\xA6\x14a\0gW\x80cu\xD7\x05\xE9\x14a\0qW\x80c\x8D\xA5\xCB[\x14a\0\x99W\x80c\x9B0\xA5\xE6\x14a\0\xB4W\x80c\xCB\xBA|x\x14a\0\xD5W\x80c\xF2\xFD\xE3\x8B\x14a\0\xE8W[`\0\x80\xFD[a\0oa\0\xFBV[\0[a\0\x84a\0\x7F6`\x04a\x05*V[a\x01\x0FV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x90V[a\0\xC7a\0\xC26`\x04a\x05*V[a\x018V[`@Q\x90\x81R` \x01a\0\x90V[a\0oa\0\xE36`\x04a\x06MV[a\x01\x94V[a\0oa\0\xF66`\x04a\x07\x19V[a\x01\xEBV[a\x01\x03a\x02.V[a\x01\r`\0a\x02[V[V[`\0`\x01`\0a\x01\x1E\x84a\x018V[\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16\x92\x91PPV[`\0\x81`\0\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x01w\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x01\x9Ca\x02.V[a\x01\xA5\x82a\x02\xABV[a\x01\xAE\x81a\x03lV[\x7FK\xB3\x1C\xD9\xAE\x87\xA3\xF8(\x95X\xC7\x9B\xE5#%\x06\xCE6\xDEBi\xC8\xBAE4\xA6\xFB\xE9\xE2\x96]\x82\x82`@Qa\x01\xDF\x92\x91\x90a\x07BV[`@Q\x80\x91\x03\x90\xA1PPV[a\x01\xF3a\x02.V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\"W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x02+\x81a\x02[V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x02\x19V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15a\x03hW`\0a\x02\xDB\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x083V[` \x02` \x01\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16a\x03IW\x82\x82\x81Q\x81\x10a\x03\x06Wa\x03\x06a\x083V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Qc4\xA7V\x1F`\xE0\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x90U\x01a\x02\xAEV[PPV[`\0[\x81Q\x81\x10\x15a\x03hW`\0a\x03\xA0\x83\x83\x81Q\x81\x10a\x03\x8FWa\x03\x8Fa\x083V[` \x02` \x01\x01Q`\0\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15a\x04\x10W\x82\x82\x81Q\x81\x10a\x03\xCCWa\x03\xCCa\x083V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01a\x03oV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04jWa\x04ja\x041V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04jWa\x04ja\x041V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBCWa\x04\xBCa\x041V[`@R\x91\x90PV[`\0`\x80\x82\x84\x03\x12\x15a\x04\xD6W`\0\x80\xFD[`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x04\xF9Wa\x04\xF9a\x041V[\x80`@RP\x80\x91P\x825\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01RP\x92\x91PPV[`\0`\x80\x82\x84\x03\x12\x15a\x05;t\xA3\xB9\xA0\xCC\x92\x01KEL)S\xA0\x0E\xAB\xA3=\x82\x82`@Qa\x01\xDF\x92\x91\x90a\x07EV[`@Q\x80\x91\x03\x90\xA1PPV[a\x01\xF3a\x02.V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\"W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x02+\x81a\x02[V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x02\x19V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15a\x03mW`\0a\x02\xDF\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x07sV[` \x02` \x01\x01Q`\0\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16a\x03NW\x82\x82\x81Q\x81\x10a\x03\nWa\x03\na\x07sV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc4\xA7V\x1F`\xE0\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x90U\x01a\x02\xAEV[PPV[`\0[\x81Q\x81\x10\x15a\x03mW`\0a\x03\x94\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x07sV[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15a\x04\x04W\x82\x82\x81Q\x81\x10a\x03\xC0Wa\x03\xC0a\x07sV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01a\x03tV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04^Wa\x04^a\x04%V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04^Wa\x04^a\x04%V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xB0Wa\x04\xB0a\x04%V[`@R\x91\x90PV[`\0`\x80\x82\x84\x03\x12\x15a\x04\xCAW`\0\x80\xFD[`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x04\xEDWa\x04\xEDa\x04%V[\x80`@RP\x80\x91P\x825\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01RP\x92\x91PPV[`\0`\x80\x82\x84\x03\x12\x15a\x050W`\0\x80\xFD[a\x05:\x83\x83a\x04\xB8V[\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x05RW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05nWa\x05na\x04%V[a\x05|\x81\x83`\x05\x1B\x01a\x04\x87V[\x82\x81R`\xE0\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\x9BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06%W\x80\x89\x03\x82\x81\x12\x15a\x05\xB8W`\0\x80\x81\xFD[a\x05\xC0a\x04;V[a\x05\xCA\x8B\x84a\x04\xB8V[\x81R`@\x80`\x7F\x19\x84\x01\x12\x15a\x05\xE0W`\0\x80\x81\xFD[a\x05\xE8a\x04dV[`\x80\x85\x015\x81R`\xA0\x85\x015\x89\x82\x01R\x82\x89\x01R`\xC0\x84\x015\x92P\x82\x15\x15\x83\x14a\x06\x12W`\0\x80\x81\xFD[\x81\x01\x91\x90\x91R\x84R\x92\x84\x01\x92\x81\x01a\x05\x9FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x06EW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[a\x06i\x86\x83\x87\x01a\x05AV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x06\x7FW`\0\x80\xFD[Pa\x06\x8C\x85\x82\x86\x01a\x05AV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\xA8W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x05:W`\0\x80\xFD[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x07:W\x81Qa\x07\n\x88\x82Q\x80Q\x82R` \x81\x01Q` \x83\x01R`@\x81\x01Q`@\x83\x01R``\x81\x01Q``\x83\x01RPPV[\x80\x84\x01Q\x80Q`\x80\x8A\x01R\x84\x01Q`\xA0\x89\x01R`@\x01Q\x15\x15`\xC0\x88\x01R`\xE0\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x06\xD4V[P\x94\x95\x94PPPPPV[`@\x81R`\0a\x07X`@\x83\x01\x85a\x06\xBFV[\x82\x81\x03` \x84\x01Ra\x07j\x81\x85a\x06\xBFV[\x95\x94PPPPPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD\xFE\xA1dsolcC\0\x08\x17\0\n"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0bW`\x005`\xE0\x1C\x80cqP\x18\xA6\x14a\0gW\x80cu\xD7\x05\xE9\x14a\0qW\x80c\x8D\xA5\xCB[\x14a\0\x99W\x80c\x9B0\xA5\xE6\x14a\0\xB4W\x80c\xCB\xBA|x\x14a\0\xD5W\x80c\xF2\xFD\xE3\x8B\x14a\0\xE8W[`\0\x80\xFD[a\0oa\0\xFBV[\0[a\0\x84a\0\x7F6`\x04a\x05*V[a\x01\x0FV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\x90V[a\0\xC7a\0\xC26`\x04a\x05*V[a\x018V[`@Q\x90\x81R` \x01a\0\x90V[a\0oa\0\xE36`\x04a\x06MV[a\x01\x94V[a\0oa\0\xF66`\x04a\x07\x19V[a\x01\xEBV[a\x01\x03a\x02.V[a\x01\r`\0a\x02[V[V[`\0`\x01`\0a\x01\x1E\x84a\x018V[\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 T`\xFF\x16\x92\x91PPV[`\0\x81`\0\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x01w\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x01\x9Ca\x02.V[a\x01\xA5\x82a\x02\xABV[a\x01\xAE\x81a\x03lV[\x7FK\xB3\x1C\xD9\xAE\x87\xA3\xF8(\x95X\xC7\x9B\xE5#%\x06\xCE6\xDEBi\xC8\xBAE4\xA6\xFB\xE9\xE2\x96]\x82\x82`@Qa\x01\xDF\x92\x91\x90a\x07BV[`@Q\x80\x91\x03\x90\xA1PPV[a\x01\xF3a\x02.V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x02\"W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x02+\x81a\x02[V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x02\x19V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0[\x81Q\x81\x10\x15a\x03hW`\0a\x02\xDB\x83\x83\x81Q\x81\x10a\x02\xCEWa\x02\xCEa\x083V[` \x02` \x01\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16a\x03IW\x82\x82\x81Q\x81\x10a\x03\x06Wa\x03\x06a\x083V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Qc4\xA7V\x1F`\xE0\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x90U\x01a\x02\xAEV[PPV[`\0[\x81Q\x81\x10\x15a\x03hW`\0a\x03\xA0\x83\x83\x81Q\x81\x10a\x03\x8FWa\x03\x8Fa\x083V[` \x02` \x01\x01Q`\0\x01Qa\x018V[`\0\x81\x81R`\x01` R`@\x90 T\x90\x91P`\xFF\x16\x15a\x04\x10W\x82\x82\x81Q\x81\x10a\x03\xCCWa\x03\xCCa\x083V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@\x80Qc\x1B\x06\xE1A`\xE1\x1B\x81R\x82Q`\x04\x82\x01R\x92\x82\x01Q`$\x84\x01R\x81\x01Q`D\x83\x01R``\x01Q`d\x82\x01R`\x84\x01a\x02\x19V[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x80T`\xFF\x19\x16\x82\x17\x90U\x01a\x03oV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04jWa\x04ja\x041V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04jWa\x04ja\x041V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBCWa\x04\xBCa\x041V[`@R\x91\x90PV[`\0`\x80\x82\x84\x03\x12\x15a\x04\xD6W`\0\x80\xFD[`@Q`\x80\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a\x04\xF9Wa\x04\xF9a\x041V[\x80`@RP\x80\x91P\x825\x81R` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01RP\x92\x91PPV[`\0`\x80\x82\x84\x03\x12\x15a\x05, + stakers_to_remove: ::std::vec::Vec, new_stakers: ::std::vec::Vec, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([168, 160, 234, 92], (stakers_to_remove, new_stakers)) + .method_hash([203, 186, 124, 120], (stakers_to_remove, new_stakers)) .expect("method not found (this should never happen)") } ///Gets the contract's `OwnershipTransferred` event @@ -808,10 +760,10 @@ pub mod permissioned_stake_table { )] #[ethevent( name = "StakersUpdated", - abi = "StakersUpdated(((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])" + abi = "StakersUpdated((uint256,uint256,uint256,uint256)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])" )] pub struct StakersUpdatedFilter { - pub removed: ::std::vec::Vec, + pub removed: ::std::vec::Vec, pub added: ::std::vec::Vec, } ///Container type for all of the contract's events @@ -946,7 +898,7 @@ pub mod permissioned_stake_table { pub struct TransferOwnershipCall { pub new_owner: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `update` function with signature `update(((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])` and selector `0xa8a0ea5c` + ///Container type for all input parameters for the `update` function with signature `update((uint256,uint256,uint256,uint256)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])` and selector `0xcbba7c78` #[derive( Clone, ::ethers::contract::EthCall, @@ -961,10 +913,10 @@ pub mod permissioned_stake_table { )] #[ethcall( name = "update", - abi = "update(((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])" + abi = "update((uint256,uint256,uint256,uint256)[],((uint256,uint256,uint256,uint256),(uint256,uint256),bool)[])" )] pub struct UpdateCall { - pub stakers_to_remove: ::std::vec::Vec, + pub stakers_to_remove: ::std::vec::Vec, pub new_stakers: ::std::vec::Vec, } ///Container type for all of the contract's call diff --git a/contracts/rust/adapter/src/stake_table.rs b/contracts/rust/adapter/src/stake_table.rs index ad5ed92b7e..595dcc0797 100644 --- a/contracts/rust/adapter/src/stake_table.rs +++ b/contracts/rust/adapter/src/stake_table.rs @@ -173,25 +173,7 @@ impl From for NodeInfoJf { schnorr_vk, is_da, } = value; - let stake_table_key = { - let g2 = diff_test_bn254::ParsedG2Point { - x0: bls_vk.x_0, - x1: bls_vk.x_1, - y0: bls_vk.y_0, - y1: bls_vk.y_1, - }; - let g2_affine = short_weierstrass::Affine::::from(g2); - let mut bytes = vec![]; - // TODO: remove serde round-trip once jellyfin provides a way to - // convert from Affine representation to VerKey. - // - // Serialization and de-serialization shouldn't fail. - g2_affine - .into_group() - .serialize_compressed(&mut bytes) - .unwrap(); - BLSPubKey::deserialize_compressed(&bytes[..]).unwrap() - }; + let stake_table_key = bls_sol_to_jf(bls_vk); let state_ver_key = { let g1_point: ParsedEdOnBN254Point = schnorr_vk.into(); let state_sk_affine = twisted_edwards::Affine::::from(g1_point); @@ -221,6 +203,36 @@ impl From> for NodeInfoJf { } } +pub fn bls_jf_to_sol(bls_vk: BLSPubKey) -> permissioned_stake_table::G2Point { + let ParsedG2Point { x0, x1, y0, y1 } = bls_vk.to_affine().into(); + permissioned_stake_table::G2Point { + x_0: x0, + x_1: x1, + y_0: y0, + y_1: y1, + } +} + +pub fn bls_sol_to_jf(bls_vk: permissioned_stake_table::G2Point) -> BLSPubKey { + let g2 = diff_test_bn254::ParsedG2Point { + x0: bls_vk.x_0, + x1: bls_vk.x_1, + y0: bls_vk.y_0, + y1: bls_vk.y_1, + }; + let g2_affine = short_weierstrass::Affine::::from(g2); + let mut bytes = vec![]; + // TODO: remove serde round-trip once jellyfin provides a way to + // convert from Affine representation to VerKey. + // + // Serialization and de-serialization shouldn't fail. + g2_affine + .into_group() + .serialize_compressed(&mut bytes) + .unwrap(); + BLSPubKey::deserialize_compressed(&bytes[..]).unwrap() +} + #[cfg(test)] mod test { use super::*; diff --git a/sequencer/src/bin/update-permissioned-stake-table.rs b/sequencer/src/bin/update-permissioned-stake-table.rs index 9849516da6..b95a642442 100644 --- a/sequencer/src/bin/update-permissioned-stake-table.rs +++ b/sequencer/src/bin/update-permissioned-stake-table.rs @@ -2,7 +2,10 @@ use anyhow::Result; use clap::Parser; use espresso_types::parse_duration; use ethers::types::Address; -use sequencer_utils::{logging, stake_table::{update_stake_table, PermissionedStakeTableUpdate}}; +use sequencer_utils::{ + logging, + stake_table::{update_stake_table, PermissionedStakeTableUpdate}, +}; use std::{path::PathBuf, time::Duration}; use url::Url; @@ -89,7 +92,6 @@ async fn main() -> Result<()> { opts.logging.init(); let update = PermissionedStakeTableUpdate::from_toml_file(&opts.update_toml_path)?; - update_stake_table( opts.rpc_url, opts.l1_polling_interval, diff --git a/sequencer/src/genesis.rs b/sequencer/src/genesis.rs index 17224f1e9f..2f3b130108 100644 --- a/sequencer/src/genesis.rs +++ b/sequencer/src/genesis.rs @@ -60,7 +60,7 @@ pub struct Genesis { pub header: GenesisHeader, #[serde(rename = "upgrade", with = "upgrade_ser")] #[serde(default)] - pub upgrades: BTreeMap, + pub upgrades: BTreeMap, } impl Genesis { diff --git a/types/src/v0/impls/stake_table.rs b/types/src/v0/impls/stake_table.rs index aaf947f39b..3c0c7c035a 100644 --- a/types/src/v0/impls/stake_table.rs +++ b/types/src/v0/impls/stake_table.rs @@ -5,8 +5,8 @@ use super::{ use contract_bindings::permissioned_stake_table::StakersUpdatedFilter; use ethers::types::U256; -use hotshot::types::SignatureKey as _; -use hotshot_contract_adapter::stake_table::NodeInfoJf; +use hotshot::types::{BLSPubKey, SignatureKey as _}; +use hotshot_contract_adapter::stake_table::{bls_sol_to_jf, NodeInfoJf}; use hotshot_types::{ data::EpochNumber, stake_table::StakeTableEntry, @@ -55,15 +55,15 @@ impl StakeTables { event .removed .into_iter() - .map(|node_info| StakeTableDelta::remove(node_info.into())) + .map(|key| StakeTableChange::Remove(bls_sol_to_jf(key))) .chain( event .added .into_iter() - .map(|node_info| StakeTableDelta::add(node_info.into())), + .map(|node_info| StakeTableChange::Add(node_info.into())), ) }) - .group_by(|delta| delta.node_info.stake_table_key); + .group_by(|change| change.key()); // If the last event for a stakers is `Added` the staker is currently // staking, if the last event is removed or (or the staker is not present) @@ -71,9 +71,9 @@ impl StakeTables { let currently_staking = changes_per_node .into_iter() .map(|(_pub_key, deltas)| deltas.last().expect("deltas non-empty").clone()) - .filter_map(|delta| match delta.change { - StakeTableChange::Add => Some(delta.node_info), - StakeTableChange::Remove => None, + .filter_map(|change| match change { + StakeTableChange::Add(node_info) => Some(node_info), + StakeTableChange::Remove(_) => None, }); let mut consensus_stake_table: Vec> = vec![]; @@ -103,30 +103,19 @@ pub struct EpochCommittees { #[derive(Debug, Clone, PartialEq)] enum StakeTableChange { - Add, - Remove, + Add(NodeInfoJf), + Remove(BLSPubKey), } -#[derive(Debug, Clone)] -struct StakeTableDelta { - change: StakeTableChange, - node_info: NodeInfoJf, -} - -impl StakeTableDelta { - fn add(node_info: NodeInfoJf) -> Self { - Self { - change: StakeTableChange::Add, - node_info, - } - } - fn remove(node_info: NodeInfoJf) -> Self { - Self { - change: StakeTableChange::Remove, - node_info, +impl StakeTableChange { + pub(crate) fn key(&self) -> BLSPubKey { + match self { + StakeTableChange::Add(node_info) => node_info.stake_table_key, + StakeTableChange::Remove(key) => *key, } } } + /// Holds Stake table and da stake #[derive(Clone, Debug)] struct Committee { diff --git a/utils/src/stake_table.rs b/utils/src/stake_table.rs index 1abf1e38c2..f9e1edd3ce 100644 --- a/utils/src/stake_table.rs +++ b/utils/src/stake_table.rs @@ -2,7 +2,7 @@ /// /// The initial stake table is passed to the permissioned stake table contract /// on deployment. -use contract_bindings::permissioned_stake_table::{NodeInfo, PermissionedStakeTable}; +use contract_bindings::permissioned_stake_table::{G2Point, NodeInfo, PermissionedStakeTable}; use ethers::{ middleware::SignerMiddleware, providers::{Http, Middleware as _, Provider}, @@ -10,7 +10,7 @@ use ethers::{ types::Address, }; use hotshot::types::BLSPubKey; -use hotshot_contract_adapter::stake_table::NodeInfoJf; +use hotshot_contract_adapter::stake_table::{bls_jf_to_sol, NodeInfoJf}; use hotshot_types::network::PeerConfigKeys; use url::Url; @@ -60,7 +60,7 @@ impl From for Vec { #[serde(bound(deserialize = ""))] pub struct PermissionedStakeTableUpdate { #[serde(default)] - stakers_to_remove: Vec>, + stakers_to_remove: Vec, #[serde(default)] new_stakers: Vec>, } @@ -80,13 +80,10 @@ impl PermissionedStakeTableUpdate { ) } - fn stakers_to_remove(&self) -> Vec { + fn stakers_to_remove(&self) -> Vec { self.stakers_to_remove .iter() - .map(|peer_config| { - let node_info: NodeInfoJf = peer_config.clone().into(); - node_info.into() - }) + .map(|v| bls_jf_to_sol(*v)) .collect() }