diff --git a/bindings/bindings/validatorpool.go b/bindings/bindings/validatorpool.go index db00c76701..34fd763b65 100644 --- a/bindings/bindings/validatorpool.go +++ b/bindings/bindings/validatorpool.go @@ -31,8 +31,8 @@ var ( // ValidatorPoolMetaData contains all meta data concerning the ValidatorPool contract. var ValidatorPoolMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2OutputOracle\",\"type\":\"address\"},{\"internalType\":\"contractKromaPortal\",\"name\":\"_portal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedValidator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minBondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nonPenaltyPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_penaltyPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"BondIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"name\":\"Bonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"Unbonded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_BOND_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NON_PENALTY_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PENALTY_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contractKromaPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROUND_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_VALIDATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_REWARD_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_expiresAt\",\"type\":\"uint128\"}],\"name\":\"createBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"getBond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"internalType\":\"structTypes.Bond\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"increaseBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextValidator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101c06040523480156200001257600080fd5b5060405162002586380380620025868339810160408190526200003591620001e3565b60006080819052600160a05260c0526001600160a01b0380871660e052858116610100528416610120526101408390526101608290526101808190526200007d818362000253565b6101a0526200008b62000097565b5050505050506200027a565b600054610100900460ff1615808015620000b85750600054600160ff909116105b80620000e85750620000d530620001be60201b620011e51760201c565b158015620000e8575060005460ff166001145b620001505760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff19166001179055801562000174576000805461ff0019166101001790555b8015620001bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b6001600160a01b0381168114620001bb57600080fd5b60008060008060008060c08789031215620001fd57600080fd5b86516200020a81620001cd565b60208801519096506200021d81620001cd565b60408801519095506200023081620001cd565b80945050606087015192506080870151915060a087015190509295509295509295565b600082198211156200027557634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e05161010051610120516101405161016051610180516101a05161221262000374600039600081816102fc0152818161077f01528181611aef0152611b1a01526000818161029101528181611b980152611c0901526000818161040c01528181611b440152611b710152600081816103a801528181610b98015281816112c4015261181301526000818161025d01526107e70152600081816101f20152611cb00152600081816101750152818161062f015281816106d701528181610ae901528181610d56015281816116a501526119f601526000610862015260006108390152600061081001526122126000f3fe60806040526004361061015e5760003560e01c806370a08231116100c0578063b462e92f11610074578063d8fe764211610059578063d8fe764214610436578063da3893f014610486578063facd743b146104a657600080fd5b8063b462e92f146103fa578063d0e30db01461042e57600080fd5b806396946f75116100a557806396946f75146103765780639fbc4a5f14610396578063ab91f190146103ca57600080fd5b806370a082311461031e5780638129fc1c1461036157600080fd5b80633ee4d4a31161011757806354fd4d50116100fc57806354fd4d50146102b35780635df6a6bc146102d55780636641ea08146102ea57600080fd5b80633ee4d4a31461024b57806344e7c7791461027f57600080fd5b80630ff754ea116101485780630ff754ea146101e05780632e1a7d4d146102145780633a5490461461023657600080fd5b80621c2ff6146101635780630f43a677146101c1575b600080fd5b34801561016f57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101cd57600080fd5b506036545b6040519081526020016101b8565b3480156101ec57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561022057600080fd5b5061023461022f366004611d4f565b6104d6565b005b34801561024257600080fd5b5061019761060a565b34801561025757600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102bf57600080fd5b506102c8610809565b6040516101b89190611de2565b3480156102e157600080fd5b506102346108ac565b3480156102f657600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561032a57600080fd5b506101d2610339366004611e17565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b34801561036d57600080fd5b50610234610948565b34801561038257600080fd5b50610234610391366004611e52565b610ad1565b3480156103a257600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d657600080fd5b506103e1620186a081565b60405167ffffffffffffffff90911681526020016101b8565b34801561040657600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b610234610e7f565b34801561044257600080fd5b50610456610451366004611d4f565b610e8b565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101b8565b34801561049257600080fd5b506102346104a1366004611e94565b610fc4565b3480156104b257600080fd5b506104c66104c1366004611e17565b611147565b60405190151581526020016101b8565b600260015403610547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556105563382611201565b6000610573335a84604051806020016040528060008152506114a9565b905080610602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161053e565b505060018055565b60385460009073ffffffffffffffffffffffffffffffffffffffff16156107e45760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190611ec0565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610707846001611f08565b6040518263ffffffff1660e01b815260040161072591815260200190565b602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611ec0565b90508042106107c457600061077b8242611f20565b90507f00000000000000000000000000000000000000000000000000000000000000008111156107c25773ffffffffffffffffffffffffffffffffffffffff935050505090565b505b505060385473ffffffffffffffffffffffffffffffffffffffff16919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b60606108347f00000000000000000000000000000000000000000000000000000000000000006114c3565b61085d7f00000000000000000000000000000000000000000000000000000000000000006114c3565b6108867f00000000000000000000000000000000000000000000000000000000000000006114c3565b60405160200161089893929190611f37565b604051602081830303815290604052905090565b60006108b6611600565b905080610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161053e565b50565b600054610100900460ff16158080156109685750600054600160ff909116105b806109825750303b158015610982575060005460ff166001145b610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161053e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a6c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b801561094557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161053e565b7f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff161015610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420616d6f756e74206960448201527f7320746f6f20736d616c6c000000000000000000000000000000000000000000606482015260840161053e565b6000838152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615610d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161053e565b610d23611600565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b0ea09a890602401602060405180830381865afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd69190611fad565b9050610df481856fffffffffffffffffffffffffffffffff16611201565b6fffffffffffffffffffffffffffffffff84811670010000000000000000000000000000000091851691820281178455604080519182526020820192909252869173ffffffffffffffffffffffffffffffffffffffff8416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a35050505050565b610e8933346117de565b565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff1615801590610ef55750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b610f81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161053e565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b6000818152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161053e565b80546fffffffffffffffffffffffffffffffff166110a48482611201565b81547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600182901b6ffffffffffffffffffffffffffffffffe161782556040516fffffffffffffffffffffffffffffffff82168152839073ffffffffffffffffffffffffffffffffffffffff8616907f0d0a53301770c0275802b487151539531ef1f7f94d361e97a561ebe8233ab80c9060200160405180910390a350505050565b603654600090810361115b57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821661117e57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526037602052604090205460368054919291839081106111bb576111bb611fca565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16149392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156112b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161053e565b6112c08282611f20565b90507f0000000000000000000000000000000000000000000000000000000000000000811080156112f557506112f583611147565b1561147c5760365460009061130c90600190611f20565b905080156113eb5773ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812054603680549192918490811061135157611351611fca565b6000918252602090912001546036805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061138d5761138d611fca565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152603790915260409020555b73ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812055603680548061142257611422611ff9565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b73ffffffffffffffffffffffffffffffffffffffff90921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60608160000361150657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611530578061151a81612028565b91506115299050600a8361208f565b915061150a565b60008167ffffffffffffffff81111561154b5761154b6120a3565b6040519080825280601f01601f191660200182016040528015611575576020820181803683370190505b5090505b84156115f85761158a600183611f20565b9150611597600a866120d2565b6115a2906030611f08565b60f81b8183815181106115b7576115b7611fca565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506115f1600a8661208f565b9450611579565b949350505050565b603554600081815260346020526040812080549192916fffffffffffffffffffffffffffffffff80821691700100000000000000000000000000000000900416421080159061166157506000816fffffffffffffffffffffffffffffffff16115b156117d457600083815260346020526040808220829055517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015611701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172591906120e6565b90506117478160000151836fffffffffffffffffffffffffffffffff166117de565b80516040516fffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff9091169085907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a360358054600101905560208101516117c0906118e1565b6117c9816119f1565b600194505050505090565b6000935050505090565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081205461180f908390611f08565b90507f00000000000000000000000000000000000000000000000000000000000000008110158015611847575061184583611147565b155b1561147c576036805473ffffffffffffffffffffffffffffffffffffffff949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60365480156119c55760008183434160405160200161193893929190928352602083019190915260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604082015260540190565b6040516020818303038152906040528051906020012060001c61195b91906120d2565b90506036818154811061197057611970611fca565b600091825260209091200154603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1de856c84606001516001611a419190612189565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aca9190611ec0565b83604001516fffffffffffffffffffffffffffffffff16611aeb9190611f20565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611b4257611b3f7f000000000000000000000000000000000000000000000000000000000000000082611f20565b90505b7f00000000000000000000000000000000000000000000000000000000000000008110611bbf57611bbc611b967f000000000000000000000000000000000000000000000000000000000000000083611f20565b7f0000000000000000000000000000000000000000000000000000000000000000611d37565b91505b825160608401516040805173ffffffffffffffffffffffffffffffffffffffff93841660248201526fffffffffffffffffffffffffffffffff9092166044830152606482018590527f00000000000000000000000000000000000000000000000000000000000000006084808401919091528151808403909101815260a490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5a3487c00000000000000000000000000000000000000000000000000000000179052517fc30af3880000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092169163c30af38891611d009173420000000000000000000000000000000000000891620186a0916004016121bd565b600060405180830381600087803b158015611d1a57600080fd5b505af1158015611d2e573d6000803e3d6000fd5b50505050505050565b6000818310611d465781611d48565b825b9392505050565b600060208284031215611d6157600080fd5b5035919050565b60005b83811015611d83578181015183820152602001611d6b565b83811115611d92576000848401525b50505050565b60008151808452611db0816020860160208601611d68565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611d486020830184611d98565b73ffffffffffffffffffffffffffffffffffffffff8116811461094557600080fd5b600060208284031215611e2957600080fd5b8135611d4881611df5565b6fffffffffffffffffffffffffffffffff8116811461094557600080fd5b600080600060608486031215611e6757600080fd5b833592506020840135611e7981611e34565b91506040840135611e8981611e34565b809150509250925092565b60008060408385031215611ea757600080fd5b8235611eb281611df5565b946020939093013593505050565b600060208284031215611ed257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611f1b57611f1b611ed9565b500190565b600082821015611f3257611f32611ed9565b500390565b60008451611f49818460208901611d68565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611f85816001850160208a01611d68565b60019201918201528351611fa0816002840160208801611d68565b0160020195945050505050565b600060208284031215611fbf57600080fd5b8151611d4881611df5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205957612059611ed9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261209e5761209e612060565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000826120e1576120e1612060565b500690565b6000608082840312156120f857600080fd5b6040516080810181811067ffffffffffffffff82111715612142577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161215081611df5565b815260208381015190820152604083015161216a81611e34565b6040820152606083015161217d81611e34565b60608201529392505050565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156121b4576121b4611ed9565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006121fc6060830184611d98565b9594505050505056fea164736f6c634300080f000a", + ABI: "[{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2OutputOracle\",\"type\":\"address\"},{\"internalType\":\"contractKromaPortal\",\"name\":\"_portal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedValidator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minBondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxUnbond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nonPenaltyPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_penaltyPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"BondIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"name\":\"Bonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"outputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"Unbonded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_UNBOND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_BOND_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NON_PENALTY_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PENALTY_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contractKromaPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROUND_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_VALIDATOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_REWARD_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_expiresAt\",\"type\":\"uint128\"}],\"name\":\"createBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"getBond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"expiresAt\",\"type\":\"uint128\"}],\"internalType\":\"structTypes.Bond\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_outputIndex\",\"type\":\"uint256\"}],\"name\":\"increaseBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextValidator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unbond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6101e06040523480156200001257600080fd5b5060405162002650380380620026508339810160408190526200003591620001ea565b60006080819052600160a05260c0526001600160a01b0380881660e052868116610100528516610120526101408490526101608390526101808290526101a081905262000083818362000265565b6101c052620000916200009e565b505050505050506200028c565b600054610100900460ff1615808015620000bf5750600054600160ff909116105b80620000ef5750620000dc30620001c560201b620012241760201c565b158015620000ef575060005460ff166001145b620001575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156200017b576000805461ff0019166101001790555b8015620001c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b6001600160a01b0381168114620001c257600080fd5b600080600080600080600060e0888a0312156200020657600080fd5b87516200021381620001d4565b60208901519097506200022681620001d4565b60408901519096506200023981620001d4565b80955050606088015193506080880151925060a0880151915060c0880151905092959891949750929550565b600082198211156200028757634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516122b86200039860003960008181610307015281816107be01528181611a850152611ab001526000818161029c01528181611b2e0152611b9f01526000818161044b01528181611ada0152611b0701526000818161039301526116710152600081816103e701528181610bd70152818161130301526118b901526000818161026801526108260152600081816101fd0152611c460152600081816101800152818161066e0152818161071601528181610b2801528181610d950152818161173b015261198c015260006108a1015260006108780152600061084f01526122b86000f3fe6080604052600436106101695760003560e01c806370a08231116100cb578063ab91f1901161007f578063d8fe764211610059578063d8fe764214610475578063da3893f0146104c5578063facd743b146104e557600080fd5b8063ab91f19014610409578063b462e92f14610439578063d0e30db01461046d57600080fd5b8063946765fd116100b0578063946765fd1461038157806396946f75146103b55780639fbc4a5f146103d557600080fd5b806370a08231146103295780638129fc1c1461036c57600080fd5b80633ee4d4a31161012257806354fd4d501161010757806354fd4d50146102be5780635df6a6bc146102e05780636641ea08146102f557600080fd5b80633ee4d4a31461025657806344e7c7791461028a57600080fd5b80630ff754ea116101535780630ff754ea146101eb5780632e1a7d4d1461021f5780633a5490461461024157600080fd5b80621c2ff61461016e5780630f43a677146101cc575b600080fd5b34801561017a57600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101d857600080fd5b506036545b6040519081526020016101c3565b3480156101f757600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561022b57600080fd5b5061023f61023a366004611df5565b610515565b005b34801561024d57600080fd5b506101a2610649565b34801561026257600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561029657600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ca57600080fd5b506102d3610848565b6040516101c39190611e88565b3480156102ec57600080fd5b5061023f6108eb565b34801561030157600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101dd610344366004611ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b34801561037857600080fd5b5061023f610987565b34801561038d57600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c157600080fd5b5061023f6103d0366004611ef8565b610b10565b3480156103e157600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041557600080fd5b50610420620186a081565b60405167ffffffffffffffff90911681526020016101c3565b34801561044557600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61023f610ebe565b34801561048157600080fd5b50610495610490366004611df5565b610eca565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101c3565b3480156104d157600080fd5b5061023f6104e0366004611f3a565b611003565b3480156104f157600080fd5b50610505610500366004611ebd565b611186565b60405190151581526020016101c3565b600260015403610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556105953382611240565b60006105b2335a84604051806020016040528060008152506114e8565b905080610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161057d565b505060018055565b60385460009073ffffffffffffffffffffffffffffffffffffffff16156108235760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190611f66565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610746846001611fae565b6040518263ffffffff1660e01b815260040161076491815260200190565b602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a59190611f66565b90508042106108035760006107ba8242611fc6565b90507f00000000000000000000000000000000000000000000000000000000000000008111156108015773ffffffffffffffffffffffffffffffffffffffff935050505090565b505b505060385473ffffffffffffffffffffffffffffffffffffffff16919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b60606108737f0000000000000000000000000000000000000000000000000000000000000000611502565b61089c7f0000000000000000000000000000000000000000000000000000000000000000611502565b6108c57f0000000000000000000000000000000000000000000000000000000000000000611502565b6040516020016108d793929190611fdd565b604051602081830303815290604052905090565b60006108f561163f565b905080610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161057d565b50565b600054610100900460ff16158080156109a75750600054600160ff909116105b806109c15750303b1580156109c1575060005460ff166001145b610a4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161057d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610aab57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b801561098457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161057d565b7f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff161015610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420616d6f756e74206960448201527f7320746f6f20736d616c6c000000000000000000000000000000000000000000606482015260840161057d565b6000838152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161057d565b610d6261163f565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b0ea09a890602401602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e159190612053565b9050610e3381856fffffffffffffffffffffffffffffffff16611240565b6fffffffffffffffffffffffffffffffff84811670010000000000000000000000000000000091851691820281178455604080519182526020820192909252869173ffffffffffffffffffffffffffffffffffffffff8416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a35050505050565b610ec83334611884565b565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff1615801590610f345750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b610fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161057d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b6000818152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166110c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161057d565b80546fffffffffffffffffffffffffffffffff166110e38482611240565b81547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600182901b6ffffffffffffffffffffffffffffffffe161782556040516fffffffffffffffffffffffffffffffff82168152839073ffffffffffffffffffffffffffffffffffffffff8616907f0d0a53301770c0275802b487151539531ef1f7f94d361e97a561ebe8233ab80c9060200160405180910390a350505050565b603654600090810361119a57506000919050565b73ffffffffffffffffffffffffffffffffffffffff82166111bd57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526037602052604090205460368054919291839081106111fa576111fa612070565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16149392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156112f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161057d565b6112ff8282611fc6565b90507f000000000000000000000000000000000000000000000000000000000000000081108015611334575061133483611186565b156114bb5760365460009061134b90600190611fc6565b9050801561142a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812054603680549192918490811061139057611390612070565b6000918252602090912001546036805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106113cc576113cc612070565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152603790915260409020555b73ffffffffffffffffffffffffffffffffffffffff841660009081526037602052604081205560368054806114615761146161209f565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b73ffffffffffffffffffffffffffffffffffffffff90921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60608160000361154557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561156f5780611559816120ce565b91506115689050600a83612135565b9150611549565b60008167ffffffffffffffff81111561158a5761158a612149565b6040519080825280601f01601f1916602001820160405280156115b4576020820181803683370190505b5090505b8415611637576115c9600183611fc6565b91506115d6600a86612178565b6115e1906030611fae565b60f81b8183815181106115f6576115f6612070565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611630600a86612135565b94506115b8565b949350505050565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561185457600085815260346020526040902080546fffffffffffffffffffffffffffffffff808216965091945070010000000000000000000000000000000090041642108015906116f657506000846fffffffffffffffffffffffffffffffff16115b156118545760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb919061218c565b91506117dd8260000151856fffffffffffffffffffffffffffffffff16611884565b81516040516fffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff9091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361184882611987565b6001948501940161166f565b8015611878576118678260200151611ccd565b505050603591909155506001919050565b60009550505050505090565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120546118b5908390611fae565b90507f000000000000000000000000000000000000000000000000000000000000000081101580156118ed57506118eb83611186565b155b156114bb576036805473ffffffffffffffffffffffffffffffffffffffff949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1de856c846060015160016119d7919061222f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190611f66565b83604001516fffffffffffffffffffffffffffffffff16611a819190611fc6565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611ad857611ad57f000000000000000000000000000000000000000000000000000000000000000082611fc6565b90505b7f00000000000000000000000000000000000000000000000000000000000000008110611b5557611b52611b2c7f000000000000000000000000000000000000000000000000000000000000000083611fc6565b7f0000000000000000000000000000000000000000000000000000000000000000611ddd565b91505b825160608401516040805173ffffffffffffffffffffffffffffffffffffffff93841660248201526fffffffffffffffffffffffffffffffff9092166044830152606482018590527f00000000000000000000000000000000000000000000000000000000000000006084808401919091528151808403909101815260a490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5a3487c00000000000000000000000000000000000000000000000000000000179052517fc30af3880000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092169163c30af38891611c969173420000000000000000000000000000000000000891620186a091600401612263565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50505050505050565b6036548015611db157600081834341604051602001611d2493929190928352602083019190915260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604082015260540190565b6040516020818303038152906040528051906020012060001c611d479190612178565b905060368181548110611d5c57611d5c612070565b600091825260209091200154603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000818310611dec5781611dee565b825b9392505050565b600060208284031215611e0757600080fd5b5035919050565b60005b83811015611e29578181015183820152602001611e11565b83811115611e38576000848401525b50505050565b60008151808452611e56816020860160208601611e0e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dee6020830184611e3e565b73ffffffffffffffffffffffffffffffffffffffff8116811461098457600080fd5b600060208284031215611ecf57600080fd5b8135611dee81611e9b565b6fffffffffffffffffffffffffffffffff8116811461098457600080fd5b600080600060608486031215611f0d57600080fd5b833592506020840135611f1f81611eda565b91506040840135611f2f81611eda565b809150509250925092565b60008060408385031215611f4d57600080fd5b8235611f5881611e9b565b946020939093013593505050565b600060208284031215611f7857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611fc157611fc1611f7f565b500190565b600082821015611fd857611fd8611f7f565b500390565b60008451611fef818460208901611e0e565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161202b816001850160208a01611e0e565b60019201918201528351612046816002840160208801611e0e565b0160020195945050505050565b60006020828403121561206557600080fd5b8151611dee81611e9b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120ff576120ff611f7f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261214457612144612106565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261218757612187612106565b500690565b60006080828403121561219e57600080fd5b6040516080810181811067ffffffffffffffff821117156121e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516121f681611e9b565b815260208381015190820152604083015161221081611eda565b6040820152606083015161222381611eda565b60608201529392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561225a5761225a611f7f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006122a26060830184611e3e565b9594505050505056fea164736f6c634300080f000a", } // ValidatorPoolABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ValidatorPoolABI = ValidatorPoolMetaData.ABI var ValidatorPoolBin = ValidatorPoolMetaData.Bin // DeployValidatorPool deploys a new Ethereum contract, binding an instance of ValidatorPool to it. -func DeployValidatorPool(auth *bind.TransactOpts, backend bind.ContractBackend, _l2OutputOracle common.Address, _portal common.Address, _trustedValidator common.Address, _minBondAmount *big.Int, _nonPenaltyPeriod *big.Int, _penaltyPeriod *big.Int) (common.Address, *types.Transaction, *ValidatorPool, error) { +func DeployValidatorPool(auth *bind.TransactOpts, backend bind.ContractBackend, _l2OutputOracle common.Address, _portal common.Address, _trustedValidator common.Address, _minBondAmount *big.Int, _maxUnbond *big.Int, _nonPenaltyPeriod *big.Int, _penaltyPeriod *big.Int) (common.Address, *types.Transaction, *ValidatorPool, error) { parsed, err := ValidatorPoolMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployValidatorPool(auth *bind.TransactOpts, backend bind.ContractBackend, return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorPoolBin), backend, _l2OutputOracle, _portal, _trustedValidator, _minBondAmount, _nonPenaltyPeriod, _penaltyPeriod) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ValidatorPoolBin), backend, _l2OutputOracle, _portal, _trustedValidator, _minBondAmount, _maxUnbond, _nonPenaltyPeriod, _penaltyPeriod) if err != nil { return common.Address{}, nil, nil, err } @@ -233,6 +233,37 @@ func (_ValidatorPool *ValidatorPoolCallerSession) L2ORACLE() (common.Address, er return _ValidatorPool.Contract.L2ORACLE(&_ValidatorPool.CallOpts) } +// MAXUNBOND is a free data retrieval call binding the contract method 0x946765fd. +// +// Solidity: function MAX_UNBOND() view returns(uint256) +func (_ValidatorPool *ValidatorPoolCaller) MAXUNBOND(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ValidatorPool.contract.Call(opts, &out, "MAX_UNBOND") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXUNBOND is a free data retrieval call binding the contract method 0x946765fd. +// +// Solidity: function MAX_UNBOND() view returns(uint256) +func (_ValidatorPool *ValidatorPoolSession) MAXUNBOND() (*big.Int, error) { + return _ValidatorPool.Contract.MAXUNBOND(&_ValidatorPool.CallOpts) +} + +// MAXUNBOND is a free data retrieval call binding the contract method 0x946765fd. +// +// Solidity: function MAX_UNBOND() view returns(uint256) +func (_ValidatorPool *ValidatorPoolCallerSession) MAXUNBOND() (*big.Int, error) { + return _ValidatorPool.Contract.MAXUNBOND(&_ValidatorPool.CallOpts) +} + // MINBONDAMOUNT is a free data retrieval call binding the contract method 0x9fbc4a5f. // // Solidity: function MIN_BOND_AMOUNT() view returns(uint256) diff --git a/bindings/bindings/validatorpool_more.go b/bindings/bindings/validatorpool_more.go index 41a703964f..1a0426bc2f 100644 --- a/bindings/bindings/validatorpool_more.go +++ b/bindings/bindings/validatorpool_more.go @@ -13,7 +13,7 @@ const ValidatorPoolStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract var ValidatorPoolStorageLayout = new(solc.StorageLayout) -var ValidatorPoolDeployedBin = "0x60806040526004361061015e5760003560e01c806370a08231116100c0578063b462e92f11610074578063d8fe764211610059578063d8fe764214610436578063da3893f014610486578063facd743b146104a657600080fd5b8063b462e92f146103fa578063d0e30db01461042e57600080fd5b806396946f75116100a557806396946f75146103765780639fbc4a5f14610396578063ab91f190146103ca57600080fd5b806370a082311461031e5780638129fc1c1461036157600080fd5b80633ee4d4a31161011757806354fd4d50116100fc57806354fd4d50146102b35780635df6a6bc146102d55780636641ea08146102ea57600080fd5b80633ee4d4a31461024b57806344e7c7791461027f57600080fd5b80630ff754ea116101485780630ff754ea146101e05780632e1a7d4d146102145780633a5490461461023657600080fd5b80621c2ff6146101635780630f43a677146101c1575b600080fd5b34801561016f57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101cd57600080fd5b506036545b6040519081526020016101b8565b3480156101ec57600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561022057600080fd5b5061023461022f366004611d4f565b6104d6565b005b34801561024257600080fd5b5061019761060a565b34801561025757600080fd5b506101977f000000000000000000000000000000000000000000000000000000000000000081565b34801561028b57600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102bf57600080fd5b506102c8610809565b6040516101b89190611de2565b3480156102e157600080fd5b506102346108ac565b3480156102f657600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561032a57600080fd5b506101d2610339366004611e17565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b34801561036d57600080fd5b50610234610948565b34801561038257600080fd5b50610234610391366004611e52565b610ad1565b3480156103a257600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d657600080fd5b506103e1620186a081565b60405167ffffffffffffffff90911681526020016101b8565b34801561040657600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b610234610e7f565b34801561044257600080fd5b50610456610451366004611d4f565b610e8b565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101b8565b34801561049257600080fd5b506102346104a1366004611e94565b610fc4565b3480156104b257600080fd5b506104c66104c1366004611e17565b611147565b60405190151581526020016101b8565b600260015403610547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556105563382611201565b6000610573335a84604051806020016040528060008152506114a9565b905080610602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161053e565b505060018055565b60385460009073ffffffffffffffffffffffffffffffffffffffff16156107e45760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190611ec0565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610707846001611f08565b6040518263ffffffff1660e01b815260040161072591815260200190565b602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611ec0565b90508042106107c457600061077b8242611f20565b90507f00000000000000000000000000000000000000000000000000000000000000008111156107c25773ffffffffffffffffffffffffffffffffffffffff935050505090565b505b505060385473ffffffffffffffffffffffffffffffffffffffff16919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b60606108347f00000000000000000000000000000000000000000000000000000000000000006114c3565b61085d7f00000000000000000000000000000000000000000000000000000000000000006114c3565b6108867f00000000000000000000000000000000000000000000000000000000000000006114c3565b60405160200161089893929190611f37565b604051602081830303815290604052905090565b60006108b6611600565b905080610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161053e565b50565b600054610100900460ff16158080156109685750600054600160ff909116105b806109825750303b158015610982575060005460ff166001145b610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161053e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a6c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b801561094557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161053e565b7f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff161015610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420616d6f756e74206960448201527f7320746f6f20736d616c6c000000000000000000000000000000000000000000606482015260840161053e565b6000838152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615610d1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161053e565b610d23611600565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b0ea09a890602401602060405180830381865afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd69190611fad565b9050610df481856fffffffffffffffffffffffffffffffff16611201565b6fffffffffffffffffffffffffffffffff84811670010000000000000000000000000000000091851691820281178455604080519182526020820192909252869173ffffffffffffffffffffffffffffffffffffffff8416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a35050505050565b610e8933346117de565b565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff1615801590610ef55750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b610f81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161053e565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b6000818152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161053e565b80546fffffffffffffffffffffffffffffffff166110a48482611201565b81547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600182901b6ffffffffffffffffffffffffffffffffe161782556040516fffffffffffffffffffffffffffffffff82168152839073ffffffffffffffffffffffffffffffffffffffff8616907f0d0a53301770c0275802b487151539531ef1f7f94d361e97a561ebe8233ab80c9060200160405180910390a350505050565b603654600090810361115b57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821661117e57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526037602052604090205460368054919291839081106111bb576111bb611fca565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16149392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156112b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161053e565b6112c08282611f20565b90507f0000000000000000000000000000000000000000000000000000000000000000811080156112f557506112f583611147565b1561147c5760365460009061130c90600190611f20565b905080156113eb5773ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812054603680549192918490811061135157611351611fca565b6000918252602090912001546036805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061138d5761138d611fca565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152603790915260409020555b73ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812055603680548061142257611422611ff9565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b73ffffffffffffffffffffffffffffffffffffffff90921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60608160000361150657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611530578061151a81612028565b91506115299050600a8361208f565b915061150a565b60008167ffffffffffffffff81111561154b5761154b6120a3565b6040519080825280601f01601f191660200182016040528015611575576020820181803683370190505b5090505b84156115f85761158a600183611f20565b9150611597600a866120d2565b6115a2906030611f08565b60f81b8183815181106115b7576115b7611fca565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506115f1600a8661208f565b9450611579565b949350505050565b603554600081815260346020526040812080549192916fffffffffffffffffffffffffffffffff80821691700100000000000000000000000000000000900416421080159061166157506000816fffffffffffffffffffffffffffffffff16115b156117d457600083815260346020526040808220829055517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015611701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172591906120e6565b90506117478160000151836fffffffffffffffffffffffffffffffff166117de565b80516040516fffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff9091169085907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a360358054600101905560208101516117c0906118e1565b6117c9816119f1565b600194505050505090565b6000935050505090565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081205461180f908390611f08565b90507f00000000000000000000000000000000000000000000000000000000000000008110158015611847575061184583611147565b155b1561147c576036805473ffffffffffffffffffffffffffffffffffffffff949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60365480156119c55760008183434160405160200161193893929190928352602083019190915260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604082015260540190565b6040516020818303038152906040528051906020012060001c61195b91906120d2565b90506036818154811061197057611970611fca565b600091825260209091200154603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1de856c84606001516001611a419190612189565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aca9190611ec0565b83604001516fffffffffffffffffffffffffffffffff16611aeb9190611f20565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611b4257611b3f7f000000000000000000000000000000000000000000000000000000000000000082611f20565b90505b7f00000000000000000000000000000000000000000000000000000000000000008110611bbf57611bbc611b967f000000000000000000000000000000000000000000000000000000000000000083611f20565b7f0000000000000000000000000000000000000000000000000000000000000000611d37565b91505b825160608401516040805173ffffffffffffffffffffffffffffffffffffffff93841660248201526fffffffffffffffffffffffffffffffff9092166044830152606482018590527f00000000000000000000000000000000000000000000000000000000000000006084808401919091528151808403909101815260a490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5a3487c00000000000000000000000000000000000000000000000000000000179052517fc30af3880000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092169163c30af38891611d009173420000000000000000000000000000000000000891620186a0916004016121bd565b600060405180830381600087803b158015611d1a57600080fd5b505af1158015611d2e573d6000803e3d6000fd5b50505050505050565b6000818310611d465781611d48565b825b9392505050565b600060208284031215611d6157600080fd5b5035919050565b60005b83811015611d83578181015183820152602001611d6b565b83811115611d92576000848401525b50505050565b60008151808452611db0816020860160208601611d68565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611d486020830184611d98565b73ffffffffffffffffffffffffffffffffffffffff8116811461094557600080fd5b600060208284031215611e2957600080fd5b8135611d4881611df5565b6fffffffffffffffffffffffffffffffff8116811461094557600080fd5b600080600060608486031215611e6757600080fd5b833592506020840135611e7981611e34565b91506040840135611e8981611e34565b809150509250925092565b60008060408385031215611ea757600080fd5b8235611eb281611df5565b946020939093013593505050565b600060208284031215611ed257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611f1b57611f1b611ed9565b500190565b600082821015611f3257611f32611ed9565b500390565b60008451611f49818460208901611d68565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611f85816001850160208a01611d68565b60019201918201528351611fa0816002840160208801611d68565b0160020195945050505050565b600060208284031215611fbf57600080fd5b8151611d4881611df5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205957612059611ed9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261209e5761209e612060565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000826120e1576120e1612060565b500690565b6000608082840312156120f857600080fd5b6040516080810181811067ffffffffffffffff82111715612142577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161215081611df5565b815260208381015190820152604083015161216a81611e34565b6040820152606083015161217d81611e34565b60608201529392505050565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156121b4576121b4611ed9565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006121fc6060830184611d98565b9594505050505056fea164736f6c634300080f000a" +var ValidatorPoolDeployedBin = "0x6080604052600436106101695760003560e01c806370a08231116100cb578063ab91f1901161007f578063d8fe764211610059578063d8fe764214610475578063da3893f0146104c5578063facd743b146104e557600080fd5b8063ab91f19014610409578063b462e92f14610439578063d0e30db01461046d57600080fd5b8063946765fd116100b0578063946765fd1461038157806396946f75146103b55780639fbc4a5f146103d557600080fd5b806370a08231146103295780638129fc1c1461036c57600080fd5b80633ee4d4a31161012257806354fd4d501161010757806354fd4d50146102be5780635df6a6bc146102e05780636641ea08146102f557600080fd5b80633ee4d4a31461025657806344e7c7791461028a57600080fd5b80630ff754ea116101535780630ff754ea146101eb5780632e1a7d4d1461021f5780633a5490461461024157600080fd5b80621c2ff61461016e5780630f43a677146101cc575b600080fd5b34801561017a57600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101d857600080fd5b506036545b6040519081526020016101c3565b3480156101f757600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561022b57600080fd5b5061023f61023a366004611df5565b610515565b005b34801561024d57600080fd5b506101a2610649565b34801561026257600080fd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561029657600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ca57600080fd5b506102d3610848565b6040516101c39190611e88565b3480156102ec57600080fd5b5061023f6108eb565b34801561030157600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033557600080fd5b506101dd610344366004611ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b34801561037857600080fd5b5061023f610987565b34801561038d57600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c157600080fd5b5061023f6103d0366004611ef8565b610b10565b3480156103e157600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041557600080fd5b50610420620186a081565b60405167ffffffffffffffff90911681526020016101c3565b34801561044557600080fd5b506101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61023f610ebe565b34801561048157600080fd5b50610495610490366004611df5565b610eca565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101c3565b3480156104d157600080fd5b5061023f6104e0366004611f3a565b611003565b3480156104f157600080fd5b50610505610500366004611ebd565b611186565b60405190151581526020016101c3565b600260015403610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556105953382611240565b60006105b2335a84604051806020016040528060008152506114e8565b905080610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161057d565b505060018055565b60385460009073ffffffffffffffffffffffffffffffffffffffff16156108235760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190611f66565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663d1de856c610746846001611fae565b6040518263ffffffff1660e01b815260040161076491815260200190565b602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a59190611f66565b90508042106108035760006107ba8242611fc6565b90507f00000000000000000000000000000000000000000000000000000000000000008111156108015773ffffffffffffffffffffffffffffffffffffffff935050505090565b505b505060385473ffffffffffffffffffffffffffffffffffffffff16919050565b507f000000000000000000000000000000000000000000000000000000000000000090565b60606108737f0000000000000000000000000000000000000000000000000000000000000000611502565b61089c7f0000000000000000000000000000000000000000000000000000000000000000611502565b6108c57f0000000000000000000000000000000000000000000000000000000000000000611502565b6040516020016108d793929190611fdd565b604051602081830303815290604052905090565b60006108f561163f565b905080610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161057d565b50565b600054610100900460ff16158080156109a75750600054600160ff909116105b806109c15750303b1580156109c1575060005460ff166001145b610a4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161057d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610aab57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b801561098457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161057d565b7f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff161015610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420616d6f756e74206960448201527f7320746f6f20736d616c6c000000000000000000000000000000000000000000606482015260840161057d565b6000838152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161057d565b610d6261163f565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b0ea09a890602401602060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e159190612053565b9050610e3381856fffffffffffffffffffffffffffffffff16611240565b6fffffffffffffffffffffffffffffffff84811670010000000000000000000000000000000091851691820281178455604080519182526020820192909252869173ffffffffffffffffffffffffffffffffffffffff8416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a35050505050565b610ec83334611884565b565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff1615801590610f345750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b610fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161057d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b6000818152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166110c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161057d565b80546fffffffffffffffffffffffffffffffff166110e38482611240565b81547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600182901b6ffffffffffffffffffffffffffffffffe161782556040516fffffffffffffffffffffffffffffffff82168152839073ffffffffffffffffffffffffffffffffffffffff8616907f0d0a53301770c0275802b487151539531ef1f7f94d361e97a561ebe8233ab80c9060200160405180910390a350505050565b603654600090810361119a57506000919050565b73ffffffffffffffffffffffffffffffffffffffff82166111bd57506000919050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526037602052604090205460368054919291839081106111fa576111fa612070565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16149392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156112f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161057d565b6112ff8282611fc6565b90507f000000000000000000000000000000000000000000000000000000000000000081108015611334575061133483611186565b156114bb5760365460009061134b90600190611fc6565b9050801561142a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260376020526040812054603680549192918490811061139057611390612070565b6000918252602090912001546036805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106113cc576113cc612070565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152603790915260409020555b73ffffffffffffffffffffffffffffffffffffffff841660009081526037602052604081205560368054806114615761146161209f565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b73ffffffffffffffffffffffffffffffffffffffff90921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60608160000361154557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561156f5780611559816120ce565b91506115689050600a83612135565b9150611549565b60008167ffffffffffffffff81111561158a5761158a612149565b6040519080825280601f01601f1916602001820160405280156115b4576020820181803683370190505b5090505b8415611637576115c9600183611fc6565b91506115d6600a86612178565b6115e1906030611fae565b60f81b8183815181106115f6576115f6612070565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611630600a86612135565b94506115b8565b949350505050565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000081101561185457600085815260346020526040902080546fffffffffffffffffffffffffffffffff808216965091945070010000000000000000000000000000000090041642108015906116f657506000846fffffffffffffffffffffffffffffffff16115b156118545760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb919061218c565b91506117dd8260000151856fffffffffffffffffffffffffffffffff16611884565b81516040516fffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff9091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a361184882611987565b6001948501940161166f565b8015611878576118678260200151611ccd565b505050603591909155506001919050565b60009550505050505090565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120546118b5908390611fae565b90507f000000000000000000000000000000000000000000000000000000000000000081101580156118ed57506118eb83611186565b155b156114bb576036805473ffffffffffffffffffffffffffffffffffffffff949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1de856c846060015160016119d7919061222f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190611f66565b83604001516fffffffffffffffffffffffffffffffff16611a819190611fc6565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611ad857611ad57f000000000000000000000000000000000000000000000000000000000000000082611fc6565b90505b7f00000000000000000000000000000000000000000000000000000000000000008110611b5557611b52611b2c7f000000000000000000000000000000000000000000000000000000000000000083611fc6565b7f0000000000000000000000000000000000000000000000000000000000000000611ddd565b91505b825160608401516040805173ffffffffffffffffffffffffffffffffffffffff93841660248201526fffffffffffffffffffffffffffffffff9092166044830152606482018590527f00000000000000000000000000000000000000000000000000000000000000006084808401919091528151808403909101815260a490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5a3487c00000000000000000000000000000000000000000000000000000000179052517fc30af3880000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009092169163c30af38891611c969173420000000000000000000000000000000000000891620186a091600401612263565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b50505050505050565b6036548015611db157600081834341604051602001611d2493929190928352602083019190915260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604082015260540190565b6040516020818303038152906040528051906020012060001c611d479190612178565b905060368181548110611d5c57611d5c612070565b600091825260209091200154603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b603880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050565b6000818310611dec5781611dee565b825b9392505050565b600060208284031215611e0757600080fd5b5035919050565b60005b83811015611e29578181015183820152602001611e11565b83811115611e38576000848401525b50505050565b60008151808452611e56816020860160208601611e0e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dee6020830184611e3e565b73ffffffffffffffffffffffffffffffffffffffff8116811461098457600080fd5b600060208284031215611ecf57600080fd5b8135611dee81611e9b565b6fffffffffffffffffffffffffffffffff8116811461098457600080fd5b600080600060608486031215611f0d57600080fd5b833592506020840135611f1f81611eda565b91506040840135611f2f81611eda565b809150509250925092565b60008060408385031215611f4d57600080fd5b8235611f5881611e9b565b946020939093013593505050565b600060208284031215611f7857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611fc157611fc1611f7f565b500190565b600082821015611fd857611fd8611f7f565b500390565b60008451611fef818460208901611e0e565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161202b816001850160208a01611e0e565b60019201918201528351612046816002840160208801611e0e565b0160020195945050505050565b60006020828403121561206557600080fd5b8151611dee81611e9b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120ff576120ff611f7f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261214457612144612106565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008261218757612187612106565b500690565b60006080828403121561219e57600080fd5b6040516080810181811067ffffffffffffffff821117156121e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516121f681611e9b565b815260208381015190820152604083015161221081611eda565b6040820152606083015161222381611eda565b60608201529392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561225a5761225a611f7f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff831660208201526060604082015260006122a26060830184611e3e565b9594505050505056fea164736f6c634300080f000a" func init() { if err := json.Unmarshal([]byte(ValidatorPoolStorageLayoutJSON), ValidatorPoolStorageLayout); err != nil { diff --git a/e2e/e2eutils/setup.go b/e2e/e2eutils/setup.go index 4b95ec63ce..047b66d5f6 100644 --- a/e2e/e2eutils/setup.go +++ b/e2e/e2eutils/setup.go @@ -68,6 +68,7 @@ func MakeDeployParams(t require.TestingT, tp *TestParams) *DeployParams { ValidatorPoolTrustedValidator: addresses.TrustedValidator, ValidatorPoolMinBondAmount: uint64ToBig(1), + ValidatorPoolMaxUnbond: 10, ValidatorPoolNonPenaltyPeriod: 3, ValidatorPoolPenaltyPeriod: 3, diff --git a/e2e/setup.go b/e2e/setup.go index 7971c62351..88d3ada8b9 100644 --- a/e2e/setup.go +++ b/e2e/setup.go @@ -86,6 +86,7 @@ func DefaultSystemConfig(t *testing.T) SystemConfig { ValidatorPoolTrustedValidator: addresses.TrustedValidator, ValidatorPoolMinBondAmount: uint642big(1), + ValidatorPoolMaxUnbond: 10, ValidatorPoolNonPenaltyPeriod: 2, ValidatorPoolPenaltyPeriod: 2, diff --git a/packages/contracts/.gas-snapshot b/packages/contracts/.gas-snapshot index 037992e0b1..885f945e46 100644 --- a/packages/contracts/.gas-snapshot +++ b/packages/contracts/.gas-snapshot @@ -1,17 +1,5 @@ -GasBenchMark_KromaPortal:test_depositTransaction_benchmark() (gas: 75091) -GasBenchMark_KromaPortal:test_depositTransaction_benchmark_1() (gas: 75724) -GasBenchMark_KromaPortal:test_proveWithdrawalTransaction_benchmark() (gas: 263390) -GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 257174) -GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2090369) -GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 433635) -GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 3180772) -GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 336226) -GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 2617069) -GasBenchMark_L1StandardBridge_Finalize:test_finalizeBridgeETH_benchmark() (gas: 32270) -GasBenchMark_L2OutputOracle:test_submitL2Output_benchmark() (gas: 157223) -SetPrevBaseFee_Test:test_setPrevBaseFee_succeeds() (gas: 11563) ColosseumTest:test_approveChallenge_notProven_reverts() (gas: 30853) -ColosseumTest:test_approveChallenge_notSecuritryCouncil_reverts() (gas: 1413413) +ColosseumTest:test_approveChallenge_notSecuritryCouncil_reverts() (gas: 1413407) ColosseumTest:test_bisect_ifNotYourTurn_reverts() (gas: 426220) ColosseumTest:test_bisect_succeeds() (gas: 400706) ColosseumTest:test_bisect_whenAsserterTimedOut_reverts() (gas: 428588) @@ -20,7 +8,7 @@ ColosseumTest:test_bisect_withBadSegments_reverts() (gas: 447624) ColosseumTest:test_challengerNotCloseWhenAsserterTimeout_succeeds() (gas: 429955) ColosseumTest:test_challengerTimeout_succeeds() (gas: 379110) ColosseumTest:test_constructor() (gas: 22283) -ColosseumTest:test_createChallenge_afterChallengeApproved_reverts() (gas: 1416441) +ColosseumTest:test_createChallenge_afterChallengeApproved_reverts() (gas: 1416435) ColosseumTest:test_createChallenge_afterChallengerTimedOut_succeeds() (gas: 515311) ColosseumTest:test_createChallenge_genesisOutput_reverts() (gas: 21074) ColosseumTest:test_createChallenge_ongoingChallenge_reverts() (gas: 421915) @@ -28,12 +16,9 @@ ColosseumTest:test_createChallenge_sameOutput_reverts() (gas: 412617) ColosseumTest:test_createChallenge_succeeds() (gas: 405780) ColosseumTest:test_createChallenge_withBadSegments_reverts() (gas: 70354) ColosseumTest:test_createChallenge_x2BondAfterChallengerTimedOut_succeeds() (gas: 646516) -ColosseumTest:test_proveFault_succeeds() (gas: 1409285) -ColosseumTest:test_proveFault_whenAsserterTimedOut_succeeds() (gas: 1222390) +ColosseumTest:test_proveFault_succeeds() (gas: 1409279) +ColosseumTest:test_proveFault_whenAsserterTimedOut_succeeds() (gas: 1222382) CrossDomainMessenger_BaseGas_Test:test_baseGas_succeeds() (gas: 11448) -CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_succeeds() (gas: 72663) -CrossDomainOwnable_Test:test_onlyOwner_notOwner_reverts() (gas: 10597) -CrossDomainOwnable_Test:test_onlyOwner_succeeds() (gas: 34883) CrossDomainOwnable2_Test:test_onlyOwner_notMessenger_reverts() (gas: 8451) CrossDomainOwnable2_Test:test_onlyOwner_notOwner2_reverts() (gas: 61940) CrossDomainOwnable2_Test:test_onlyOwner_notOwner_reverts() (gas: 16646) @@ -50,8 +35,22 @@ CrossDomainOwnable3_Test:test_transferOwnershipNoLocal_succeeds() (gas: 48766) CrossDomainOwnable3_Test:test_transferOwnership_noLocalZeroAddress_reverts() (gas: 12063) CrossDomainOwnable3_Test:test_transferOwnership_notOwner_reverts() (gas: 13461) CrossDomainOwnable3_Test:test_transferOwnership_zeroAddress_reverts() (gas: 12129) +CrossDomainOwnableThroughPortal_Test:test_depositTransaction_crossDomainOwner_succeeds() (gas: 72663) +CrossDomainOwnable_Test:test_onlyOwner_notOwner_reverts() (gas: 10597) +CrossDomainOwnable_Test:test_onlyOwner_succeeds() (gas: 34883) FeeVault_Test:test_constructor_succeeds() (gas: 10766) FeeVault_Test:test_minWithdrawalAmount_succeeds() (gas: 10737) +GasBenchMark_KromaPortal:test_depositTransaction_benchmark() (gas: 75091) +GasBenchMark_KromaPortal:test_depositTransaction_benchmark_1() (gas: 75724) +GasBenchMark_KromaPortal:test_proveWithdrawalTransaction_benchmark() (gas: 263393) +GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 257174) +GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2090369) +GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 433632) +GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 3180769) +GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 336226) +GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 2617069) +GasBenchMark_L1StandardBridge_Finalize:test_finalizeBridgeETH_benchmark() (gas: 32270) +GasBenchMark_L2OutputOracle:test_submitL2Output_benchmark() (gas: 157422) GasPriceOracle_Test:test_baseFee_succeeds() (gas: 8325) GasPriceOracle_Test:test_decimals_succeeds() (gas: 5419) GasPriceOracle_Test:test_gasPrice_succeeds() (gas: 8294) @@ -59,27 +58,27 @@ GasPriceOracle_Test:test_l1BaseFee_succeeds() (gas: 10679) GasPriceOracle_Test:test_overhead_succeeds() (gas: 10635) GasPriceOracle_Test:test_scalar_succeeds() (gas: 10633) Hashing_hashDepositSource_Test:test_hashDepositSource_succeeds() (gas: 639) -KromaMintableERC20_Test:test_bridge_succeeds() (gas: 7734) -KromaMintableERC20_Test:test_burn_notBridge_reverts() (gas: 11175) -KromaMintableERC20_Test:test_burn_succeeds() (gas: 51024) -KromaMintableERC20_Test:test_erc165_supportsInterface_succeeds() (gas: 6677) -KromaMintableERC20_Test:test_mint_notBridge_reverts() (gas: 11110) -KromaMintableERC20_Test:test_mint_succeeds() (gas: 63597) -KromaMintableERC20_Test:test_remoteToken_succeeds() (gas: 7691) -KromaMintableERC20_Test:test_semver_succeeds() (gas: 8813) -KromaMintableTokenFactory_Test:test_bridge_succeeds() (gas: 7607) -KromaMintableTokenFactory_Test:test_createKromaMintableERC20_remoteIsZero_succeeds() (gas: 9387) -KromaMintableTokenFactory_Test:test_createKromaMintableERC20_sameTwice_succeeds() (gas: 2289963) -KromaMintableTokenFactory_Test:test_createKromaMintableERC20_succeeds() (gas: 1151012) +KromaMintableERC20_Test:test_bridge_succeeds() (gas: 7707) +KromaMintableERC20_Test:test_burn_notBridge_reverts() (gas: 11172) +KromaMintableERC20_Test:test_burn_succeeds() (gas: 51017) +KromaMintableERC20_Test:test_erc165_supportsInterface_succeeds() (gas: 6671) +KromaMintableERC20_Test:test_mint_notBridge_reverts() (gas: 11107) +KromaMintableERC20_Test:test_mint_succeeds() (gas: 63591) +KromaMintableERC20_Test:test_remoteToken_succeeds() (gas: 7664) +KromaMintableERC20_Test:test_semver_succeeds() (gas: 8786) +KromaMintableERC721Factory_Test:test_constructor_succeeds() (gas: 8424) +KromaMintableERC721Factory_Test:test_createKromaMintableERC721_succeeds() (gas: 2102370) +KromaMintableERC721Factory_Test:test_createKromaMintableERC721_zeroRemoteToken_reverts() (gas: 9451) KromaMintableERC721_Test:test_burn_notBridge_reverts() (gas: 137224) KromaMintableERC721_Test:test_burn_succeeds() (gas: 119221) KromaMintableERC721_Test:test_constructor_succeeds() (gas: 22529) KromaMintableERC721_Test:test_safeMint_notBridge_reverts() (gas: 11197) KromaMintableERC721_Test:test_safeMint_succeeds() (gas: 140836) KromaMintableERC721_Test:test_tokenURI_succeeds() (gas: 163688) -KromaMintableERC721Factory_Test:test_constructor_succeeds() (gas: 8424) -KromaMintableERC721Factory_Test:test_createKromaMintableERC721_succeeds() (gas: 2102370) -KromaMintableERC721Factory_Test:test_createKromaMintableERC721_zeroRemoteToken_reverts() (gas: 9451) +KromaMintableTokenFactory_Test:test_bridge_succeeds() (gas: 7607) +KromaMintableTokenFactory_Test:test_createKromaMintableERC20_remoteIsZero_succeeds() (gas: 9387) +KromaMintableTokenFactory_Test:test_createKromaMintableERC20_sameTwice_succeeds() (gas: 2289963) +KromaMintableTokenFactory_Test:test_createKromaMintableERC20_succeeds() (gas: 1151012) KromaPortalUpgradeable_Test:test_initialize_cannotInitImpl_reverts() (gas: 11006) KromaPortalUpgradeable_Test:test_initialize_cannotInitProxy_reverts() (gas: 15930) KromaPortalUpgradeable_Test:test_params_initValuesOnProxy_succeeds() (gas: 21822) @@ -88,9 +87,9 @@ KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputR KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifOutputTimestampIsNotFinalized_reverts() (gas: 304046) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalNotProven_reverts() (gas: 41755) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_ifWithdrawalProofNotOldEnough_reverts() (gas: 293630) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 290524) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onInsufficientGas_reverts() (gas: 290544) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onRecentWithdrawal_reverts() (gas: 274440) -KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 328467) +KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReentrancy_reverts() (gas: 328470) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_onReplay_reverts() (gas: 340290) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_paused_reverts() (gas: 53614) KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_provenWithdrawalHash_succeeds() (gas: 329378) @@ -99,8 +98,8 @@ KromaPortal_FinalizeWithdrawal_Test:test_finalizeWithdrawalTransaction_timestamp KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onInvalidOutputRootProof_reverts() (gas: 101136) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_onSelfCall_reverts() (gas: 66247) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_paused_reverts() (gas: 87066) -KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRootAndOutputIndex_succeeds() (gas: 648740) -KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRoot_succeeds() (gas: 449082) +KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRootAndOutputIndex_succeeds() (gas: 649154) +KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProveChangedOutputRoot_succeeds() (gas: 449085) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_replayProve_reverts() (gas: 288652) KromaPortal_FinalizeWithdrawal_Test:test_proveWithdrawalTransaction_validWithdrawalProof_succeeds() (gas: 274588) KromaPortal_Test:test_constructor_succeeds() (gas: 19560) @@ -114,7 +113,7 @@ KromaPortal_Test:test_depositTransaction_withEthValueAndContractContractCreation KromaPortal_Test:test_depositTransaction_withEthValueAndEOAContractCreation_succeeds() (gas: 75996) KromaPortal_Test:test_depositTransaction_withEthValueFromContract_succeeds() (gas: 83520) KromaPortal_Test:test_depositTransaction_withEthValueFromEOA_succeeds() (gas: 84126) -KromaPortal_Test:test_isOutputFinalized_succeeds() (gas: 193210) +KromaPortal_Test:test_isOutputFinalized_succeeds() (gas: 193409) KromaPortal_Test:test_pause_onlyGuardian_reverts() (gas: 22340) KromaPortal_Test:test_pause_succeeds() (gas: 42359) KromaPortal_Test:test_receive_succeeds() (gas: 127653) @@ -154,15 +153,15 @@ L1ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() ( L1ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16068) L1ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17664) L1ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 319551) -L1StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 601224) -L1StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 599017) +L1StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 601218) +L1StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 598999) L1StandardBridge_BridgeERC20_TestFail:test_bridgeERC20_notEoa_reverts() (gas: 17149) L1StandardBridge_BridgeETHTo_Test:test_bridgeETHTo_succeeds() (gas: 397580) L1StandardBridge_BridgeETH_Test:test_bridgeETH_succeeds() (gas: 384917) L1StandardBridge_BridgeETH_TestFail:test_BridgeETH_notEoa_reverts() (gas: 35576) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_Test:test_finalizeBridgeERC20Withdrawal_succeeds() (gas: 467901) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notMessenger_reverts() (gas: 24546) -L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notOtherBridge_reverts() (gas: 25044) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_Test:test_finalizeBridgeERC20Withdrawal_succeeds() (gas: 467887) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notMessenger_reverts() (gas: 24540) +L1StandardBridge_FinalizeBridgeERC20Withdrawal_TestFail:test_finalizeBridgeERC20Withdrawal_notOtherBridge_reverts() (gas: 25038) L1StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 42203) L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 27604) L1StandardBridge_FinalizeBridgeETH_TestFail:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 27707) @@ -203,33 +202,33 @@ L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 71136) L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 46103) L2OutputOracleTest:test_constructor_submissionInterval_reverts() (gas: 46138) L2OutputOracleTest:test_constructor_succeeds() (gas: 34077) -L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 494318) +L2OutputOracleTest:test_getL2OutputIndexAfter_multipleOutputsExist_succeeds() (gas: 495114) L2OutputOracleTest:test_getL2OutputIndexAfter_noOutputsExist_reverts() (gas: 17917) -L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 166130) -L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 166038) -L2OutputOracleTest:test_getL2Output_succeeds() (gas: 172160) -L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 167072) -L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 184824) -L2OutputOracleTest:test_replaceL2Output_finalized_reverts() (gas: 187030) +L2OutputOracleTest:test_getL2OutputIndexAfter_previousBlock_succeeds() (gas: 166329) +L2OutputOracleTest:test_getL2OutputIndexAfter_sameBlock_succeeds() (gas: 166237) +L2OutputOracleTest:test_getL2Output_succeeds() (gas: 172359) +L2OutputOracleTest:test_latestBlockNumber_succeeds() (gas: 167271) +L2OutputOracleTest:test_nextBlockNumber_succeeds() (gas: 185023) +L2OutputOracleTest:test_replaceL2Output_finalized_reverts() (gas: 187229) L2OutputOracleTest:test_replaceL2Output_ifNotChallenger_reverts() (gas: 19427) -L2OutputOracleTest:test_replaceL2Output_nonExistent_reverts() (gas: 185314) -L2OutputOracleTest:test_replaceL2Output_succeeds() (gas: 430050) +L2OutputOracleTest:test_replaceL2Output_nonExistent_reverts() (gas: 185513) +L2OutputOracleTest:test_replaceL2Output_succeeds() (gas: 430647) L2OutputOracleTest:test_replaceL2Output_zeroAddress_reverts() (gas: 21846) L2OutputOracleTest:test_submitL2Output_emptyOutput_reverts() (gas: 39349) L2OutputOracleTest:test_submitL2Output_futureTimetamp_reverts() (gas: 41327) L2OutputOracleTest:test_submitL2Output_notValidator_reverts() (gas: 38375) -L2OutputOracleTest:test_submitL2Output_submitAnotherOutput_succeeds() (gas: 176469) +L2OutputOracleTest:test_submitL2Output_submitAnotherOutput_succeeds() (gas: 176668) L2OutputOracleTest:test_submitL2Output_unexpectedBlockNumber_reverts() (gas: 41040) L2OutputOracleTest:test_submitL2Output_unmatchedBlockhash_reverts() (gas: 42082) L2OutputOracleTest:test_submitL2Output_wrongFork_reverts() (gas: 41621) -L2OutputOracleTest:test_submitWithBlockhashAndHeight_succeeds() (gas: 165317) +L2OutputOracleTest:test_submitWithBlockhashAndHeight_succeeds() (gas: 165516) L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 33423) L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15167) L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20105) L2OutputOracleUpgradeable_Test:test_upgrading_succeeds() (gas: 180651) -L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 380220) -L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 376287) -L2StandardBridge_Bridge_Test:test_finalizeBridgeERC20_succeeds() (gas: 83354) +L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 380193) +L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 376265) +L2StandardBridge_Bridge_Test:test_finalizeBridgeERC20_succeeds() (gas: 83339) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 23876) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 24037) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23903) @@ -254,6 +253,13 @@ NodeReader_Test:test_readUint8_bytestring00() (gas: 677) NodeReader_Test:test_readUint8_bytestring01() (gas: 651) NodeReader_Test:test_readUint8_bytestring7f() (gas: 672) NodeReader_Test:test_readUint8_too_short_bytestring() (gas: 3510) +ProxyAdmin_Test:test_changeProxyAdmin_succeeds() (gas: 30242) +ProxyAdmin_Test:test_getProxyAdmin_succeeds() (gas: 13337) +ProxyAdmin_Test:test_getProxyImplementation_succeeds() (gas: 49338) +ProxyAdmin_Test:test_onlyOwner_notOwner_reverts() (gas: 22562) +ProxyAdmin_Test:test_owner_succeeds() (gas: 9726) +ProxyAdmin_Test:test_upgradeAndCall_succeeds() (gas: 76398) +ProxyAdmin_Test:test_upgrade_succeeds() (gas: 47488) Proxy_Test:test_delegatesToImpl_succeeds() (gas: 45273) Proxy_Test:test_implementationKey_succeeds() (gas: 21065) Proxy_Test:test_implementation_isZeroAddress_reverts() (gas: 47671) @@ -265,13 +271,6 @@ Proxy_Test:test_upgradeToAndCall_functionDoesNotExist_reverts() (gas: 104826) Proxy_Test:test_upgradeToAndCall_isPayable_succeeds() (gas: 53907) Proxy_Test:test_upgradeToAndCall_succeeds() (gas: 125289) Proxy_Test:test_upgradeTo_clashingFunctionSignatures_succeeds() (gas: 101590) -ProxyAdmin_Test:test_changeProxyAdmin_succeeds() (gas: 30242) -ProxyAdmin_Test:test_getProxyAdmin_succeeds() (gas: 13337) -ProxyAdmin_Test:test_getProxyImplementation_succeeds() (gas: 49338) -ProxyAdmin_Test:test_onlyOwner_notOwner_reverts() (gas: 22562) -ProxyAdmin_Test:test_owner_succeeds() (gas: 9726) -ProxyAdmin_Test:test_upgradeAndCall_succeeds() (gas: 76398) -ProxyAdmin_Test:test_upgrade_succeeds() (gas: 47488) ResourceMetering_Test:test_meter_initialResourceParams_succeeds() (gas: 10368) ResourceMetering_Test:test_meter_updateNoGasDelta_succeeds() (gas: 2009696) ResourceMetering_Test:test_meter_updateOneEmptyBlock_succeeds() (gas: 18860) @@ -292,6 +291,7 @@ SecurityCouncilTest:test_submitTransaction_reverts() (gas: 22981) SecurityCouncilTest:test_submitTransaction_succeeds() (gas: 164319) Semver_Test:test_behindProxy_succeeds() (gas: 506754) Semver_Test:test_version_succeeds() (gas: 9424) +SetPrevBaseFee_Test:test_setPrevBaseFee_succeeds() (gas: 11563) StandardBridge_Stateless_Test:test_isCorrectTokenPair_succeeds() (gas: 14442) StandardBridge_Stateless_Test:test_isKromaMintableERC20_succeeds() (gas: 23496) SystemConfig_Initialize_TestFail:test_initialize_lowGasLimit_reverts() (gas: 148779) @@ -304,47 +304,49 @@ SystemConfig_Setters_TestFail:test_setResourceConfig_lowGasLimit_reverts() (gas: SystemConfig_Setters_TestFail:test_setResourceConfig_notOwner_reverts() (gas: 11796) SystemConfig_Setters_TestFail:test_setResourceConfig_zeroDenominator_reverts() (gas: 13045) SystemConfig_Setters_TestFail:test_setUnsafeBlockSigner_notOwner_reverts() (gas: 10622) -ValidatorPoolTest:test_balanceOf_succeeds() (gas: 57488) -ValidatorPoolTest:test_constructor_succeeds() (gas: 27785) -ValidatorPoolTest:test_createBond_existsBond_reverts() (gas: 365282) -ValidatorPoolTest:test_createBond_insufficientBalances_reverts() (gas: 140950) -ValidatorPoolTest:test_createBond_senderNotL2OO_reverts() (gas: 189800) -ValidatorPoolTest:test_createBond_succeeds() (gas: 286106) -ValidatorPoolTest:test_createBond_unbondBefore_succeeds() (gas: 508974) -ValidatorPoolTest:test_createBond_zeroAmount_reverts() (gas: 191714) -ValidatorPoolTest:test_deposit_alreadyValidator_succeeds() (gas: 206465) -ValidatorPoolTest:test_deposit_insufficientBalances_reverts() (gas: 19836) -ValidatorPoolTest:test_deposit_succeeds() (gas: 185022) -ValidatorPoolTest:test_getBond_noBond_reverts() (gas: 16015) -ValidatorPoolTest:test_getBond_succeeds() (gas: 289889) -ValidatorPoolTest:test_increaseBond_insufficientBalances_reverts() (gas: 295785) -ValidatorPoolTest:test_increaseBond_noBond_reverts() (gas: 28641) -ValidatorPoolTest:test_increaseBond_succeeds() (gas: 348161) -ValidatorPoolTest:test_isValidator_succeeds() (gas: 138970) -ValidatorPoolTest:test_nextValidator_succeeds() (gas: 1372874) -ValidatorPoolTest:test_unbond_noBond_reverts() (gas: 17895) -ValidatorPoolTest:test_unbond_notExpired_reverts() (gas: 288271) -ValidatorPoolTest:test_unbond_penaltyByElapsed_succeeds() (gas: 393546) -ValidatorPoolTest:test_unbond_succeeds() (gas: 405049) -ValidatorPoolTest:test_validatorCount_succeeds() (gas: 208248) -ValidatorPoolTest:test_withdraw_all_succeeds() (gas: 180456) -ValidatorPoolTest:test_withdraw_loseValidatorEligibility_succeeds() (gas: 191106) -ValidatorPoolTest:test_withdraw_maintainValidatorEligibility_succeeds() (gas: 138936) -ValidatorRewardVault_Test:test_balanceOf_succeeds() (gas: 84953) +ValidatorPoolTest:test_balanceOf_succeeds() (gas: 57533) +ValidatorPoolTest:test_constructor_succeeds() (gas: 31152) +ValidatorPoolTest:test_createBond_existsBond_reverts() (gas: 365704) +ValidatorPoolTest:test_createBond_insufficientBalances_reverts() (gas: 141149) +ValidatorPoolTest:test_createBond_senderNotL2OO_reverts() (gas: 189844) +ValidatorPoolTest:test_createBond_succeeds() (gas: 286544) +ValidatorPoolTest:test_createBond_unbondBefore_succeeds() (gas: 509995) +ValidatorPoolTest:test_createBond_zeroAmount_reverts() (gas: 191824) +ValidatorPoolTest:test_deposit_alreadyValidator_succeeds() (gas: 206509) +ValidatorPoolTest:test_deposit_insufficientBalances_reverts() (gas: 19814) +ValidatorPoolTest:test_deposit_succeeds() (gas: 185044) +ValidatorPoolTest:test_getBond_noBond_reverts() (gas: 15999) +ValidatorPoolTest:test_getBond_succeeds() (gas: 290267) +ValidatorPoolTest:test_increaseBond_insufficientBalances_reverts() (gas: 296157) +ValidatorPoolTest:test_increaseBond_noBond_reverts() (gas: 28619) +ValidatorPoolTest:test_increaseBond_succeeds() (gas: 348650) +ValidatorPoolTest:test_isValidator_succeeds() (gas: 138992) +ValidatorPoolTest:test_nextValidator_succeeds() (gas: 1427931) +ValidatorPoolTest:test_unbond_maxUnbond_succeeds() (gas: 506498) +ValidatorPoolTest:test_unbond_multipleBonds_succeeds() (gas: 419998) +ValidatorPoolTest:test_unbond_noBond_reverts() (gas: 18050) +ValidatorPoolTest:test_unbond_notExpired_reverts() (gas: 288843) +ValidatorPoolTest:test_unbond_penaltyByElapsed_succeeds() (gas: 396251) +ValidatorPoolTest:test_unbond_succeeds() (gas: 407968) +ValidatorPoolTest:test_validatorCount_succeeds() (gas: 208314) +ValidatorPoolTest:test_withdraw_all_succeeds() (gas: 180474) +ValidatorPoolTest:test_withdraw_loseValidatorEligibility_succeeds() (gas: 191128) +ValidatorPoolTest:test_withdraw_maintainValidatorEligibility_succeeds() (gas: 138981) +ValidatorRewardVault_Test:test_balanceOf_succeeds() (gas: 84956) ValidatorRewardVault_Test:test_constructor_succeeds() (gas: 11358) ValidatorRewardVault_Test:test_minWithdrawalAmount_succeeds() (gas: 5476) ValidatorRewardVault_Test:test_receive_succeeds() (gas: 17409) -ValidatorRewardVault_Test:test_reward_alreadyPaidBlockNumber_reverts() (gas: 44328) -ValidatorRewardVault_Test:test_reward_penalized_succeeds() (gas: 92177) -ValidatorRewardVault_Test:test_reward_senderNotValidatorPool_reverts() (gas: 10803) -ValidatorRewardVault_Test:test_reward_succeeds() (gas: 91662) -ValidatorRewardVault_Test:test_reward_zeroValidatorAddress_reverts() (gas: 13339) +ValidatorRewardVault_Test:test_reward_alreadyPaidBlockNumber_reverts() (gas: 44334) +ValidatorRewardVault_Test:test_reward_penalized_succeeds() (gas: 92189) +ValidatorRewardVault_Test:test_reward_senderNotValidatorPool_reverts() (gas: 10806) +ValidatorRewardVault_Test:test_reward_succeeds() (gas: 91674) +ValidatorRewardVault_Test:test_reward_zeroValidatorAddress_reverts() (gas: 13342) ValidatorRewardVault_Test:test_withdraw_notEnough_reverts() (gas: 12764) -ValidatorRewardVault_Test:test_withdraw_succeeds() (gas: 196506) +ValidatorRewardVault_Test:test_withdraw_succeeds() (gas: 196509) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_0() (gas: 140864) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_1() (gas: 347219) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_2() (gas: 347135) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_3() (gas: 289122) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_4() (gas: 519318) ZKMerkleTrie_Test:test_verifyInclustionProof_valid_5() (gas: 450423) -ZKMerkleTrie_Test:test_verifyInclustionProof_valid_6() (gas: 312718) +ZKMerkleTrie_Test:test_verifyInclustionProof_valid_6() (gas: 312718) \ No newline at end of file diff --git a/packages/contracts/contracts/L1/ValidatorPool.sol b/packages/contracts/contracts/L1/ValidatorPool.sol index adeb12c2a4..9b7d643962 100644 --- a/packages/contracts/contracts/L1/ValidatorPool.sol +++ b/packages/contracts/contracts/L1/ValidatorPool.sol @@ -47,6 +47,11 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { */ uint256 public immutable MIN_BOND_AMOUNT; + /** + * @notice The max number of unbonds when trying unbond. + */ + uint256 public immutable MAX_UNBOND; + /** * @notice The period in a round that the penalty does not apply, after which it does (in seconds). */ @@ -57,7 +62,7 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { */ uint256 public immutable PENALTY_PERIOD; - /* + /** * @notice The duration of a submission round for one output (in seconds). * Note that there are two submission rounds for an output: PRIORITY ROUND and PUBLIC ROUND. */ @@ -133,6 +138,7 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { * @param _portal Address of the KromaPortal. * @param _trustedValidator Address of the trusted validator. * @param _minBondAmount The minimum bond amount. + * @param _maxUnbond The max number of unbonds when trying unbond. * @param _nonPenaltyPeriod The period during a submission round that is not penalized. * @param _penaltyPeriod The period during a submission round when penalties are applied. */ @@ -141,6 +147,7 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { KromaPortal _portal, address _trustedValidator, uint256 _minBondAmount, + uint256 _maxUnbond, uint256 _nonPenaltyPeriod, uint256 _penaltyPeriod ) Semver(0, 1, 0) { @@ -148,6 +155,7 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { PORTAL = _portal; TRUSTED_VALIDATOR = _trustedValidator; MIN_BOND_AMOUNT = _minBondAmount; + MAX_UNBOND = _maxUnbond; NON_PENALTY_PERIOD = _nonPenaltyPeriod; PENALTY_PERIOD = _penaltyPeriod; @@ -178,7 +186,7 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { function withdraw(uint256 _amount) external nonReentrant { _decreaseBalance(msg.sender, _amount); - bool success = SafeCall.call(msg.sender, gasleft(), _amount, hex""); + bool success = SafeCall.call(msg.sender, gasleft(), _amount, ""); require(success, "ValidatorPool: ETH transfer failed"); } @@ -243,32 +251,50 @@ contract ValidatorPool is ReentrancyGuardUpgradeable, Semver { } /** - * @notice Attempts to unbond corresponding to nextUnbondOutputIndex and returns whether the unbond was successful. - * When unbound, it updates the next priority validator and sends a reward message to L2. + * @notice Attempts to unbond starting from nextUnbondOutputIndex and returns whether at least + * one unbond is executed. Tries unbond at most MAX_UNBOND number of bonds and sends + * a reward message to L2 for each unbond. + * Note that it updates the next priority validator using last unbond, and not updates + * when no unbond. * - * @return Whether the bond has been successfully unbonded. + * @return Whether at least one unbond is executed. */ function _tryUnbond() private returns (bool) { uint256 outputIndex = nextUnbondOutputIndex; - - Types.Bond storage bond = bonds[outputIndex]; - uint128 bondAmount = bond.amount; - if (block.timestamp >= bond.expiresAt && bondAmount > 0) { - delete bonds[outputIndex]; - - Types.CheckpointOutput memory output = L2_ORACLE.getL2Output(outputIndex); - _increaseBalance(output.submitter, bondAmount); - emit Unbonded(outputIndex, output.submitter, bondAmount); - - unchecked { - ++nextUnbondOutputIndex; + uint128 bondAmount; + Types.Bond storage bond; + Types.CheckpointOutput memory output; + + uint256 unbondedNum = 0; + for (; unbondedNum < MAX_UNBOND; ) { + bond = bonds[outputIndex]; + bondAmount = bond.amount; + + if (block.timestamp >= bond.expiresAt && bondAmount > 0) { + delete bonds[outputIndex]; + output = L2_ORACLE.getL2Output(outputIndex); + _increaseBalance(output.submitter, bondAmount); + emit Unbonded(outputIndex, output.submitter, bondAmount); + + // Send reward message to L2 ValidatorRewardVault. + _sendRewardMessageToL2Vault(output); + + unchecked { + ++unbondedNum; + ++outputIndex; + } + } else { + break; } + } + if (unbondedNum > 0) { // Select the next priority validator. _updatePriorityValidator(output.outputRoot); - // Send reward message to L2 ValidatorRewardVault. - _sendRewardMessageToL2Vault(output); + unchecked { + nextUnbondOutputIndex = outputIndex; + } return true; } diff --git a/packages/contracts/contracts/test/CommonTest.t.sol b/packages/contracts/contracts/test/CommonTest.t.sol index 7258d94f72..efef4157d4 100644 --- a/packages/contracts/contracts/test/CommonTest.t.sol +++ b/packages/contracts/contracts/test/CommonTest.t.sol @@ -106,13 +106,12 @@ contract L2OutputOracle_Initializer is CommonTest { // ValidatorPool constructor arguments address internal trusted = 0x000000000000000000000000000000000000aaaa; uint256 internal minBond = 0.1 ether; + uint256 internal maxUnbond = 2; uint256 internal nonPenaltyPeriod = 10 minutes; uint256 internal penaltyPeriod = 20 minutes; uint256 internal roundDuration = nonPenaltyPeriod + penaltyPeriod; // Constructor arguments - address internal asserter = 0x000000000000000000000000000000000000aAaB; - address internal challenger = 0x000000000000000000000000000000000000AAaC; uint256 internal submissionInterval = 1800; uint256 internal l2BlockTime = 2; uint256 internal startingBlockNumber = 200; @@ -120,6 +119,8 @@ contract L2OutputOracle_Initializer is CommonTest { address internal guardian = 0x000000000000000000000000000000000000AaaD; // Test data + address internal asserter = 0x000000000000000000000000000000000000aAaB; + address internal challenger = 0x000000000000000000000000000000000000AAaC; uint256 initL1Time; event OutputSubmitted( @@ -176,6 +177,7 @@ contract L2OutputOracle_Initializer is CommonTest { _portal: mockPortal, _trustedValidator: trusted, _minBondAmount: minBond, + _maxUnbond: maxUnbond, _nonPenaltyPeriod: nonPenaltyPeriod, _penaltyPeriod: penaltyPeriod }); diff --git a/packages/contracts/contracts/test/ValidatorPool.t.sol b/packages/contracts/contracts/test/ValidatorPool.t.sol index 5072bdcbc8..2489343d56 100644 --- a/packages/contracts/contracts/test/ValidatorPool.t.sol +++ b/packages/contracts/contracts/test/ValidatorPool.t.sol @@ -74,6 +74,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { assertEq(address(pool.L2_ORACLE()), address(oracle)); assertEq(pool.TRUSTED_VALIDATOR(), trusted); assertEq(pool.MIN_BOND_AMOUNT(), minBond); + assertEq(pool.MAX_UNBOND(), maxUnbond); assertEq(pool.NON_PENALTY_PERIOD(), nonPenaltyPeriod); assertEq(pool.PENALTY_PERIOD(), penaltyPeriod); assertEq(pool.ROUND_DURATION(), nonPenaltyPeriod + penaltyPeriod); @@ -193,7 +194,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { uint128 expiresAt = uint128(block.timestamp + finalizationPeriodSeconds); vm.prank(address(oracle)); - vm.expectEmit(true, true, false, false); + vm.expectEmit(true, true, false, true, address(pool)); emit Bonded(validator, nextOutputIndex, uint128(minBond), expiresAt); pool.createBond(nextOutputIndex, uint128(minBond), expiresAt); assertEq(pool.balanceOf(validator), 0); @@ -226,7 +227,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { uint128 expiresAt = uint128(block.timestamp + finalizationPeriodSeconds); vm.prank(address(oracle)); - vm.expectEmit(true, true, false, false); + vm.expectEmit(true, true, false, true, address(pool)); emit Unbonded(0, firstOutput.submitter, uint128(firstBond.amount)); pool.createBond(nextOutputIndex, uint128(minBond), expiresAt); assertEq(pool.balanceOf(firstOutput.submitter), minBond); @@ -303,7 +304,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { // in this test, the penalty is always 0 because the output was submitted without delay. uint256 penalty = 0; - vm.expectEmit(true, true, false, false); + vm.expectEmit(true, true, false, true, address(pool)); emit Unbonded(latestOutputIndex, output.submitter, bond.amount); vm.expectCall( address(pool.PORTAL()), @@ -363,7 +364,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { assertEq(penalty, delay - nonPenaltyPeriod); } - vm.expectEmit(true, true, false, false); + vm.expectEmit(true, true, false, true, address(pool)); emit Unbonded(outputIndex, validator, bondAmount); vm.expectCall( address(pool.PORTAL()), @@ -385,6 +386,125 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { assertEq(pool.balanceOf(validator), bondAmount); } + function test_unbond_multipleBonds_succeeds() public { + uint256 tries = 2; + uint256 deposit = minBond * tries; + vm.prank(trusted); + pool.deposit{ value: deposit }(); + + // submit 2 outputs, only trusted can submit outputs before at least one unbond. + uint256 blockNumber = 0; + uint128 expiresAt = 0; + for (uint256 i = 0; i < tries; i++) { + blockNumber = oracle.nextBlockNumber(); + warpToSubmitTime(blockNumber); + expiresAt = uint128(block.timestamp + finalizationPeriodSeconds); + assertEq(pool.nextValidator(), trusted); + vm.prank(trusted); + mockOracle.addOutput(keccak256(abi.encode(blockNumber)), blockNumber); + vm.prank(address(oracle)); + pool.createBond(i, uint128(minBond), expiresAt); + assertEq(pool.balanceOf(trusted), deposit - minBond * (i + 1)); + } + + uint256 firstOutputIndex = 0; + Types.CheckpointOutput memory firstOutput = oracle.getL2Output(firstOutputIndex); + Types.Bond memory firstBond = pool.getBond(firstOutputIndex); + + uint256 secondOutputIndex = 1; + Types.CheckpointOutput memory secondOutput = oracle.getL2Output(secondOutputIndex); + Types.Bond memory secondBond = pool.getBond(secondOutputIndex); + + // warp to the time the second output is finalized and the two bonds are expired. + vm.warp(secondBond.expiresAt); + + // in this test, the penalty is always 0 because the outputs were submitted without delay. + uint256 penalty = 0; + + vm.expectEmit(true, true, false, true, address(pool)); + emit Unbonded(firstOutputIndex, firstOutput.submitter, firstBond.amount); + vm.expectCall( + address(pool.PORTAL()), + abi.encodeWithSelector( + KromaPortal.depositTransactionByValidatorPool.selector, + Predeploys.VALIDATOR_REWARD_VAULT, + pool.VAULT_REWARD_GAS_LIMIT(), + abi.encodeWithSelector( + ValidatorRewardVault.reward.selector, + firstOutput.submitter, + firstOutput.l2BlockNumber, + penalty, + penaltyPeriod + ) + ) + ); + vm.expectEmit(true, true, false, true, address(pool)); + emit Unbonded(secondOutputIndex, secondOutput.submitter, secondBond.amount); + vm.expectCall( + address(pool.PORTAL()), + abi.encodeWithSelector( + KromaPortal.depositTransactionByValidatorPool.selector, + Predeploys.VALIDATOR_REWARD_VAULT, + pool.VAULT_REWARD_GAS_LIMIT(), + abi.encodeWithSelector( + ValidatorRewardVault.reward.selector, + secondOutput.submitter, + secondOutput.l2BlockNumber, + penalty, + penaltyPeriod + ) + ) + ); + vm.prank(trusted); + pool.unbond(); + + // check whether bonds are deleted and trusted balance has increased. + for (uint256 i = 0; i < tries; i++) { + vm.expectRevert("ValidatorPool: the bond does not exist"); + pool.getBond(i); + } + assertEq(pool.balanceOf(trusted), deposit); + } + + function test_unbond_maxUnbond_succeeds() public { + uint256 tries = maxUnbond + 1; + uint256 deposit = minBond * tries; + vm.prank(trusted); + pool.deposit{ value: deposit }(); + + // submit (maxUnbond + 1) outputs, only trusted can submit outputs before at least one unbond. + uint256 blockNumber = 0; + uint128 expiresAt = 0; + for (uint256 i = 0; i < tries; i++) { + blockNumber = oracle.nextBlockNumber(); + warpToSubmitTime(blockNumber); + expiresAt = uint128(block.timestamp + finalizationPeriodSeconds); + assertEq(pool.nextValidator(), trusted); + vm.prank(trusted); + mockOracle.addOutput(keccak256(abi.encode(blockNumber)), blockNumber); + vm.prank(address(oracle)); + pool.createBond(i, uint128(minBond), expiresAt); + assertEq(pool.balanceOf(trusted), deposit - minBond * (i + 1)); + } + + uint256 latestOutputIndex = oracle.latestOutputIndex(); + Types.Bond memory bond = pool.getBond(latestOutputIndex); + + // warp to the time the latest output is finalized and all bonds are expired. + vm.warp(bond.expiresAt); + + vm.prank(trusted); + pool.unbond(); + + // check whether maxUnbond number of bonds are deleted and the last one is not. + for (uint256 i = 0; i < tries - 1; i++) { + vm.expectRevert("ValidatorPool: the bond does not exist"); + pool.getBond(i); + } + bond = pool.getBond(tries - 1); + assertEq(bond.amount, minBond); + } + function test_unbond_notExpired_reverts() external { test_createBond_succeeds(); @@ -407,7 +527,7 @@ contract ValidatorPoolTest is L2OutputOracle_Initializer { pool.deposit{ value: prevBond.amount }(); vm.prank(oracle.COLOSSEUM()); - vm.expectEmit(true, true, false, false); + vm.expectEmit(true, true, false, true, address(pool)); emit BondIncreased(challenger, latestOutputIndex, prevBond.amount); pool.increaseBond(challenger, latestOutputIndex); diff --git a/packages/contracts/deploy-config/devnetL1.json b/packages/contracts/deploy-config/devnetL1.json index e437b373f3..661ba36117 100644 --- a/packages/contracts/deploy-config/devnetL1.json +++ b/packages/contracts/deploy-config/devnetL1.json @@ -10,6 +10,7 @@ "batchSenderAddress": "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", "validatorPoolTrustedValidator": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", "validatorPoolMinBondAmount": "0x1", + "validatorPoolMaxUnbond": 10, "validatorPoolNonPenaltyPeriod": 10, "validatorPoolPenaltyPeriod": 10, "l2OutputOracleSubmissionInterval": 20, @@ -40,5 +41,9 @@ "colosseumSegmentsLengths": "3,11", "numDeployConfirmations": 1, "securityCouncilNumConfirmationRequired": 1, - "securityCouncilOwners": ["0x007D7e4391DCFdE47Dd7FD0B8E16091C5e0E1C7f","0x2A06Af6a4F325B1e0095a8AbD32888e0AbdCD04D","0xed92E7C40348A552822847384D722A6adB9AFeFA"] + "securityCouncilOwners": [ + "0x007D7e4391DCFdE47Dd7FD0B8E16091C5e0E1C7f", + "0x2A06Af6a4F325B1e0095a8AbD32888e0AbdCD04D", + "0xed92E7C40348A552822847384D722A6adB9AFeFA" + ] } diff --git a/packages/contracts/deploy-config/sepolia.json b/packages/contracts/deploy-config/sepolia.json index 9721b4673d..79ad854ed6 100644 --- a/packages/contracts/deploy-config/sepolia.json +++ b/packages/contracts/deploy-config/sepolia.json @@ -14,6 +14,7 @@ "batchSenderAddress": "0xf15dc770221b99c98d4aaed568f2ab04b9d16e42", "validatorPoolTrustedValidator": "0xc2da150ecfaa2e275577203bb177dd4de4a2536e", "validatorPoolMinBondAmount": "0x16345785d8a0000", + "validatorPoolMaxUnbond": 10, "validatorPoolNonPenaltyPeriod": 20, "validatorPoolPenaltyPeriod": 40, "protocolVaultRecipient": "0xb5d7c1921fdbdea614f264a75ca0be416cf63eb5", diff --git a/packages/contracts/deploy/007-ValidatorPool.ts b/packages/contracts/deploy/007-ValidatorPool.ts index cefe5d8376..e3a9bef755 100644 --- a/packages/contracts/deploy/007-ValidatorPool.ts +++ b/packages/contracts/deploy/007-ValidatorPool.ts @@ -21,6 +21,7 @@ const deployFn: DeployFunction = async (hre) => { portalProxyAddress, hre.deployConfig.validatorPoolTrustedValidator, hre.deployConfig.validatorPoolMinBondAmount, + hre.deployConfig.validatorPoolMaxUnbond, hre.deployConfig.validatorPoolNonPenaltyPeriod, hre.deployConfig.validatorPoolPenaltyPeriod, ], @@ -43,6 +44,11 @@ const deployFn: DeployFunction = async (hre) => { 'MIN_BOND_AMOUNT', hre.deployConfig.validatorPoolMinBondAmount ) + await assertContractVariable( + contract, + 'MAX_UNBOND', + hre.deployConfig.validatorPoolMaxUnbond + ) await assertContractVariable( contract, 'NON_PENALTY_PERIOD', diff --git a/packages/contracts/src/deploy-config.ts b/packages/contracts/src/deploy-config.ts index 85aad8ec55..f567e445a1 100644 --- a/packages/contracts/src/deploy-config.ts +++ b/packages/contracts/src/deploy-config.ts @@ -92,6 +92,11 @@ interface RequiredDeployConfig { */ validatorPoolMinBondAmount: string + /** + * Max number of unbonds when trying unbond. + */ + validatorPoolMaxUnbond: number + /** * The period during a submission round that is not penalized (in seconds). */ @@ -265,6 +270,9 @@ export const deployConfigSpec: { validatorPoolMinBondAmount: { type: 'string', // uint256 }, + validatorPoolMaxUnbond: { + type: 'number', + }, validatorPoolNonPenaltyPeriod: { type: 'number', }, diff --git a/utils/chain-ops/genesis/config.go b/utils/chain-ops/genesis/config.go index 37166dcee7..1963c6b8a6 100644 --- a/utils/chain-ops/genesis/config.go +++ b/utils/chain-ops/genesis/config.go @@ -45,6 +45,7 @@ type DeployConfig struct { ValidatorPoolTrustedValidator common.Address `json:"validatorPoolTrustedValidator"` ValidatorPoolMinBondAmount *hexutil.Big `json:"validatorPoolMinBondAmount"` + ValidatorPoolMaxUnbond uint64 `json:"validatorPoolMaxUnbond"` ValidatorPoolNonPenaltyPeriod uint64 `json:"validatorPoolNonPenaltyPeriod"` ValidatorPoolPenaltyPeriod uint64 `json:"validatorPoolPenaltyPeriod"` @@ -162,6 +163,9 @@ func (d *DeployConfig) Check() error { if d.ValidatorPoolMinBondAmount == nil { return fmt.Errorf("%w: ValidatorPoolMinBondAmount cannot be nil", ErrInvalidDeployConfig) } + if d.ValidatorPoolMaxUnbond == 0 { + return fmt.Errorf("%w: ValidatorPoolMaxUnbond cannot be 0", ErrInvalidDeployConfig) + } if d.ValidatorPoolNonPenaltyPeriod == 0 { return fmt.Errorf("%w: ValidatorPoolNonPenaltyPeriod cannot be 0", ErrInvalidDeployConfig) } diff --git a/utils/chain-ops/genesis/layer_one.go b/utils/chain-ops/genesis/layer_one.go index 1ac07a59ff..8faeeaa631 100644 --- a/utils/chain-ops/genesis/layer_one.go +++ b/utils/chain-ops/genesis/layer_one.go @@ -376,6 +376,7 @@ func deployL1Contracts(config *DeployConfig, backend *backends.SimulatedBackend) Args: []interface{}{ config.ValidatorPoolTrustedValidator, config.ValidatorPoolMinBondAmount.ToInt(), + uint642Big(config.ValidatorPoolMaxUnbond), uint642Big(config.ValidatorPoolNonPenaltyPeriod), uint642Big(config.ValidatorPoolPenaltyPeriod), }, @@ -472,8 +473,9 @@ func l1Deployer(backend *backends.SimulatedBackend, opts *bind.TransactOpts, dep predeploys.DevKromaPortalAddr, /* trustedValidator= */ deployment.Args[0].(common.Address), /* minBondAmount= */ deployment.Args[1].(*big.Int), - /* nonPenaltyPeriod= */ deployment.Args[2].(*big.Int), - /* penaltyPeriod= */ deployment.Args[3].(*big.Int), + /* maxUnbond= */ deployment.Args[2].(*big.Int), + /* nonPenaltyPeriod= */ deployment.Args[3].(*big.Int), + /* penaltyPeriod= */ deployment.Args[4].(*big.Int), ) case "L2OutputOracle": _, tx, _, err = bindings.DeployL2OutputOracle( diff --git a/utils/chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json b/utils/chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json index d806135621..0fac0ba1dd 100644 --- a/utils/chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json +++ b/utils/chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json @@ -13,6 +13,7 @@ "validatorPoolTrustedValidator": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", "validatorPoolMinBondAmount": "0x1", + "validatorPoolMaxUnbond": 10, "validatorPoolNonPenaltyPeriod": 10, "validatorPoolPenaltyPeriod": 10, @@ -36,5 +37,7 @@ "colosseumMaxTxs": 25, "colosseumSegmentsLengths": "3,11", "securityCouncilNumConfirmationRequired": 1, - "securityCouncilOwners": ["0x007D7e4391DCFdE47Dd7FD0B8E16091C5e0E1C7f","0x2A06Af6a4F325B1e0095a8AbD32888e0AbdCD04D","0xed92E7C40348A552822847384D722A6adB9AFeFA"] + "securityCouncilOwners": [ + "0x007D7e4391DCFdE47Dd7FD0B8E16091C5e0E1C7f","0x2A06Af6a4F325B1e0095a8AbD32888e0AbdCD04D","0xed92E7C40348A552822847384D722A6adB9AFeFA" + ] } diff --git a/utils/chain-ops/genesis/testdata/test-deploy-config-full.json b/utils/chain-ops/genesis/testdata/test-deploy-config-full.json index ad6c7b5810..cc493bcf46 100644 --- a/utils/chain-ops/genesis/testdata/test-deploy-config-full.json +++ b/utils/chain-ops/genesis/testdata/test-deploy-config-full.json @@ -11,6 +11,7 @@ "batchSenderAddress": "0x0000000000000000000000000000000000000000", "validatorPoolTrustedValidator": "0x7770000000000000000000000000000000000001", "validatorPoolMinBondAmount": "0x1", + "validatorPoolMaxUnbond": 10, "validatorPoolNonPenaltyPeriod": 3, "validatorPoolPenaltyPeriod": 3, "l2OutputOracleSubmissionInterval": 6, @@ -59,5 +60,9 @@ "colosseumMaxTxs": 25, "colosseumSegmentsLengths": "3,4", "securityCouncilNumConfirmationRequired": 1, - "securityCouncilOwners": ["0x007d7e4391dcfde47dd7fd0b8e16091c5e0e1c7f","0x2a06af6a4f325b1e0095a8abd32888e0abdcd04d","0xed92e7c40348a552822847384d722a6adb9afefa"] + "securityCouncilOwners": [ + "0x007d7e4391dcfde47dd7fd0b8e16091c5e0e1c7f", + "0x2a06af6a4f325b1e0095a8abd32888e0abdcd04d", + "0xed92e7c40348a552822847384d722a6adb9afefa" + ] }