From 3bc1d1d2685ed9ef95ad981b699300dc0e25c400 Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Thu, 13 Jun 2024 13:17:45 +0300 Subject: [PATCH] Fix for processing of events. --- .../ManagementContract/ManagementContract.go | 138 +++++++++++++++++- .../src/management/ManagementContract.sol | 2 + go/enclave/crosschain/common.go | 14 +- 3 files changed, 150 insertions(+), 4 deletions(-) diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 25184b6e3e..56c3665803 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -61,8 +61,8 @@ type StructsValueTransferMessage struct { // ManagementContractMetaData contains all meta data concerning the ManagementContract contract. var ManagementContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ImportantContractAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveRevoked\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"_rollupData\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"internalType\":\"structStructs.ValueTransferMessage\",\"name\":\"_msg\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"ExtractNativeValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetImportantContractKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"GrantSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_enclaveID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"IsSequencerEnclave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"RevokeSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"SetImportantContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_lastBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"crossChainHashes\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"addCrossChainMessagesRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"importantContractAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"importantContractKeys\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isWithdrawalSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"merkleMessageBus\",\"outputs\":[{\"internalType\":\"contractIMerkleTreeMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61410c80620000a06000396000f3fe60806040523480156200001157600080fd5b5060043610620001d05760003560e01c8063715018a61162000101578063a1a227fa11620000a3578063db5d91b1116200007a578063db5d91b11462000446578063e34fbfc81462000475578063e874eb20146200048a578063f2fde38b146200049e57600080fd5b8063a1a227fa146200040a578063a52f433c146200041e578063d4fab887146200042f57600080fd5b80638236a7ba11620000d85780638236a7ba146200038c5780638da5cb5b14620003b357806398077e8614620003e457600080fd5b8063715018a6146200036e5780637281099614620003785780638129fc1c146200038257600080fd5b806343348b2f11620001775780635371a216116200014e5780635371a216146200031057806368e1038314620003275780636a30d26c146200033e5780636b9707d6146200035757600080fd5b806343348b2f14620002c0578063440c953b14620002ef5780634766573814620002f957600080fd5b80632f0cb9e311620001ac5780632f0cb9e314620002225780633e60a22f14620002595780633f3f6a1814620002a957600080fd5b80620ddd2714620001d557806303e72e4814620001f25780632c77c81f146200020b575b600080fd5b620001df600a5481565b6040519081526020015b60405180910390f35b620002096200020336600462001be9565b620004b5565b005b620002096200021c36600462001c89565b620005c8565b620002486200023336600462001d2c565b60096020526000908152604090205460ff1681565b6040519015158152602001620001e9565b620002906200026a36600462001d46565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001e9565b62000209620002ba36600462001d87565b62000707565b62000248620002d136600462001ea1565b6001600160a01b031660009081526020819052604090205460ff1690565b620001df60055481565b620002096200030a36600462001ea1565b6200098d565b620002096200032136600462001ec6565b62000a5d565b620002096200033836600462001f60565b62000c66565b6200034862000d5d565b604051620001e991906200203e565b620002096200036836600462001ea1565b62000e40565b6200020962000f06565b6200020962000f1e565b6200020962000fa2565b620003a36200039d36600462001d2c565b6200117a565b604051620001e9929190620020a4565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031662000290565b620003fb620003f536600462001d2c565b6200126a565b604051620001e99190620020ea565b60075462000290906001600160a01b031681565b600454610100900460ff1662000248565b6200020962000440366004620020ff565b6200131f565b620002486200045736600462001ea1565b6001600160a01b031660009081526001602052604090205460ff1690565b6200020962000486366004620021aa565b5050565b60085462000290906001600160a01b031681565b62000209620004af36600462001ea1565b620014b2565b620004bf6200150f565b60006001600160a01b0316600383604051620004dc9190620021f0565b908152604051908190036020019020546001600160a01b0316036200053b57600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace016200053983826200229d565b505b806003836040516200054e9190620021f0565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590620005bc90849084906200236a565b60405180910390a15050565b60006200061a8535620005df602088018862002397565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200158692505050565b6001600160a01b03811660009081526020819052604090205490915060ff166200068b5760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f742061747465737465640000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16620006f55760405162461bcd60e51b815260206004820152601960248201527f656e636c6176654944206e6f7420612073657175656e63657200000000000000604482015260640162000682565b6200070085620015b6565b5050505050565b620007148460ff620023f7565b431115620007655760405162461bcd60e51b815260206004820152601560248201527f426c6f636b2062696e64696e6720746f6f206f6c640000000000000000000000604482015260640162000682565b84844014620007cc576200077943620015ee565b6200078486620015ee565b620007908640620015ee565b604051602001620007a4939291906200240d565b60408051601f198184030181529082905262461bcd60e51b82526200068291600401620020ea565b60006200083e87878787604051602001620007eb9493929190620024b2565b6040516020818303038152906040528051906020012084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200158692505050565b6001600160a01b03811660009081526020819052604090205490915060ff16620008ab5760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f7420617474657374656400000000000000000000604482015260640162000682565b600a87905560005b8451811015620009835760085485516001600160a01b039091169063b6aed0cb90879084908110620008e957620008e96200252e565b6020026020010151620008fc9062002544565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152426024820152604401600060405180830381600087803b1580156200095457600080fd5b505af115801562000969573d6000803e3d6000fd5b5050505080806200097a9062002569565b915050620008b3565b5050505050505050565b620009976200150f565b6001600160a01b03811660009081526020819052604090205460ff1662000a015760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f7420617474657374656400000000000000000000604482015260640162000682565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093691015b60405180910390a150565b6008546040517fb201246f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b201246f9062000aae908790879087908790600401620025e5565b60006040518083038186803b15801562000ac757600080fd5b505afa15801562000adc573d6000803e3d6000fd5b5050505060008460405160200162000af591906200264d565b60408051601f1981840301815291815281516020928301206000818152600990935291205490915060ff161562000b6f5760405162461bcd60e51b815260206004820152601860248201527f7769746864726177616c20616c7265616479207370656e740000000000000000604482015260640162000682565b6001600960008760405160200162000b8891906200264d565b60408051808303601f190181529181528151602092830120835282820193909352908201600020805460ff1916931515939093179092556007546001600160a01b0316916399a3ad219162000be39190890190890162001ea1565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301528801356024820152604401600060405180830381600087803b15801562000c4657600080fd5b505af115801562000c5b573d6000803e3d6000fd5b505050505050505050565b60045460ff161562000ce15760405162461bcd60e51b815260206004820152602260248201527f6e6574776f726b2073656372657420616c726561647920696e697469616c697a60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840162000682565b60048054600160ff1991821681179092556001600160a01b038716600081815260208181526040808320805486168717905585825291829020805490941690941790925590519081527ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093691015b60405180910390a15050505050565b60606002805480602002602001604051908101604052809291908181526020016000905b8282101562000e3757838290600052602060002001805462000da3906200220e565b80601f016020809104026020016040519081016040528092919081815260200182805462000dd1906200220e565b801562000e225780601f1062000df65761010080835404028352916020019162000e22565b820191906000526020600020905b81548152906001019060200180831162000e0457829003601f168201915b50505050508152602001906001019062000d81565b50505050905090565b62000e4a6200150f565b6001600160a01b03811660009081526001602052604090205460ff1662000eb45760405162461bcd60e51b815260206004820152601960248201527f656e636c6176654944206e6f7420612073657175656e63657200000000000000604482015260640162000682565b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f0f279980343c7ca542fde9fa5396555068efb5cd560d9cf9c191aa2911079b47910162000a52565b62000f106200150f565b62000f1c600062001695565b565b62000f286200150f565b6007546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801562000f8757600080fd5b505af115801562000f9c573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801562000fee5750825b905060008267ffffffffffffffff1660011480156200100c5750303b155b9050811580156200101b575080155b1562001053576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200108857845468ff00000000000000001916680100000000000000001785555b620010933362001713565b6000600555604051620010a69062001afd565b604051809103906000f080158015620010c3573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039390931692831790915560078054909116821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a183156200070057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200162000d4e565b604080516060808201835260008083526020808401839052838501829052858252600681528482208551938401909552845483526001850180549295869493909284019190620011ca906200220e565b80601f0160208091040260200160405190810160405280929190818152602001828054620011f8906200220e565b8015620012495780601f106200121d5761010080835404028352916020019162001249565b820191906000526020600020905b8154815290600101906020018083116200122b57829003601f168201915b50505091835250506002919091015460209091015280519094149492505050565b600281815481106200127b57600080fd5b90600052602060002001600091509050805462001298906200220e565b80601f0160208091040260200160405190810160405280929190818152602001828054620012c6906200220e565b8015620013175780601f10620012eb5761010080835404028352916020019162001317565b820191906000526020600020905b815481529060010190602001808311620012f957829003601f168201915b505050505081565b6001600160a01b03851660009081526020819052604090205460ff1680620013b05760405162461bcd60e51b815260206004820152602360248201527f726573706f6e64696e67206174746573746572206973206e6f7420617474657360448201527f7465640000000000000000000000000000000000000000000000000000000000606482015260840162000682565b811562001487576000620013e9878786604051602001620013d4939291906200265d565b60405160208183030381529060405262001728565b90506000620013f9828762001586565b9050876001600160a01b0316816001600160a01b031614620014845760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000682565b50505b5050506001600160a01b039091166000908152602081905260409020805460ff191660011790555050565b620014bc6200150f565b6001600160a01b03811662001501576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000682565b6200150c8162001695565b50565b33620015427f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000f1c576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000682565b60008060008062001598868662001767565b925092509250620015aa8282620017b8565b50909150505b92915050565b803560009081526006602052604090208190620015d48282620026a5565b5050600554604082013511156200150c5760400135600555565b60606000620015fd83620018ce565b600101905060008167ffffffffffffffff81111562001620576200162062001b0b565b6040519080825280601f01601f1916602001820160405280156200164b576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200165557509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6200171d620019b7565b6200150c8162001a1f565b6000620017368251620015ee565b826040516020016200174a929190620027b5565b604051602081830303815290604052805190602001209050919050565b60008060008351604103620017a55760208401516040850151606086015160001a620017968882858562001a29565b955095509550505050620017b1565b50508151600091506002905b9250925092565b6000826003811115620017cf57620017cf62002814565b03620017d9575050565b6001826003811115620017f057620017f062002814565b0362001828576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156200183f576200183f62002814565b036200187b576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000682565b600382600381111562001892576200189262002814565b0362000486576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000682565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062001918577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062001945576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200196457662386f26fc10000830492506010015b6305f5e10083106200197d576305f5e100830492506008015b61271083106200199257612710830492506004015b60648310620019a5576064830492506002015b600a8310620015b05760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000f1c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620014bc620019b7565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111562001a66575060009150600390508262001af3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001abb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811662001ae95750600092506001915082905062001af3565b9250600091508190505b9450945094915050565b6118ac806200282b83390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562001b4d5762001b4d62001b0b565b604052919050565b600082601f83011262001b6757600080fd5b813567ffffffffffffffff81111562001b845762001b8462001b0b565b62001b99601f8201601f191660200162001b21565b81815284602083860101111562001baf57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b038116811462001be457600080fd5b919050565b6000806040838503121562001bfd57600080fd5b823567ffffffffffffffff81111562001c1557600080fd5b62001c238582860162001b55565b92505062001c346020840162001bcc565b90509250929050565b60008083601f84011262001c5057600080fd5b50813567ffffffffffffffff81111562001c6957600080fd5b60208301915083602082850101111562001c8257600080fd5b9250929050565b6000806000806060858703121562001ca057600080fd5b843567ffffffffffffffff8082111562001cb957600080fd5b908601906060828903121562001cce57600080fd5b9094506020860135908082111562001ce557600080fd5b62001cf38883890162001c3d565b9095509350604087013591508082111562001d0d57600080fd5b5085016020818803121562001d2157600080fd5b939692955090935050565b60006020828403121562001d3f57600080fd5b5035919050565b60006020828403121562001d5957600080fd5b813567ffffffffffffffff81111562001d7157600080fd5b62001d7f8482850162001b55565b949350505050565b60008060008060008060a0878903121562001da157600080fd5b86359550602080880135955060408801359450606088013567ffffffffffffffff8082111562001dd057600080fd5b818a0191508a601f83011262001de557600080fd5b81358181111562001dfa5762001dfa62001b0b565b8060051b62001e0b85820162001b21565b918252838101850191858101908e84111562001e2657600080fd5b86860192505b8383101562001e6557848335111562001e4457600080fd5b62001e558f88853589010162001b55565b8252918601919086019062001e2c565b985050505060808a013592508083111562001e7f57600080fd5b505062001e8f89828a0162001c3d565b979a9699509497509295939492505050565b60006020828403121562001eb457600080fd5b62001ebf8262001bcc565b9392505050565b60008060008084860360c081121562001ede57600080fd5b608081121562001eed57600080fd5b50849350608085013567ffffffffffffffff8082111562001f0d57600080fd5b818701915087601f83011262001f2257600080fd5b81358181111562001f3257600080fd5b8860208260051b850101111562001f4857600080fd5b95986020929092019750949560a00135945092505050565b60008060008060006060868803121562001f7957600080fd5b62001f848662001bcc565b9450602086013567ffffffffffffffff8082111562001fa257600080fd5b62001fb089838a0162001c3d565b9096509450604088013591508082111562001fca57600080fd5b5062001fd98882890162001c3d565b969995985093965092949392505050565b60005b838110156200200757818101518382015260200162001fed565b50506000910152565b600081518084526200202a81602086016020860162001fea565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200209757603f198886030184526200208485835162002010565b9450928501929085019060010162002065565b5092979650505050505050565b8215158152604060208201528151604082015260006020830151606080840152620020d360a084018262002010565b905060408401516080840152809150509392505050565b60208152600062001ebf602083018462002010565b600080600080600060a086880312156200211857600080fd5b620021238662001bcc565b9450620021336020870162001bcc565b9350604086013567ffffffffffffffff808211156200215157600080fd5b6200215f89838a0162001b55565b945060608801359150808211156200217657600080fd5b50620021858882890162001b55565b925050608086013580151581146200219c57600080fd5b809150509295509295909350565b60008060208385031215620021be57600080fd5b823567ffffffffffffffff811115620021d657600080fd5b620021e48582860162001c3d565b90969095509350505050565b600082516200220481846020870162001fea565b9190910192915050565b600181811c908216806200222357607f821691505b6020821081036200224457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200229857600081815260208120601f850160051c81016020861015620022735750805b601f850160051c820191505b8181101562002294578281556001016200227f565b5050505b505050565b815167ffffffffffffffff811115620022ba57620022ba62001b0b565b620022d281620022cb84546200220e565b846200224a565b602080601f8311600181146200230a5760008415620022f15750858301515b600019600386901b1c1916600185901b17855562002294565b600085815260208120601f198616915b828110156200233b578886015182559484019460019091019084016200231a565b50858210156200235a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006200237f604083018562002010565b90506001600160a01b03831660208301529392505050565b6000808335601e19843603018112620023af57600080fd5b83018035915067ffffffffffffffff821115620023cb57600080fd5b60200191503681900382131562001c8257600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620015b057620015b0620023e1565b7f496e76616c696420626c6f636b2062696e64696e673a000000000000000000008152600084516200244781601685016020890162001fea565b80830190507f3a00000000000000000000000000000000000000000000000000000000000000806016830152855162002488816017850160208a0162001fea565b60179201918201528351620024a581601884016020880162001fea565b0160180195945050505050565b600060808201868352602086818501528560408501526080606085015281855180845260a08601915060a08160051b870101935082870160005b828110156200251e57609f198887030184526200250b86835162002010565b95509284019290840190600101620024ec565b50939a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015620022445760001960209190910360031b1b16919050565b6000600182016200257e576200257e620023e1565b5060010190565b6001600160a01b0380620025998362001bcc565b16835280620025ab6020840162001bcc565b1660208401525060408101356040830152606081013567ffffffffffffffff8116808214620025d957600080fd5b80606085015250505050565b620025f1818662002585565b60c060808201528260c082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156200262e57600080fd5b8360051b808660e085013760a0830193909352500160e0019392505050565b60808101620015b0828462002585565b60006bffffffffffffffffffffffff19808660601b168352808560601b1660148401525082516200269681602885016020870162001fea565b91909101602801949350505050565b813581556001808201602080850135601e19863603018112620026c757600080fd5b8501803567ffffffffffffffff811115620026e157600080fd5b8036038383011315620026f357600080fd5b6200270b816200270486546200220e565b866200224a565b6000601f8211600181146200274457600083156200272b57508382018501355b600019600385901b1c1916600184901b178655620027a0565b600086815260209020601f19841690835b82811015620027765786850188013582559387019390890190870162002755565b5084821015620027965760001960f88660031b161c198785880101351681555b50508683881b0186555b50505050505050604082013560028201555050565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351620027ef81601a85016020880162001fea565b8351908301906200280881601a84016020880162001fea565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611807806100a56000396000f3fe6080604052600436106100e15760003560e01c80639730886d1161007f578063b201246f11610059578063b201246f1461030e578063b6aed0cb1461032e578063e138a8d21461034e578063f2fde38b1461036e57610155565b80639730886d1461029557806399a3ad21146102b5578063b1454caa146102d557610155565b8063346633fb116100bb578063346633fb1461022557806336d2da9014610238578063715018a6146102585780638da5cb5b1461026d57610155565b80630fcfbd11146101a25780630fe9188e146101d557806333a88c72146101f557610155565b36610155576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3480156101ae57600080fd5b506101c26101bd366004610f80565b61038e565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101536101f0366004610fb5565b610428565b34801561020157600080fd5b50610215610210366004610f80565b61049e565b60405190151581526020016101cc565b610153610233366004610fe3565b6104f1565b34801561024457600080fd5b5061015361025336600461100f565b6105d4565b34801561026457600080fd5b50610153610683565b34801561027957600080fd5b506000546040516001600160a01b0390911681526020016101cc565b3480156102a157600080fd5b506101536102b036600461102c565b610697565b3480156102c157600080fd5b506101536102d0366004610fe3565b6107e9565b3480156102e157600080fd5b506102f56102f03660046110a2565b610899565b60405167ffffffffffffffff90911681526020016101cc565b34801561031a57600080fd5b5061015361032936600461119b565b6108fa565b34801561033a57600080fd5b506101536103493660046111fd565b610afc565b34801561035a57600080fd5b5061015361036936600461121f565b610b98565b34801561037a57600080fd5b5061015361038936600461100f565b610d78565b600080826040516020016103a291906112ce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806104215760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d69747465646044820152601760f91b6064820152608401610199565b9392505050565b610430610dcf565b600081815260046020526040812054900361048d5760405162461bcd60e51b815260206004820152601a60248201527f537461746520726f6f7420646f6573206e6f742065786973742e0000000000006044820152606401610199565b600090815260046020526040812055565b600080826040516020016104b291906112ce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906104e95750428111155b949350505050565b60003411801561050057508034145b6105725760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610199565b600061057d33610e15565b6040805134815267ffffffffffffffff831660208201529192506001600160a01b0385169133917f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b6910160405180910390a3505050565b6105dc610dcf565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610629576040519150601f19603f3d011682016040523d82523d6000602084013e61062e565b606091505b505090508061067f5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610199565b5050565b61068b610dcf565b6106956000610e73565b565b61069f610dcf565b60006106ab82426113cf565b90506000836040516020016106c091906112ce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561075b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610199565b600081815260016020908152604082208490556002919061077e9087018761100f565b6001600160a01b0316815260208101919091526040016000908120906107aa60808701606088016113e2565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107e182826115b0565b505050505050565b6107f1610dcf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461083e576040519150601f19603f3d011682016040523d82523d6000602084013e610843565b606091505b50509050806108945760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610199565b505050565b60006108a433610e15565b9050336001600160a01b03167fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759378288888888886040516108e9969594939291906116ca565b60405180910390a295945050505050565b600081815260046020526040812054900361096a5760405162461bcd60e51b815260206004820152602a60248201527f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6560448201526939b9b0b3b290313ab99760b11b6064820152608401610199565b6000818152600460205260409020544210156109d25760405162461bcd60e51b815260206004820152602160248201527f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965746044820152601760f91b6064820152608401610199565b6000846040516020016109e5919061171a565b60408051601f198184030181528282528051602091820120908301829052600160608401527f760000000000000000000000000000000000000000000000000000000000000060808401529082015260a001604051602081830303815290604052805190602001209050610a8384848484604051602001610a6891815260200190565b60405160208183030381529060405280519060200120610ed0565b610af55760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7560448201527f65207472616e73666572206d6573736167652e000000000000000000000000006064820152608401610199565b5050505050565b610b04610dcf565b60008281526004602052604090205415610b865760405162461bcd60e51b815260206004820152602560248201527f526f6f7420616c726561647920616464656420746f20746865206d657373616760448201527f65206275730000000000000000000000000000000000000000000000000000006064820152608401610199565b60009182526004602052604090912055565b6000818152600460205260408120549003610c085760405162461bcd60e51b815260206004820152602a60248201527f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6560448201526939b9b0b3b290313ab99760b11b6064820152608401610199565b600081815260046020526040902054421015610c705760405162461bcd60e51b815260206004820152602160248201527f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965746044820152601760f91b6064820152608401610199565b600084604051602001610c8391906112ce565b60408051601f198184030181528282528051602091820120908301829052600160608401527f6d0000000000000000000000000000000000000000000000000000000000000060808401529082015260a001604051602081830303815290604052805190602001209050610d0684848484604051602001610a6891815260200190565b610af55760405162461bcd60e51b815260206004820152603060248201527f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7360448201527f7320636861696e206d6573736167652e000000000000000000000000000000006064820152608401610199565b610d80610dcf565b6001600160a01b038116610dc3576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610199565b610dcc81610e73565b50565b6000546001600160a01b03163314610695576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610199565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610e48838561177a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082610ede868685610ee8565b1495945050505050565b600081815b84811015610f2b57610f1782878784818110610f0b57610f0b6117a2565b90506020020135610f34565b915080610f23816117b8565b915050610eed565b50949350505050565b6000818310610f50576000828152602084905260409020610f5f565b60008381526020839052604090205b90505b92915050565b600060c08284031215610f7a57600080fd5b50919050565b600060208284031215610f9257600080fd5b813567ffffffffffffffff811115610fa957600080fd5b6104e984828501610f68565b600060208284031215610fc757600080fd5b5035919050565b6001600160a01b0381168114610dcc57600080fd5b60008060408385031215610ff657600080fd5b823561100181610fce565b946020939093013593505050565b60006020828403121561102157600080fd5b813561042181610fce565b6000806040838503121561103f57600080fd5b823567ffffffffffffffff81111561105657600080fd5b61106285828601610f68565b95602094909401359450505050565b63ffffffff81168114610dcc57600080fd5b60ff81168114610dcc57600080fd5b803561109d81611083565b919050565b6000806000806000608086880312156110ba57600080fd5b85356110c581611071565b945060208601356110d581611071565b9350604086013567ffffffffffffffff808211156110f257600080fd5b818801915088601f83011261110657600080fd5b81358181111561111557600080fd5b89602082850101111561112757600080fd5b602083019550809450505050606086013561114181611083565b809150509295509295909350565b60008083601f84011261116157600080fd5b50813567ffffffffffffffff81111561117957600080fd5b6020830191508360208260051b850101111561119457600080fd5b9250929050565b60008060008084860360c08112156111b257600080fd5b60808112156111c057600080fd5b50849350608085013567ffffffffffffffff8111156111de57600080fd5b6111ea8782880161114f565b9598909750949560a00135949350505050565b6000806040838503121561121057600080fd5b50508035926020909101359150565b6000806000806060858703121561123557600080fd5b843567ffffffffffffffff8082111561124d57600080fd5b61125988838901610f68565b9550602087013591508082111561126f57600080fd5b5061127c8782880161114f565b9598909750949560400135949350505050565b67ffffffffffffffff81168114610dcc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600082356112df81610fce565b6001600160a01b03811660208401525060208301356112fd8161128f565b67ffffffffffffffff80821660408501526040850135915061131e82611071565b63ffffffff80831660608601526060860135925061133b83611071565b80831660808601525060808501359150601e1985360301821261135d57600080fd5b602091850191820191358181111561137457600080fd5b80360383131561138357600080fd5b60c060a086015261139860e0860182856112a5565b925050506113a860a08501611092565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6257610f626113b9565b6000602082840312156113f457600080fd5b813561042181611071565b60008135610f6281611071565b6000808335601e1984360301811261142357600080fd5b83018035915067ffffffffffffffff82111561143e57600080fd5b60200191503681900382131561119457600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061147d57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b601f82111561089457600081815260208120601f850160051c810160208610156114c45750805b601f850160051c820191505b818110156107e1578281556001016114d0565b67ffffffffffffffff8311156114fb576114fb611453565b61150f836115098354611469565b8361149d565b6000601f841160018114611543576000851561152b5750838201355b600019600387901b1c1916600186901b178355610af5565b600083815260209020601f19861690835b828110156115745786850135825560209485019460019092019101611554565b50868210156115915760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008135610f6281611083565b81356115bb81610fce565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff19821617835560208401356115f38161128f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061165183611071565b921760e09190911b90911617815561168961166e606084016113ff565b6001830163ffffffff821663ffffffff198254161781555050565b611696608083018361140c565b6116a48183600286016114e3565b505061067f6116b560a084016115a3565b6003830160ff821660ff198254161781555050565b67ffffffffffffffff87168152600063ffffffff808816602084015280871660408401525060a0606083015261170460a0830185876112a5565b905060ff83166080830152979650505050505050565b60808101823561172981610fce565b6001600160a01b03908116835260208401359061174582610fce565b1660208301526040838101359083015260608301356117638161128f565b67ffffffffffffffff811660608401525092915050565b67ffffffffffffffff81811683821601908082111561179b5761179b6113b9565b5092915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016117ca576117ca6113b9565b506001019056fea2646970667358221220a449a197632e1117b118ced8f7cf97a1ae44b160775ee146e59b50cbc1b8dcaa64736f6c63430008140033a2646970667358221220bf4e58f16d6eaf2970a5e166bc1c0e0daab80dff182f3b51307c2437f3f96b7564736f6c63430008140033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ImportantContractAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"RollupAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveRevoked\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"_rollupData\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"internalType\":\"structStructs.ValueTransferMessage\",\"name\":\"_msg\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"ExtractNativeValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetImportantContractKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"GrantSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_enclaveID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"IsSequencerEnclave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"RevokeSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"SetImportantContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_lastBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"crossChainHashes\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"addCrossChainMessagesRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"importantContractAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"importantContractKeys\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isWithdrawalSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"merkleMessageBus\",\"outputs\":[{\"internalType\":\"contractIMerkleTreeMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61413e80620000a06000396000f3fe60806040523480156200001157600080fd5b5060043610620001d05760003560e01c8063715018a61162000101578063a1a227fa11620000a3578063db5d91b1116200007a578063db5d91b11462000446578063e34fbfc81462000475578063e874eb20146200048a578063f2fde38b146200049e57600080fd5b8063a1a227fa146200040a578063a52f433c146200041e578063d4fab887146200042f57600080fd5b80638236a7ba11620000d85780638236a7ba146200038c5780638da5cb5b14620003b357806398077e8614620003e457600080fd5b8063715018a6146200036e5780637281099614620003785780638129fc1c146200038257600080fd5b806343348b2f11620001775780635371a216116200014e5780635371a216146200031057806368e1038314620003275780636a30d26c146200033e5780636b9707d6146200035757600080fd5b806343348b2f14620002c0578063440c953b14620002ef5780634766573814620002f957600080fd5b80632f0cb9e311620001ac5780632f0cb9e314620002225780633e60a22f14620002595780633f3f6a1814620002a957600080fd5b80620ddd2714620001d557806303e72e4814620001f25780632c77c81f146200020b575b600080fd5b620001df600a5481565b6040519081526020015b60405180910390f35b620002096200020336600462001c1b565b620004b5565b005b620002096200021c36600462001cbb565b620005c8565b620002486200023336600462001d5e565b60096020526000908152604090205460ff1681565b6040519015158152602001620001e9565b620002906200026a36600462001d78565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001e9565b62000209620002ba36600462001db9565b6200073c565b62000248620002d136600462001ed3565b6001600160a01b031660009081526020819052604090205460ff1690565b620001df60055481565b620002096200030a36600462001ed3565b620009c2565b620002096200032136600462001ef8565b62000a92565b620002096200033836600462001f92565b62000c9b565b6200034862000d88565b604051620001e9919062002070565b620002096200036836600462001ed3565b62000e6b565b6200020962000f31565b6200020962000f49565b6200020962000fcd565b620003a36200039d36600462001d5e565b620011ac565b604051620001e9929190620020d6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031662000290565b620003fb620003f536600462001d5e565b6200129c565b604051620001e991906200211c565b60075462000290906001600160a01b031681565b600454610100900460ff1662000248565b620002096200044036600462002131565b62001351565b620002486200045736600462001ed3565b6001600160a01b031660009081526001602052604090205460ff1690565b6200020962000486366004620021dc565b5050565b60085462000290906001600160a01b031681565b62000209620004af36600462001ed3565b620014e4565b620004bf62001541565b60006001600160a01b0316600383604051620004dc919062002222565b908152604051908190036020019020546001600160a01b0316036200053b57600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01620005398382620022cf565b505b806003836040516200054e919062002222565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590620005bc90849084906200239c565b60405180910390a15050565b60006200061a8535620005df6020880188620023c9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620015b892505050565b6001600160a01b03811660009081526020819052604090205490915060ff166200068b5760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f742061747465737465640000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16620006f55760405162461bcd60e51b815260206004820152601960248201527f656e636c6176654944206e6f7420612073657175656e63657200000000000000604482015260640162000682565b6200070085620015e8565b604051853581527fd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58906020015b60405180910390a15050505050565b620007498460ff62002429565b4311156200079a5760405162461bcd60e51b815260206004820152601560248201527f426c6f636b2062696e64696e6720746f6f206f6c640000000000000000000000604482015260640162000682565b848440146200080157620007ae4362001620565b620007b98662001620565b620007c5864062001620565b604051602001620007d9939291906200243f565b60408051601f198184030181529082905262461bcd60e51b825262000682916004016200211c565b60006200087387878787604051602001620008209493929190620024e4565b6040516020818303038152906040528051906020012084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620015b892505050565b6001600160a01b03811660009081526020819052604090205490915060ff16620008e05760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f7420617474657374656400000000000000000000604482015260640162000682565b600a87905560005b8451811015620009b85760085485516001600160a01b039091169063b6aed0cb908790849081106200091e576200091e62002560565b6020026020010151620009319062002576565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152426024820152604401600060405180830381600087803b1580156200098957600080fd5b505af11580156200099e573d6000803e3d6000fd5b505050508080620009af906200259b565b915050620008e8565b5050505050505050565b620009cc62001541565b6001600160a01b03811660009081526020819052604090205460ff1662000a365760405162461bcd60e51b815260206004820152601660248201527f656e636c6176654944206e6f7420617474657374656400000000000000000000604482015260640162000682565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093691015b60405180910390a150565b6008546040517fb201246f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b201246f9062000ae390879087908790879060040162002617565b60006040518083038186803b15801562000afc57600080fd5b505afa15801562000b11573d6000803e3d6000fd5b5050505060008460405160200162000b2a91906200267f565b60408051601f1981840301815291815281516020928301206000818152600990935291205490915060ff161562000ba45760405162461bcd60e51b815260206004820152601860248201527f7769746864726177616c20616c7265616479207370656e740000000000000000604482015260640162000682565b6001600960008760405160200162000bbd91906200267f565b60408051808303601f190181529181528151602092830120835282820193909352908201600020805460ff1916931515939093179092556007546001600160a01b0316916399a3ad219162000c189190890190890162001ed3565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301528801356024820152604401600060405180830381600087803b15801562000c7b57600080fd5b505af115801562000c90573d6000803e3d6000fd5b505050505050505050565b60045460ff161562000d165760405162461bcd60e51b815260206004820152602260248201527f6e6574776f726b2073656372657420616c726561647920696e697469616c697a60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840162000682565b60048054600160ff1991821681179092556001600160a01b038716600081815260208181526040808320805486168717905585825291829020805490941690941790925590519081527ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093691016200072d565b60606002805480602002602001604051908101604052809291908181526020016000905b8282101562000e6257838290600052602060002001805462000dce9062002240565b80601f016020809104026020016040519081016040528092919081815260200182805462000dfc9062002240565b801562000e4d5780601f1062000e215761010080835404028352916020019162000e4d565b820191906000526020600020905b81548152906001019060200180831162000e2f57829003601f168201915b50505050508152602001906001019062000dac565b50505050905090565b62000e7562001541565b6001600160a01b03811660009081526001602052604090205460ff1662000edf5760405162461bcd60e51b815260206004820152601960248201527f656e636c6176654944206e6f7420612073657175656e63657200000000000000604482015260640162000682565b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f0f279980343c7ca542fde9fa5396555068efb5cd560d9cf9c191aa2911079b47910162000a87565b62000f3b62001541565b62000f476000620016c7565b565b62000f5362001541565b6007546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801562000fb257600080fd5b505af115801562000fc7573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620010195750825b905060008267ffffffffffffffff166001148015620010375750303b155b90508115801562001046575080155b156200107e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620010b357845468ff00000000000000001916680100000000000000001785555b620010be3362001745565b6000600555604051620010d19062001b2f565b604051809103906000f080158015620010ee573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039390931692831790915560078054909116821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18315620011a557845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016200072d565b5050505050565b604080516060808201835260008083526020808401839052838501829052858252600681528482208551938401909552845483526001850180549295869493909284019190620011fc9062002240565b80601f01602080910402602001604051908101604052809291908181526020018280546200122a9062002240565b80156200127b5780601f106200124f576101008083540402835291602001916200127b565b820191906000526020600020905b8154815290600101906020018083116200125d57829003601f168201915b50505091835250506002919091015460209091015280519094149492505050565b60028181548110620012ad57600080fd5b906000526020600020016000915090508054620012ca9062002240565b80601f0160208091040260200160405190810160405280929190818152602001828054620012f89062002240565b8015620013495780601f106200131d5761010080835404028352916020019162001349565b820191906000526020600020905b8154815290600101906020018083116200132b57829003601f168201915b505050505081565b6001600160a01b03851660009081526020819052604090205460ff1680620013e25760405162461bcd60e51b815260206004820152602360248201527f726573706f6e64696e67206174746573746572206973206e6f7420617474657360448201527f7465640000000000000000000000000000000000000000000000000000000000606482015260840162000682565b8115620014b95760006200141b87878660405160200162001406939291906200268f565b6040516020818303038152906040526200175a565b905060006200142b8287620015b8565b9050876001600160a01b0316816001600160a01b031614620014b65760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000682565b50505b5050506001600160a01b039091166000908152602081905260409020805460ff191660011790555050565b620014ee62001541565b6001600160a01b03811662001533576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000682565b6200153e81620016c7565b50565b33620015747f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000f47576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000682565b600080600080620015ca868662001799565b925092509250620015dc8282620017ea565b50909150505b92915050565b803560009081526006602052604090208190620016068282620026d7565b5050600554604082013511156200153e5760400135600555565b606060006200162f8362001900565b600101905060008167ffffffffffffffff81111562001652576200165262001b3d565b6040519080825280601f01601f1916602001820160405280156200167d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200168757509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6200174f620019e9565b6200153e8162001a51565b600062001768825162001620565b826040516020016200177c929190620027e7565b604051602081830303815290604052805190602001209050919050565b60008060008351604103620017d75760208401516040850151606086015160001a620017c88882858562001a5b565b955095509550505050620017e3565b50508151600091506002905b9250925092565b600082600381111562001801576200180162002846565b036200180b575050565b600182600381111562001822576200182262002846565b036200185a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562001871576200187162002846565b03620018ad576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000682565b6003826003811115620018c457620018c462002846565b0362000486576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000682565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200194a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062001977576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200199657662386f26fc10000830492506010015b6305f5e1008310620019af576305f5e100830492506008015b6127108310620019c457612710830492506004015b60648310620019d7576064830492506002015b600a8310620015e25760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000f47576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620014ee620019e9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111562001a98575060009150600390508262001b25565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001aed573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811662001b1b5750600092506001915082905062001b25565b9250600091508190505b9450945094915050565b6118ac806200285d83390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562001b7f5762001b7f62001b3d565b604052919050565b600082601f83011262001b9957600080fd5b813567ffffffffffffffff81111562001bb65762001bb662001b3d565b62001bcb601f8201601f191660200162001b53565b81815284602083860101111562001be157600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b038116811462001c1657600080fd5b919050565b6000806040838503121562001c2f57600080fd5b823567ffffffffffffffff81111562001c4757600080fd5b62001c558582860162001b87565b92505062001c666020840162001bfe565b90509250929050565b60008083601f84011262001c8257600080fd5b50813567ffffffffffffffff81111562001c9b57600080fd5b60208301915083602082850101111562001cb457600080fd5b9250929050565b6000806000806060858703121562001cd257600080fd5b843567ffffffffffffffff8082111562001ceb57600080fd5b908601906060828903121562001d0057600080fd5b9094506020860135908082111562001d1757600080fd5b62001d258883890162001c6f565b9095509350604087013591508082111562001d3f57600080fd5b5085016020818803121562001d5357600080fd5b939692955090935050565b60006020828403121562001d7157600080fd5b5035919050565b60006020828403121562001d8b57600080fd5b813567ffffffffffffffff81111562001da357600080fd5b62001db18482850162001b87565b949350505050565b60008060008060008060a0878903121562001dd357600080fd5b86359550602080880135955060408801359450606088013567ffffffffffffffff8082111562001e0257600080fd5b818a0191508a601f83011262001e1757600080fd5b81358181111562001e2c5762001e2c62001b3d565b8060051b62001e3d85820162001b53565b918252838101850191858101908e84111562001e5857600080fd5b86860192505b8383101562001e9757848335111562001e7657600080fd5b62001e878f88853589010162001b87565b8252918601919086019062001e5e565b985050505060808a013592508083111562001eb157600080fd5b505062001ec189828a0162001c6f565b979a9699509497509295939492505050565b60006020828403121562001ee657600080fd5b62001ef18262001bfe565b9392505050565b60008060008084860360c081121562001f1057600080fd5b608081121562001f1f57600080fd5b50849350608085013567ffffffffffffffff8082111562001f3f57600080fd5b818701915087601f83011262001f5457600080fd5b81358181111562001f6457600080fd5b8860208260051b850101111562001f7a57600080fd5b95986020929092019750949560a00135945092505050565b60008060008060006060868803121562001fab57600080fd5b62001fb68662001bfe565b9450602086013567ffffffffffffffff8082111562001fd457600080fd5b62001fe289838a0162001c6f565b9096509450604088013591508082111562001ffc57600080fd5b506200200b8882890162001c6f565b969995985093965092949392505050565b60005b83811015620020395781810151838201526020016200201f565b50506000910152565b600081518084526200205c8160208601602086016200201c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620020c957603f19888603018452620020b685835162002042565b9450928501929085019060010162002097565b5092979650505050505050565b82151581526040602082015281516040820152600060208301516060808401526200210560a084018262002042565b905060408401516080840152809150509392505050565b60208152600062001ef1602083018462002042565b600080600080600060a086880312156200214a57600080fd5b620021558662001bfe565b9450620021656020870162001bfe565b9350604086013567ffffffffffffffff808211156200218357600080fd5b6200219189838a0162001b87565b94506060880135915080821115620021a857600080fd5b50620021b78882890162001b87565b92505060808601358015158114620021ce57600080fd5b809150509295509295909350565b60008060208385031215620021f057600080fd5b823567ffffffffffffffff8111156200220857600080fd5b620022168582860162001c6f565b90969095509350505050565b60008251620022368184602087016200201c565b9190910192915050565b600181811c908216806200225557607f821691505b6020821081036200227657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620022ca57600081815260208120601f850160051c81016020861015620022a55750805b601f850160051c820191505b81811015620022c657828155600101620022b1565b5050505b505050565b815167ffffffffffffffff811115620022ec57620022ec62001b3d565b6200230481620022fd845462002240565b846200227c565b602080601f8311600181146200233c5760008415620023235750858301515b600019600386901b1c1916600185901b178555620022c6565b600085815260208120601f198616915b828110156200236d578886015182559484019460019091019084016200234c565b50858210156200238c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000620023b1604083018562002042565b90506001600160a01b03831660208301529392505050565b6000808335601e19843603018112620023e157600080fd5b83018035915067ffffffffffffffff821115620023fd57600080fd5b60200191503681900382131562001cb457600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620015e257620015e262002413565b7f496e76616c696420626c6f636b2062696e64696e673a00000000000000000000815260008451620024798160168501602089016200201c565b80830190507f3a000000000000000000000000000000000000000000000000000000000000008060168301528551620024ba816017850160208a016200201c565b60179201918201528351620024d78160188401602088016200201c565b0160180195945050505050565b600060808201868352602086818501528560408501526080606085015281855180845260a08601915060a08160051b870101935082870160005b828110156200255057609f198887030184526200253d86835162002042565b955092840192908401906001016200251e565b50939a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015620022765760001960209190910360031b1b16919050565b600060018201620025b057620025b062002413565b5060010190565b6001600160a01b0380620025cb8362001bfe565b16835280620025dd6020840162001bfe565b1660208401525060408101356040830152606081013567ffffffffffffffff81168082146200260b57600080fd5b80606085015250505050565b620026238186620025b7565b60c060808201528260c082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156200266057600080fd5b8360051b808660e085013760a0830193909352500160e0019392505050565b60808101620015e28284620025b7565b60006bffffffffffffffffffffffff19808660601b168352808560601b166014840152508251620026c88160288501602087016200201c565b91909101602801949350505050565b813581556001808201602080850135601e19863603018112620026f957600080fd5b8501803567ffffffffffffffff8111156200271357600080fd5b80360383830113156200272557600080fd5b6200273d8162002736865462002240565b866200227c565b6000601f8211600181146200277657600083156200275d57508382018501355b600019600385901b1c1916600184901b178655620027d2565b600086815260209020601f19841690835b82811015620027a85786850188013582559387019390890190870162002787565b5084821015620027c85760001960f88660031b161c198785880101351681555b50508683881b0186555b50505050505050604082013560028201555050565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152600083516200282181601a8501602088016200201c565b8351908301906200283a81601a8401602088016200201c565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611807806100a56000396000f3fe6080604052600436106100e15760003560e01c80639730886d1161007f578063b201246f11610059578063b201246f1461030e578063b6aed0cb1461032e578063e138a8d21461034e578063f2fde38b1461036e57610155565b80639730886d1461029557806399a3ad21146102b5578063b1454caa146102d557610155565b8063346633fb116100bb578063346633fb1461022557806336d2da9014610238578063715018a6146102585780638da5cb5b1461026d57610155565b80630fcfbd11146101a25780630fe9188e146101d557806333a88c72146101f557610155565b36610155576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3480156101ae57600080fd5b506101c26101bd366004610f80565b61038e565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101536101f0366004610fb5565b610428565b34801561020157600080fd5b50610215610210366004610f80565b61049e565b60405190151581526020016101cc565b610153610233366004610fe3565b6104f1565b34801561024457600080fd5b5061015361025336600461100f565b6105d4565b34801561026457600080fd5b50610153610683565b34801561027957600080fd5b506000546040516001600160a01b0390911681526020016101cc565b3480156102a157600080fd5b506101536102b036600461102c565b610697565b3480156102c157600080fd5b506101536102d0366004610fe3565b6107e9565b3480156102e157600080fd5b506102f56102f03660046110a2565b610899565b60405167ffffffffffffffff90911681526020016101cc565b34801561031a57600080fd5b5061015361032936600461119b565b6108fa565b34801561033a57600080fd5b506101536103493660046111fd565b610afc565b34801561035a57600080fd5b5061015361036936600461121f565b610b98565b34801561037a57600080fd5b5061015361038936600461100f565b610d78565b600080826040516020016103a291906112ce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806104215760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d69747465646044820152601760f91b6064820152608401610199565b9392505050565b610430610dcf565b600081815260046020526040812054900361048d5760405162461bcd60e51b815260206004820152601a60248201527f537461746520726f6f7420646f6573206e6f742065786973742e0000000000006044820152606401610199565b600090815260046020526040812055565b600080826040516020016104b291906112ce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906104e95750428111155b949350505050565b60003411801561050057508034145b6105725760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610199565b600061057d33610e15565b6040805134815267ffffffffffffffff831660208201529192506001600160a01b0385169133917f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b6910160405180910390a3505050565b6105dc610dcf565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610629576040519150601f19603f3d011682016040523d82523d6000602084013e61062e565b606091505b505090508061067f5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610199565b5050565b61068b610dcf565b6106956000610e73565b565b61069f610dcf565b60006106ab82426113cf565b90506000836040516020016106c091906112ce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561075b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610199565b600081815260016020908152604082208490556002919061077e9087018761100f565b6001600160a01b0316815260208101919091526040016000908120906107aa60808701606088016113e2565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107e182826115b0565b505050505050565b6107f1610dcf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461083e576040519150601f19603f3d011682016040523d82523d6000602084013e610843565b606091505b50509050806108945760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610199565b505050565b60006108a433610e15565b9050336001600160a01b03167fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759378288888888886040516108e9969594939291906116ca565b60405180910390a295945050505050565b600081815260046020526040812054900361096a5760405162461bcd60e51b815260206004820152602a60248201527f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6560448201526939b9b0b3b290313ab99760b11b6064820152608401610199565b6000818152600460205260409020544210156109d25760405162461bcd60e51b815260206004820152602160248201527f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965746044820152601760f91b6064820152608401610199565b6000846040516020016109e5919061171a565b60408051601f198184030181528282528051602091820120908301829052600160608401527f760000000000000000000000000000000000000000000000000000000000000060808401529082015260a001604051602081830303815290604052805190602001209050610a8384848484604051602001610a6891815260200190565b60405160208183030381529060405280519060200120610ed0565b610af55760405162461bcd60e51b815260206004820152603360248201527f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7560448201527f65207472616e73666572206d6573736167652e000000000000000000000000006064820152608401610199565b5050505050565b610b04610dcf565b60008281526004602052604090205415610b865760405162461bcd60e51b815260206004820152602560248201527f526f6f7420616c726561647920616464656420746f20746865206d657373616760448201527f65206275730000000000000000000000000000000000000000000000000000006064820152608401610199565b60009182526004602052604090912055565b6000818152600460205260408120549003610c085760405162461bcd60e51b815260206004820152602a60248201527f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6560448201526939b9b0b3b290313ab99760b11b6064820152608401610199565b600081815260046020526040902054421015610c705760405162461bcd60e51b815260206004820152602160248201527f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965746044820152601760f91b6064820152608401610199565b600084604051602001610c8391906112ce565b60408051601f198184030181528282528051602091820120908301829052600160608401527f6d0000000000000000000000000000000000000000000000000000000000000060808401529082015260a001604051602081830303815290604052805190602001209050610d0684848484604051602001610a6891815260200190565b610af55760405162461bcd60e51b815260206004820152603060248201527f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7360448201527f7320636861696e206d6573736167652e000000000000000000000000000000006064820152608401610199565b610d80610dcf565b6001600160a01b038116610dc3576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610199565b610dcc81610e73565b50565b6000546001600160a01b03163314610695576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610199565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610e48838561177a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082610ede868685610ee8565b1495945050505050565b600081815b84811015610f2b57610f1782878784818110610f0b57610f0b6117a2565b90506020020135610f34565b915080610f23816117b8565b915050610eed565b50949350505050565b6000818310610f50576000828152602084905260409020610f5f565b60008381526020839052604090205b90505b92915050565b600060c08284031215610f7a57600080fd5b50919050565b600060208284031215610f9257600080fd5b813567ffffffffffffffff811115610fa957600080fd5b6104e984828501610f68565b600060208284031215610fc757600080fd5b5035919050565b6001600160a01b0381168114610dcc57600080fd5b60008060408385031215610ff657600080fd5b823561100181610fce565b946020939093013593505050565b60006020828403121561102157600080fd5b813561042181610fce565b6000806040838503121561103f57600080fd5b823567ffffffffffffffff81111561105657600080fd5b61106285828601610f68565b95602094909401359450505050565b63ffffffff81168114610dcc57600080fd5b60ff81168114610dcc57600080fd5b803561109d81611083565b919050565b6000806000806000608086880312156110ba57600080fd5b85356110c581611071565b945060208601356110d581611071565b9350604086013567ffffffffffffffff808211156110f257600080fd5b818801915088601f83011261110657600080fd5b81358181111561111557600080fd5b89602082850101111561112757600080fd5b602083019550809450505050606086013561114181611083565b809150509295509295909350565b60008083601f84011261116157600080fd5b50813567ffffffffffffffff81111561117957600080fd5b6020830191508360208260051b850101111561119457600080fd5b9250929050565b60008060008084860360c08112156111b257600080fd5b60808112156111c057600080fd5b50849350608085013567ffffffffffffffff8111156111de57600080fd5b6111ea8782880161114f565b9598909750949560a00135949350505050565b6000806040838503121561121057600080fd5b50508035926020909101359150565b6000806000806060858703121561123557600080fd5b843567ffffffffffffffff8082111561124d57600080fd5b61125988838901610f68565b9550602087013591508082111561126f57600080fd5b5061127c8782880161114f565b9598909750949560400135949350505050565b67ffffffffffffffff81168114610dcc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600082356112df81610fce565b6001600160a01b03811660208401525060208301356112fd8161128f565b67ffffffffffffffff80821660408501526040850135915061131e82611071565b63ffffffff80831660608601526060860135925061133b83611071565b80831660808601525060808501359150601e1985360301821261135d57600080fd5b602091850191820191358181111561137457600080fd5b80360383131561138357600080fd5b60c060a086015261139860e0860182856112a5565b925050506113a860a08501611092565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6257610f626113b9565b6000602082840312156113f457600080fd5b813561042181611071565b60008135610f6281611071565b6000808335601e1984360301811261142357600080fd5b83018035915067ffffffffffffffff82111561143e57600080fd5b60200191503681900382131561119457600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061147d57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b601f82111561089457600081815260208120601f850160051c810160208610156114c45750805b601f850160051c820191505b818110156107e1578281556001016114d0565b67ffffffffffffffff8311156114fb576114fb611453565b61150f836115098354611469565b8361149d565b6000601f841160018114611543576000851561152b5750838201355b600019600387901b1c1916600186901b178355610af5565b600083815260209020601f19861690835b828110156115745786850135825560209485019460019092019101611554565b50868210156115915760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008135610f6281611083565b81356115bb81610fce565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff19821617835560208401356115f38161128f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061165183611071565b921760e09190911b90911617815561168961166e606084016113ff565b6001830163ffffffff821663ffffffff198254161781555050565b611696608083018361140c565b6116a48183600286016114e3565b505061067f6116b560a084016115a3565b6003830160ff821660ff198254161781555050565b67ffffffffffffffff87168152600063ffffffff808816602084015280871660408401525060a0606083015261170460a0830185876112a5565b905060ff83166080830152979650505050505050565b60808101823561172981610fce565b6001600160a01b03908116835260208401359061174582610fce565b1660208301526040838101359083015260608301356117638161128f565b67ffffffffffffffff811660608401525092915050565b67ffffffffffffffff81811683821601908082111561179b5761179b6113b9565b5092915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016117ca576117ca6113b9565b506001019056fea2646970667358221220a449a197632e1117b118ced8f7cf97a1ae44b160775ee146e59b50cbc1b8dcaa64736f6c63430008140033a264697066735822122004ad9e0c30b943964e74350866e1fd532c6f29760dc01100bb23ad394323ba7064736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. @@ -1465,6 +1465,140 @@ func (_ManagementContract *ManagementContractFilterer) ParseOwnershipTransferred return event, nil } +// ManagementContractRollupAddedIterator is returned from FilterRollupAdded and is used to iterate over the raw logs and unpacked data for RollupAdded events raised by the ManagementContract contract. +type ManagementContractRollupAddedIterator struct { + Event *ManagementContractRollupAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ManagementContractRollupAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ManagementContractRollupAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ManagementContractRollupAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ManagementContractRollupAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ManagementContractRollupAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ManagementContractRollupAdded represents a RollupAdded event raised by the ManagementContract contract. +type ManagementContractRollupAdded struct { + RollupHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRollupAdded is a free log retrieval operation binding the contract event 0xd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58. +// +// Solidity: event RollupAdded(bytes32 rollupHash) +func (_ManagementContract *ManagementContractFilterer) FilterRollupAdded(opts *bind.FilterOpts) (*ManagementContractRollupAddedIterator, error) { + + logs, sub, err := _ManagementContract.contract.FilterLogs(opts, "RollupAdded") + if err != nil { + return nil, err + } + return &ManagementContractRollupAddedIterator{contract: _ManagementContract.contract, event: "RollupAdded", logs: logs, sub: sub}, nil +} + +// WatchRollupAdded is a free log subscription operation binding the contract event 0xd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58. +// +// Solidity: event RollupAdded(bytes32 rollupHash) +func (_ManagementContract *ManagementContractFilterer) WatchRollupAdded(opts *bind.WatchOpts, sink chan<- *ManagementContractRollupAdded) (event.Subscription, error) { + + logs, sub, err := _ManagementContract.contract.WatchLogs(opts, "RollupAdded") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ManagementContractRollupAdded) + if err := _ManagementContract.contract.UnpackLog(event, "RollupAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRollupAdded is a log parse operation binding the contract event 0xd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58. +// +// Solidity: event RollupAdded(bytes32 rollupHash) +func (_ManagementContract *ManagementContractFilterer) ParseRollupAdded(log types.Log) (*ManagementContractRollupAdded, error) { + event := new(ManagementContractRollupAdded) + if err := _ManagementContract.contract.UnpackLog(event, "RollupAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ManagementContractSequencerEnclaveGrantedIterator is returned from FilterSequencerEnclaveGranted and is used to iterate over the raw logs and unpacked data for SequencerEnclaveGranted events raised by the ManagementContract contract. type ManagementContractSequencerEnclaveGrantedIterator struct { Event *ManagementContractSequencerEnclaveGranted // Event containing the contract specifics and raw log diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index 3226a4d80c..9d8bef28bc 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -26,6 +26,7 @@ contract ManagementContract is Initializable, OwnableUpgradeable { event ImportantContractAddressUpdated(string key, address newAddress); event SequencerEnclaveGranted(address enclaveID); event SequencerEnclaveRevoked(address enclaveID); + event RollupAdded(bytes32 rollupHash); // mapping of enclaveID to whether it is attested mapping(address => bool) private attested; @@ -114,6 +115,7 @@ contract ManagementContract is Initializable, OwnableUpgradeable { require(sequencerEnclave[enclaveID], "enclaveID not a sequencer"); AppendRollup(r); + emit RollupAdded(r.Hash); } // InitializeNetworkSecret kickstarts the network secret, can only be called once diff --git a/go/enclave/crosschain/common.go b/go/enclave/crosschain/common.go index c3dd6aa101..0acd0025bc 100644 --- a/go/enclave/crosschain/common.go +++ b/go/enclave/crosschain/common.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "errors" + "fmt" "strings" "github.com/ethereum/go-ethereum/crypto" @@ -108,11 +109,16 @@ func convertLogsToMessages(logs []types.Log, eventName string, messageBusABI abi messages := make(common.CrossChainMessages, 0) for _, log := range logs { + if len(log.Topics) != 2 { + return nil, fmt.Errorf("invalid number of topics in log: %d", len(log.Topics)) + } + var event MessageBus.MessageBusLogMessagePublished err := messageBusABI.UnpackIntoInterface(&event, eventName, log.Data) if err != nil { return nil, err } + event.Sender = gethcommon.BytesToAddress(log.Topics[1].Bytes()) msg := createCrossChainMessage(event) messages = append(messages, msg) @@ -137,6 +143,10 @@ func ConvertLogsToValueTransfers(logs []types.Log, eventName string, messageBusA messages := make(common.ValueTransferEvents, 0) for _, log := range logs { + if len(log.Topics) != 3 { + return nil, fmt.Errorf("invalid number of topics in log: %d", len(log.Topics)) + } + var event MessageBus.MessageBusValueTransfer err := messageBusABI.UnpackIntoInterface(&event, eventName, log.Data) if err != nil { @@ -144,8 +154,8 @@ func ConvertLogsToValueTransfers(logs []types.Log, eventName string, messageBusA } messages = append(messages, common.ValueTransferEvent{ - Sender: event.Sender, - Receiver: event.Receiver, + Sender: gethcommon.BytesToAddress(log.Topics[1].Bytes()), + Receiver: gethcommon.BytesToAddress(log.Topics[2].Bytes()), Amount: event.Amount, Sequence: event.Sequence, })