From 8099ea540b48f05704bfcad205afa5ed6faa88c0 Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Tue, 19 Dec 2023 13:30:06 +0200 Subject: [PATCH 1/6] Upgraded open zeppelin. --- contracts/hardhat.config.ts | 5 ++++- contracts/package.json | 3 ++- contracts/src/management/ManagementContract.sol | 10 +++++++--- contracts/src/messaging/MessageBus.sol | 3 +++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 18011680fe..dc76dfbf49 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -20,7 +20,7 @@ const config: HardhatUserConfig = { sources: "src" }, solidity: { - version: "0.8.9", + version: "0.8.20", settings: { optimizer: { enabled: true, @@ -55,6 +55,9 @@ const config: HardhatUserConfig = { warnings : { '*' : { default: 'error' + }, + 'src/testing/**/*': { + default: 'off' } } }; diff --git a/contracts/package.json b/contracts/package.json index a71aa4bf90..ebe6d77049 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -11,7 +11,6 @@ "license": "ISC", "devDependencies": { "@nomicfoundation/hardhat-toolbox": "~2.0.0", - "@openzeppelin/contracts": "4.5.0", "@openzeppelin/hardhat-upgrades": "^1.21.0", "@solidstate/hardhat-bytecode-exporter": "^1.1.1", "hardhat": "~2.12.4", @@ -22,6 +21,8 @@ "typescript": "^4.9.4" }, "dependencies": { + "@openzeppelin/contracts": "^5.0.1", + "@openzeppelin/contracts-upgradeable": "^5.0.1", "hardhat-ignore-warnings": "^0.2.6" } } diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index f5b33bbcd6..5eb800650a 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -4,6 +4,7 @@ pragma solidity >=0.7.0 <0.9.0; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import "./Structs.sol"; @@ -11,7 +12,10 @@ import * as MessageBus from "../messaging/MessageBus.sol"; contract ManagementContract is Ownable, Initializable { - constructor() { + using MessageHashUtils for bytes32; + using MessageHashUtils for bytes; + + constructor() Ownable(msg.sender) { // _disableInitializers(); //todo @siliev - figure out why the solidity compiler cant find this. Perhaps OZ needs a version upgrade? } @@ -117,10 +121,10 @@ contract ManagementContract is Ownable, Initializable { // signature = f(PubKey, PrivateKey, message) // address = f(signature, message) // valid if attesterID = address - bytes32 calculatedHashSigned = ECDSA.toEthSignedMessageHash(abi.encodePacked(attesterID, requesterID, hostAddress, responseSecret)); + bytes32 calculatedHashSigned = abi.encodePacked(attesterID, requesterID, hostAddress, responseSecret).toEthSignedMessageHash(); address recoveredAddrSignedCalculated = ECDSA.recover(calculatedHashSigned, attesterSig); - require(recoveredAddrSignedCalculated == attesterID, "calculated address and attesterID dont match"); + require(recoveredAddrSignedCalculated == attesterID, "calculated address and attesterID dont match"); } // mark the requesterID aggregator as an attested aggregator and store its host address diff --git a/contracts/src/messaging/MessageBus.sol b/contracts/src/messaging/MessageBus.sol index cbab6063bd..1bfaf81dc6 100644 --- a/contracts/src/messaging/MessageBus.sol +++ b/contracts/src/messaging/MessageBus.sol @@ -7,6 +7,9 @@ import "./Structs.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract MessageBus is IMessageBus, Ownable { + + constructor() Ownable(msg.sender) {} + function messageFee() internal virtual returns (uint256) { return 0; } From 5872e66614e4757f0ddc99e318d71295dd5ad0ae Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Tue, 19 Dec 2023 13:52:07 +0200 Subject: [PATCH 2/6] Fix for build. --- .../ConstantSupplyERC20.go | 100 ++++------- .../CrossChainMessenger.go | 138 +++++++++++++++- .../EthereumBridge/EthereumBridge.go | 138 +++++++++++++++- .../GasConsumerBalance/GasConsumerBalance.go | 2 +- .../ManagementContract/ManagementContract.go | 138 +++++++++++++++- contracts/generated/MessageBus/MessageBus.go | 4 +- contracts/generated/ObsERC20/ObsERC20.go | 100 ++++------- .../generated/ObscuroBridge/ObscuroBridge.go | 156 ++++++++++++++++-- .../generated/WrappedERC20/WrappedERC20.go | 118 +++++-------- 9 files changed, 652 insertions(+), 242 deletions(-) diff --git a/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go b/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go index b936e0128b..50f6473d43 100644 --- a/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go +++ b/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go @@ -31,8 +31,8 @@ var ( // ConstantSupplyERC20MetaData contains all meta data concerning the ConstantSupplyERC20 contract. var ConstantSupplyERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162000d4638038062000d468339810160408190526200003491620002dc565b8251839083906200004d90600390602085019062000169565b5080516200006390600490602084019062000169565b5050506200007833826200008160201b60201c565b505050620003b3565b6001600160a01b038216620000dc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f091906200034f565b90915550506001600160a01b038216600090815260208190526040812080548392906200011f9084906200034f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001779062000376565b90600052602060002090601f0160209004810192826200019b5760008555620001e6565b82601f10620001b657805160ff1916838001178555620001e6565b82800160010185558215620001e6579182015b82811115620001e6578251825591602001919060010190620001c9565b50620001f4929150620001f8565b5090565b5b80821115620001f45760008155600101620001f9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023757600080fd5b81516001600160401b03808211156200025457620002546200020f565b604051601f8301601f19908116603f011681019082821181831017156200027f576200027f6200020f565b816040528381526020925086838588010111156200029c57600080fd5b600091505b83821015620002c05785820183015181830184015290820190620002a1565b83821115620002d25760008385830101525b9695505050505050565b600080600060608486031215620002f257600080fd5b83516001600160401b03808211156200030a57600080fd5b620003188783880162000225565b945060208601519150808211156200032f57600080fd5b506200033e8682870162000225565b925050604084015190509250925092565b600082198211156200037157634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200038b57607f821691505b60208210811415620003ad57634e487b7160e01b600052602260045260246000fd5b50919050565b61098380620003c36000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e391906107c0565b60405180910390f35b6100ff6100fa366004610831565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f36600461085b565b610290565b604051601281526020016100e3565b6100ff610151366004610831565b6102b4565b610113610164366004610897565b6001600160a01b031660009081526020819052604090205490565b6100d66102f3565b6100ff610195366004610831565b610302565b6100ff6101a8366004610831565b6103b1565b6101136101bb3660046108b9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f5906108ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610221906108ec565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103bf565b5060019392505050565b60003361029e858285610517565b6102a98585856105a9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102ee908790610927565b6103bf565b6060600480546101f5906108ec565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102a982868684036103bf565b6000336102868185856105a9565b6001600160a01b03831661043a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166104b65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146105a357818110156105965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039b565b6105a384848484036103bf565b50505050565b6001600160a01b0383166106255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b0382166106a15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b038316600090815260208190526040902054818110156107305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610767908490610927565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107b391815260200190565b60405180910390a36105a3565b600060208083528351808285015260005b818110156107ed578581018301518582016040015282016107d1565b818111156107ff576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461082c57600080fd5b919050565b6000806040838503121561084457600080fd5b61084d83610815565b946020939093013593505050565b60008060006060848603121561087057600080fd5b61087984610815565b925061088760208501610815565b9150604084013590509250925092565b6000602082840312156108a957600080fd5b6108b282610815565b9392505050565b600080604083850312156108cc57600080fd5b6108d583610815565b91506108e360208401610815565b90509250929050565b600181811c9082168061090057607f821691505b6020821081141561092157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561094857634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122045e33060b04ab9b33e2204ef10fd16fc4792ded9f8466343740f87d57b51cfbd64736f6c63430008090033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801562000010575f80fd5b5060405162000c3038038062000c3083398101604081905262000033916200029d565b8282600362000043838262000397565b50600462000052828262000397565b5050506200006733826200007060201b60201c565b50505062000485565b6001600160a01b0382166200009f5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b620000ac5f8383620000b0565b5050565b6001600160a01b038316620000de578060025f828254620000d291906200045f565b90915550620001509050565b6001600160a01b0383165f9081526020819052604090205481811015620001325760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000096565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166200016e576002805482900390556200018c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001d291815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000203575f80fd5b81516001600160401b0380821115620002205762000220620001df565b604051601f8301601f19908116603f011681019082821181831017156200024b576200024b620001df565b8160405283815260209250868385880101111562000267575f80fd5b5f91505b838210156200028a57858201830151818301840152908201906200026b565b5f93810190920192909252949350505050565b5f805f60608486031215620002b0575f80fd5b83516001600160401b0380821115620002c7575f80fd5b620002d587838801620001f3565b94506020860151915080821115620002eb575f80fd5b50620002fa86828701620001f3565b925050604084015190509250925092565b600181811c908216806200032057607f821691505b6020821081036200033f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000392575f81815260208120601f850160051c810160208610156200036d5750805b601f850160051c820191505b818110156200038e5782815560010162000379565b5050505b505050565b81516001600160401b03811115620003b357620003b3620001df565b620003cb81620003c484546200030b565b8462000345565b602080601f83116001811462000401575f8415620003e95750858301515b5f19600386901b1c1916600185901b1785556200038e565b5f85815260208120601f198616915b82811015620004315788860151825594840194600190910190840162000410565b50858210156200044f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200047f57634e487b7160e01b5f52601160045260245ffd5b92915050565b61079d80620004935f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063313ce5671161007257806395d89b411161005857806395d89b4114610140578063a9059cbb14610148578063dd62ed3e1461015b575f80fd5b8063313ce5671461010957806370a0823114610118575f80fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6575b5f80fd5b6100ab610193565b6040516100b891906105f8565b60405180910390f35b6100d46100cf36600461065e565b610223565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610686565b61023c565b604051601281526020016100b8565b6100e86101263660046106bf565b6001600160a01b03165f9081526020819052604090205490565b6100ab61025f565b6100d461015636600461065e565b61026e565b6100e86101693660046106df565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101a290610710565b80601f01602080910402602001604051908101604052809291908181526020018280546101ce90610710565b80156102195780601f106101f057610100808354040283529160200191610219565b820191905f5260205f20905b8154815290600101906020018083116101fc57829003601f168201915b5050505050905090565b5f3361023081858561027b565b60019150505b92915050565b5f3361024985828561028d565b610254858585610326565b506001949350505050565b6060600480546101a290610710565b5f33610230818585610326565b61028883838360016103b5565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146103205781811015610312576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61032084848484035f6103b5565b50505050565b6001600160a01b038316610368576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b0382166103aa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6102888383836104b9565b6001600160a01b0384166103f7576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b038316610439576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561032057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ab91815260200190565b60405180910390a350505050565b6001600160a01b0383166104e3578060025f8282546104d89190610748565b9091555061056c9050565b6001600160a01b0383165f908152602081905260409020548181101561054e576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610309565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610588576002805482900390556105a6565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105eb91815260200190565b60405180910390a3505050565b5f6020808352835180828501525f5b8181101561062357858101830151858201604001528201610607565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610659575f80fd5b919050565b5f806040838503121561066f575f80fd5b61067883610643565b946020939093013593505050565b5f805f60608486031215610698575f80fd5b6106a184610643565b92506106af60208501610643565b9150604084013590509250925092565b5f602082840312156106cf575f80fd5b6106d882610643565b9392505050565b5f80604083850312156106f0575f80fd5b6106f983610643565b915061070760208401610643565b90509250929050565b600181811c9082168061072457607f821691505b60208210810361074257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023657634e487b7160e01b5f52601160045260245ffdfea2646970667358221220c2fead2f098c766cc98c4b17615ad00ab6cbb6c547c8bc6ac0ce17231eb3a9a364736f6c63430008140033", } // ConstantSupplyERC20ABI is the input ABI used to generate the binding from. @@ -390,107 +390,65 @@ func (_ConstantSupplyERC20 *ConstantSupplyERC20CallerSession) TotalSupply() (*bi // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.contract.Transact(opts, "approve", spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.Approve(&_ConstantSupplyERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.Approve(&_ConstantSupplyERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.Approve(&_ConstantSupplyERC20.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.DecreaseAllowance(&_ConstantSupplyERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.DecreaseAllowance(&_ConstantSupplyERC20.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.IncreaseAllowance(&_ConstantSupplyERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.IncreaseAllowance(&_ConstantSupplyERC20.TransactOpts, spender, addedValue) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.Approve(&_ConstantSupplyERC20.TransactOpts, spender, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.contract.Transact(opts, "transfer", to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.Transfer(&_ConstantSupplyERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.Transfer(&_ConstantSupplyERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.Transfer(&_ConstantSupplyERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.Transfer(&_ConstantSupplyERC20.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.contract.Transact(opts, "transferFrom", from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.TransferFrom(&_ConstantSupplyERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.TransferFrom(&_ConstantSupplyERC20.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ConstantSupplyERC20.Contract.TransferFrom(&_ConstantSupplyERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ConstantSupplyERC20 *ConstantSupplyERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ConstantSupplyERC20.Contract.TransferFrom(&_ConstantSupplyERC20.TransactOpts, from, to, value) } // ConstantSupplyERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ConstantSupplyERC20 contract. diff --git a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go index eaffbf1dfb..3c0786ca12 100644 --- a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go +++ b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go @@ -41,8 +41,8 @@ type StructsCrossChainMessage struct { // CrossChainMessengerMetaData contains all meta data concerning the CrossChainMessenger contract. var CrossChainMessengerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"crossChainSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"encodeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messageBusAddr\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"message\",\"type\":\"tuple\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610a61806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80639b7cf1ee116100505780639b7cf1ee146100c0578063a1a227fa146100d5578063c4d66de8146100ec57600080fd5b80635b76f28b1461006c57806363012de514610095575b600080fd5b61007f61007a36600461057c565b6100ff565b60405161008c919061065b565b60405180910390f35b6001546100a8906001600160a01b031681565b6040516001600160a01b03909116815260200161008c565b6100d36100ce366004610675565b61017f565b005b6000546201000090046001600160a01b03166100a8565b6100d36100fa3660046106b0565b6102b1565b60606040518060600160405280856001600160a01b0316815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020918201526040516101679291016106cb565b60405160208183030381529060405290509392505050565b610188816103cf565b61019560208201826106b0565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560006101d16080830183610710565b8101906101de91906107e7565b905060008082600001516001600160a01b03165a846020015160405161020491906108bb565b60006040518083038160008787f1925050503d8060008114610242576040519150601f19603f3d011682016040523d82523d6000602084013e610247565b606091505b50915091508161028e57806040517fa5fa8d2b000000000000000000000000000000000000000000000000000000008152600401610285919061065b565b60405180910390fd5b50506001805473ffffffffffffffffffffffffffffffffffffffff191690555050565b600054610100900460ff166102cc5760005460ff16156102d0565b303b155b6103425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610285565b600054610100900460ff16158015610364576000805461ffff19166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b038516021790556001805473ffffffffffffffffffffffffffffffffffffffff1916905580156103cb576000805461ff00191690555b5050565b6000546040517f33a88c72000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906333a88c729061041d908490600401610925565b60206040518083038186803b15801561043557600080fd5b505afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190610a09565b6104b95760405162461bcd60e51b815260206004820152601f60248201527f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e006044820152606401610285565b6000816040516020016104cc9190610925565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156105445760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c726561647920636f6e73756d65642e000000000000006044820152606401610285565b6000908152600260205260409020805460ff1916600117905550565b80356001600160a01b038116811461057757600080fd5b919050565b60008060006040848603121561059157600080fd5b61059a84610560565b9250602084013567ffffffffffffffff808211156105b757600080fd5b818601915086601f8301126105cb57600080fd5b8135818111156105da57600080fd5b8760208285010111156105ec57600080fd5b6020830194508093505050509250925092565b60005b8381101561061a578181015183820152602001610602565b83811115610629576000848401525b50505050565b600081518084526106478160208601602086016105ff565b601f01601f19169290920160200192915050565b60208152600061066e602083018461062f565b9392505050565b60006020828403121561068757600080fd5b813567ffffffffffffffff81111561069e57600080fd5b820160c0818503121561066e57600080fd5b6000602082840312156106c257600080fd5b61066e82610560565b602081526001600160a01b03825116602082015260006020830151606060408401526106fa608084018261062f565b9050604084015160608401528091505092915050565b6000808335601e1984360301811261072757600080fd5b83018035915067ffffffffffffffff82111561074257600080fd5b60200191503681900382131561075757600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156107b0576107b061075e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156107df576107df61075e565b604052919050565b600060208083850312156107fa57600080fd5b823567ffffffffffffffff8082111561081257600080fd5b908401906060828703121561082657600080fd5b61082e61078d565b61083783610560565b8152838301358281111561084a57600080fd5b8301601f8101881361085b57600080fd5b80358381111561086d5761086d61075e565b61087f601f8201601f191687016107b6565b9350808452888682840101111561089557600080fd5b808683018786013760009084018601525092830152604090810135908201529392505050565b600082516108cd8184602087016105ff565b9190910192915050565b803563ffffffff8116811461057757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811461057757600080fd5b602081526001600160a01b0361093a83610560565b1660208201526000602083013567ffffffffffffffff80821680831461095f57600080fd5b80604086015250610972604086016108d7565b915063ffffffff80831660608601528061098e606088016108d7565b1660808601525060808501359150601e198536030182126109ae57600080fd5b908401908135818111156109c157600080fd5b8036038613156109d057600080fd5b60c060a08601526109e860e0860182602086016108eb565b925050506109f860a08501610914565b60ff811660c0850152509392505050565b600060208284031215610a1b57600080fd5b8151801515811461066e57600080fdfea2646970667358221220bc0279585a1702d1ea9f6fb2a48e0fb555f801bbc52b59154651989fb7dea11364736f6c63430008090033", + ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"crossChainSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"encodeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messageBusAddr\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"message\",\"type\":\"tuple\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50610a438061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c80639b7cf1ee1161004d5780639b7cf1ee146100bc578063a1a227fa146100d1578063c4d66de8146100e1575f80fd5b80635b76f28b1461006857806363012de514610091575b5f80fd5b61007b610076366004610595565b6100f4565b604051610088919061065e565b60405180910390f35b6001546100a4906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b6100cf6100ca366004610677565b610173565b005b5f546001600160a01b03166100a4565b6100cf6100ef3660046106ae565b61029e565b60606040518060600160405280856001600160a01b0316815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093855250505060209182015260405161015b9291016106c7565b60405160208183030381529060405290509392505050565b61017c81610403565b61018960208201826106ae565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555f6101c4608083018361070b565b8101906101d191906107dc565b90505f80825f01516001600160a01b03165a84602001516040516101f591906108a8565b5f604051808303815f8787f1925050503d805f811461022f576040519150601f19603f3d011682016040523d82523d5f602084013e610234565b606091505b50915091508161027b57806040517fa5fa8d2b000000000000000000000000000000000000000000000000000000008152600401610272919061065e565b60405180910390fd5b50506001805473ffffffffffffffffffffffffffffffffffffffff191690555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156102e85750825b90505f8267ffffffffffffffff1660011480156103045750303b155b905081158015610312575080155b15610349576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037d57845468ff00000000000000001916680100000000000000001785555b5f80546001600160a01b03881673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054909116905583156103fb57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f546040517f33a88c720000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906333a88c729061044b90849060040161090e565b602060405180830381865afa158015610466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048a91906109ee565b6104d65760405162461bcd60e51b815260206004820152601f60248201527f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e006044820152606401610272565b5f816040516020016104e8919061090e565b60408051601f1981840301815291815281516020928301205f818152600290935291205490915060ff161561055f5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c726561647920636f6e73756d65642e000000000000006044820152606401610272565b5f908152600260205260409020805460ff1916600117905550565b80356001600160a01b0381168114610590575f80fd5b919050565b5f805f604084860312156105a7575f80fd5b6105b08461057a565b9250602084013567ffffffffffffffff808211156105cc575f80fd5b818601915086601f8301126105df575f80fd5b8135818111156105ed575f80fd5b8760208285010111156105fe575f80fd5b6020830194508093505050509250925092565b5f5b8381101561062b578181015183820152602001610613565b50505f910152565b5f815180845261064a816020860160208601610611565b601f01601f19169290920160200192915050565b602081525f6106706020830184610633565b9392505050565b5f60208284031215610687575f80fd5b813567ffffffffffffffff81111561069d575f80fd5b820160c08185031215610670575f80fd5b5f602082840312156106be575f80fd5b6106708261057a565b602081526001600160a01b0382511660208201525f6020830151606060408401526106f56080840182610633565b9050604084015160608401528091505092915050565b5f808335601e19843603018112610720575f80fd5b83018035915067ffffffffffffffff82111561073a575f80fd5b60200191503681900382131561074e575f80fd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156107a5576107a5610755565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156107d4576107d4610755565b604052919050565b5f60208083850312156107ed575f80fd5b823567ffffffffffffffff80821115610804575f80fd5b9084019060608287031215610817575f80fd5b61081f610782565b6108288361057a565b8152838301358281111561083a575f80fd5b8301601f8101881361084a575f80fd5b80358381111561085c5761085c610755565b61086e601f8201601f191687016107ab565b93508084528886828401011115610883575f80fd5b80868301878601375f9084018601525092830152604090810135908201529392505050565b5f82516108b9818460208701610611565b9190910192915050565b803563ffffffff81168114610590575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b803560ff81168114610590575f80fd5b602081526001600160a01b036109238361057a565b1660208201525f602083013567ffffffffffffffff808216808314610946575f80fd5b80604086015250610959604086016108c3565b915063ffffffff808316606086015280610975606088016108c3565b1660808601525060808501359150601e19853603018212610994575f80fd5b60209185019182019135818111156109aa575f80fd5b8036038313156109b8575f80fd5b60c060a08601526109cd60e0860182856108d6565b925050506109dd60a085016108fe565b60ff811660c0850152509392505050565b5f602082840312156109fe575f80fd5b81518015158114610670575f80fdfea26469706673582212207866e94e178cdd6434f7587649cf64f2e4539464826cdd49ba12f78e331b4c6764736f6c63430008140033", } // CrossChainMessengerABI is the input ABI used to generate the binding from. @@ -346,3 +346,137 @@ func (_CrossChainMessenger *CrossChainMessengerSession) RelayMessage(message Str func (_CrossChainMessenger *CrossChainMessengerTransactorSession) RelayMessage(message StructsCrossChainMessage) (*types.Transaction, error) { return _CrossChainMessenger.Contract.RelayMessage(&_CrossChainMessenger.TransactOpts, message) } + +// CrossChainMessengerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the CrossChainMessenger contract. +type CrossChainMessengerInitializedIterator struct { + Event *CrossChainMessengerInitialized // 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 *CrossChainMessengerInitializedIterator) 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(CrossChainMessengerInitialized) + 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(CrossChainMessengerInitialized) + 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 *CrossChainMessengerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainMessengerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainMessengerInitialized represents a Initialized event raised by the CrossChainMessenger contract. +type CrossChainMessengerInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_CrossChainMessenger *CrossChainMessengerFilterer) FilterInitialized(opts *bind.FilterOpts) (*CrossChainMessengerInitializedIterator, error) { + + logs, sub, err := _CrossChainMessenger.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &CrossChainMessengerInitializedIterator{contract: _CrossChainMessenger.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_CrossChainMessenger *CrossChainMessengerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *CrossChainMessengerInitialized) (event.Subscription, error) { + + logs, sub, err := _CrossChainMessenger.contract.WatchLogs(opts, "Initialized") + 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(CrossChainMessengerInitialized) + if err := _CrossChainMessenger.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_CrossChainMessenger *CrossChainMessengerFilterer) ParseInitialized(log types.Log) (*CrossChainMessengerInitialized, error) { + event := new(CrossChainMessengerInitialized) + if err := _CrossChainMessenger.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/generated/EthereumBridge/EthereumBridge.go b/contracts/generated/EthereumBridge/EthereumBridge.go index 51007f553d..c2b8843a6a 100644 --- a/contracts/generated/EthereumBridge/EthereumBridge.go +++ b/contracts/generated/EthereumBridge/EthereumBridge.go @@ -31,8 +31,8 @@ var ( // EthereumBridgeMetaData contains all meta data concerning the EthereumBridge contract. var EthereumBridgeMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"localAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"CreatedWrappedToken\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"hasTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"localToRemoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"crossChainAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"onCreateTokenCommand\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"remoteToLocalToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"contractWrappedERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040526001805463ffffffff60a01b1916905534801561002057600080fd5b50612d10806100306000396000f3fe608060405260043610620000c65760003560e01c806383bece4d11620000735780639e405b7111620000555780639e405b7114620002dc578063a381c8e21462000316578063d5c6b504146200033b576200013f565b806383bece4d14620002675780639813c7b2146200028c576200013f565b8063458ffd6311620000a9578063458ffd6314620001f8578063485cc955146200021d57806375cb26721462000242576200013f565b80628d48e314620001885780631888d71214620001df576200013f565b366200013f5760405162461bcd60e51b815260206004820152602360248201527f436f6e747261637420646f6573206e6f7420737570706f72742072656365697660448201527f652829000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000604482015260640162000136565b3480156200019557600080fd5b50620001c2620001a736600462000f61565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001f6620001f036600462000f61565b62000375565b005b3480156200020557600080fd5b50620001f66200021736600462000fd4565b62000526565b3480156200022a57600080fd5b50620001f66200023c36600462001060565b62000740565b3480156200024f57600080fd5b50620001f66200026136600462000f61565b62000843565b3480156200027457600080fd5b50620001f6620002863660046200109e565b620009a3565b3480156200029957600080fd5b50620002cb620002ab36600462000f61565b6001600160a01b0390811660009081526002602052604090205416151590565b6040519015158152602001620001d6565b348015620002e957600080fd5b50620001c2620002fb36600462000f61565b6003602052600090815260409020546001600160a01b031681565b3480156200032357600080fd5b50620001f6620003353660046200109e565b62000bed565b3480156200034857600080fd5b50620001c26200035a36600462000f61565b6002602052600090815260409020546001600160a01b031681565b60003411620003c75760405162461bcd60e51b815260206004820152600d60248201527f4e6f7468696e672073656e742e00000000000000000000000000000000000000604482015260640162000136565b6000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546001600160a01b0316620004495760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000136565b600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546040516001600160a01b03918216602482015234604482015290831660648201526383bece4d60e01b9060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260055490915062000522906001600160a01b03168260005b60008062000d7c565b5050565b6005546000546001600160a01b039182169162010000909104163314620005b65760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000136565b806001600160a01b0316620005ca62000eaa565b6001600160a01b031614620006485760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000136565b6000858585856040516200065c9062000f3a565b6200066b94939291906200110e565b604051809103906000f08015801562000688573d6000803e3d6000fd5b506001600160a01b038082166000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca906200072e908a9084908b908b908b908b9062001144565b60405180910390a15050505050505050565b600054610100900460ff166200075d5760005460ff161562000761565b303b155b620007d55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000136565b600054610100900460ff16158015620007f8576000805461ffff19166101011790555b620008038362000843565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841617905580156200083e576000805461ff00191690555b505050565b600054610100900460ff16620008c25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000136565b80600060026101000a8154816001600160a01b0302191690836001600160a01b03160217905550600060029054906101000a90046001600160a01b03166001600160a01b031663a1a227fa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200093857600080fd5b505afa1580156200094d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000973919062001195565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005546000546001600160a01b03918216916201000090910416331462000a335760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000136565b806001600160a01b031662000a4762000eaa565b6001600160a01b03161462000ac55760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000136565b6001600160a01b0380851660009081526004602090815260408083205484168084526002909252909120549091168062000b685760405162461bcd60e51b815260206004820152602b60248201527f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726160448201527f7070656420746f6b656e21000000000000000000000000000000000000000000606482015260840162000136565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820187905282169063979005ad90604401600060405180830381600087803b15801562000bcc57600080fd5b505af115801562000be1573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038084166000908152600260205260409020541662000c565760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000136565b6001600160a01b03838116600090815260026020526040908190205490517f1dd319cb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529116908190631dd319cb90604401600060405180830381600087803b15801562000ccd57600080fd5b505af115801562000ce2573d6000803e3d6000fd5b505050506001600160a01b03848116600090815260036020908152604080832054815190851660248201526044810188905286851660648083019190915282518083039091018152608490910190915290810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166383bece4d60e01b179052600554909262000d7592911690839062000519565b5050505050565b60006040518060600160405280876001600160a01b031681526020018681526020018481525060405160200162000db4919062001205565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff1690601462000e09836200124c565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b815260040162000e4b949392919062001298565b602060405180830381600087803b15801562000e6657600080fd5b505af115801562000e7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ea19190620012d7565b50505050505050565b60008060029054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b815260040160206040518083038186803b15801562000efa57600080fd5b505afa15801562000f0f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f35919062001195565b905090565b6119d7806200130483390190565b6001600160a01b038116811462000f5e57600080fd5b50565b60006020828403121562000f7457600080fd5b813562000f818162000f48565b9392505050565b60008083601f84011262000f9b57600080fd5b50813567ffffffffffffffff81111562000fb457600080fd5b60208301915083602082850101111562000fcd57600080fd5b9250929050565b60008060008060006060868803121562000fed57600080fd5b853562000ffa8162000f48565b9450602086013567ffffffffffffffff808211156200101857600080fd5b6200102689838a0162000f88565b909650945060408801359150808211156200104057600080fd5b506200104f8882890162000f88565b969995985093965092949392505050565b600080604083850312156200107457600080fd5b8235620010818162000f48565b91506020830135620010938162000f48565b809150509250929050565b600080600060608486031215620010b457600080fd5b8335620010c18162000f48565b9250602084013591506040840135620010da8162000f48565b809150509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600062001124604083018688620010e5565b828103602084015262001139818587620010e5565b979650505050505050565b60006001600160a01b0380891683528088166020840152506080604083015262001173608083018688620010e5565b828103606084015262001188818587620010e5565b9998505050505050505050565b600060208284031215620011a857600080fd5b815162000f818162000f48565b6000815180845260005b81811015620011dd57602081850181015186830182015201620011bf565b81811115620011f0576000602083870101525b50601f01601f19169290920160200192915050565b602081526001600160a01b0382511660208201526000602083015160606040840152620012366080840182620011b5565b9050604084015160608401528091505092915050565b600063ffffffff808316818114156200128e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b600063ffffffff808716835280861660208401525060806040830152620012c36080830185620011b5565b905060ff8316606083015295945050505050565b600060208284031215620012ea57600080fd5b815167ffffffffffffffff8116811462000f8157600080fdfe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b50604051620019d7380380620019d78339810160408190526200005a91620002e3565b8181818181600390805190602001906200007692919062000170565b5080516200008c90600490602084019062000170565b5050505050620000c37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000cb60201b60201c565b50506200038a565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166200016c5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200012b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b8280546200017e906200034d565b90600052602060002090601f016020900481019282620001a25760008555620001ed565b82601f10620001bd57805160ff1916838001178555620001ed565b82800160010185558215620001ed579182015b82811115620001ed578251825591602001919060010190620001d0565b50620001fb929150620001ff565b5090565b5b80821115620001fb576000815560010162000200565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023e57600080fd5b81516001600160401b03808211156200025b576200025b62000216565b604051601f8301601f19908116603f0116810190828211818310171562000286576200028662000216565b81604052838152602092508683858801011115620002a357600080fd5b600091505b83821015620002c75785820183015181830184015290820190620002a8565b83821115620002d95760008385830101525b9695505050505050565b60008060408385031215620002f757600080fd5b82516001600160401b03808211156200030f57600080fd5b6200031d868387016200022c565b935060208501519150808211156200033457600080fd5b5062000343858286016200022c565b9150509250929050565b600181811c908216806200036257607f821691505b602082108114156200038457634e487b7160e01b600052602260045260246000fd5b50919050565b61163d806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806339509351116100d8578063979005ad1161008c578063a9059cbb11610066578063a9059cbb1461031a578063d547741f1461032d578063dd62ed3e1461034057600080fd5b8063979005ad146102ec578063a217fddf146102ff578063a457c2d71461030757600080fd5b806375b238fc116100bd57806375b238fc1461028457806391d14854146102ab57806395d89b41146102e457600080fd5b8063395093511461025e57806370a082311461027157600080fd5b806323b872dd1161012f5780632f2ff15d116101145780632f2ff15d14610229578063313ce5671461023c57806336568abe1461024b57600080fd5b806323b872dd146101f3578063248a9ca31461020657600080fd5b8063095ea7b311610160578063095ea7b3146101b957806318160ddd146101cc5780631dd319cb146101de57600080fd5b806301ffc9a71461017c57806306fdde03146101a4575b600080fd5b61018f61018a3660046112f7565b610353565b60405190151581526020015b60405180910390f35b6101ac6103ec565b60405161019b9190611365565b61018f6101c73660046113b4565b61047e565b6002545b60405190815260200161019b565b6101f16101ec3660046113b4565b610496565b005b61018f6102013660046113de565b61052d565b6101d061021436600461141a565b60009081526007602052604090206001015490565b6101f1610237366004611433565b610551565b6040516012815260200161019b565b6101f1610259366004611433565b610577565b61018f61026c3660046113b4565b610603565b6101d061027f36600461145f565b610642565b6101d07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b61018f6102b9366004611433565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101ac6106ea565b6101f16102fa3660046113b4565b6106f9565b6101d0600081565b61018f6103153660046113b4565b61072e565b61018f6103283660046113b4565b6107d8565b6101f161033b366004611433565b6107e6565b6101d061034e36600461147a565b61080c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103e657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103fb906114a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610427906114a4565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60003361048c81858561091d565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104c18133610a75565b816104cb84610642565b101561051e5760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6105288383610af5565b505050565b60003361053b858285610c7a565b610546858585610cf4565b506001949350505050565b60008281526007602052604090206001015461056d8133610a75565b6105288383610f0b565b6001600160a01b03811633146105f55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610515565b6105ff8282610fad565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061048c908290869061063d9087906114f5565b61091d565b6000326001600160a01b0383161415610673576001600160a01b0382166000908152602081905260409020546103e6565b336001600160a01b03831614156106a2576001600160a01b0382166000908152602081905260409020546103e6565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e6365006044820152606401610515565b6060600480546103fb906114a4565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756107248133610a75565b6105288383611030565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610515565b610546828686840361091d565b60003361048c818585610cf4565b6000828152600760205260409020600101546108028133610a75565b6105288383610fad565b6000326001600160a01b038416148061082d5750326001600160a01b038316145b15610860576001600160a01b038084166000908152600160209081526040808320938616835292905220545b90506103e6565b336001600160a01b038416148061087f5750336001600160a01b038316145b156108af576001600160a01b03808416600090815260016020908152604080832093861683529290522054610859565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383166109985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b038216610a145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166105ff57610ab3816001600160a01b0316601461110f565b610abe83602061110f565b604051602001610acf92919061150d565b60408051601f198184030181529082905262461bcd60e51b825261051591600401611365565b6001600160a01b038216610b715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03821660009081526020819052604090205481811015610c005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610c2f90849061158e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000610c86848461080c565b90506000198114610cee5781811015610ce15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610515565b610cee848484840361091d565b50505050565b6001600160a01b038316610d705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b038216610dec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03831660009081526020819052604090205481811015610e7b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610eb29084906114f5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610efe91815260200190565b60405180910390a3610cee565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166105ff5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610f693390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16156105ff5760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166110865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610515565b806002600082825461109891906114f5565b90915550506001600160a01b038216600090815260208190526040812080548392906110c59084906114f5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6060600061111e8360026115a5565b6111299060026114f5565b67ffffffffffffffff811115611141576111416115c4565b6040519080825280601f01601f19166020018201604052801561116b576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106111a2576111a26115da565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106111ed576111ed6115da565b60200101906001600160f81b031916908160001a90535060006112118460026115a5565b61121c9060016114f5565b90505b60018111156112a1577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061125d5761125d6115da565b1a60f81b828281518110611273576112736115da565b60200101906001600160f81b031916908160001a90535060049490941c9361129a816115f0565b905061121f565b5083156112f05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610515565b9392505050565b60006020828403121561130957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112f057600080fd5b60005b8381101561135457818101518382015260200161133c565b83811115610cee5750506000910152565b6020815260008251806020840152611384816040850160208701611339565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146113af57600080fd5b919050565b600080604083850312156113c757600080fd5b6113d083611398565b946020939093013593505050565b6000806000606084860312156113f357600080fd5b6113fc84611398565b925061140a60208501611398565b9150604084013590509250925092565b60006020828403121561142c57600080fd5b5035919050565b6000806040838503121561144657600080fd5b8235915061145660208401611398565b90509250929050565b60006020828403121561147157600080fd5b6112f082611398565b6000806040838503121561148d57600080fd5b61149683611398565b915061145660208401611398565b600181811c908216806114b857607f821691505b602082108114156114d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611508576115086114df565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611545816017850160208801611339565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611582816028840160208801611339565b01602801949350505050565b6000828210156115a0576115a06114df565b500390565b60008160001904831182151516156115bf576115bf6114df565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816115ff576115ff6114df565b50600019019056fea26469706673582212201c0c3a851d2bc9f4f94393362a160e99651c656d627113abd657cce4d7d8770964736f6c63430008090033a26469706673582212209025675371a7cd9667ebd11bf443f5ad333fd6b958c0b2dd506b3cf13882f17164736f6c63430008090033", + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"localAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"CreatedWrappedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"hasTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"localToRemoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"crossChainAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"onCreateTokenCommand\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"remoteToLocalToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"contractWrappedERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040526001805463ffffffff60a01b1916905534801561001f575f80fd5b506125ca8061002d5f395ff3fe608060405260043610620000c5575f3560e01c806383bece4d11620000725780639e405b7111620000545780639e405b7114620002d3578063a381c8e2146200030b578063d5c6b504146200032f576200013e565b806383bece4d14620002615780639813c7b21462000285576200013e565b8063458ffd6311620000a8578063458ffd6314620001f5578063485cc955146200021957806375cb2672146200023d576200013e565b80628d48e314620001875780631888d71214620001dc576200013e565b366200013e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747261637420646f6573206e6f7420737570706f72742072656365697660448201527f652829000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000604482015260640162000135565b34801562000193575f80fd5b50620001bf620001a536600462000f49565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001f3620001ed36600462000f49565b62000367565b005b34801562000201575f80fd5b50620001f36200021336600462000fb6565b62000513565b34801562000225575f80fd5b50620001f3620002373660046200103c565b62000720565b34801562000249575f80fd5b50620001f36200025b36600462000f49565b6200088c565b3480156200026d575f80fd5b50620001f36200027f36600462001078565b62000969565b34801562000291575f80fd5b50620002c2620002a336600462000f49565b6001600160a01b039081165f9081526002602052604090205416151590565b6040519015158152602001620001d3565b348015620002df575f80fd5b50620001bf620002f136600462000f49565b60036020525f90815260409020546001600160a01b031681565b34801562000317575f80fd5b50620001f36200032936600462001078565b62000ba5565b3480156200033b575f80fd5b50620001bf6200034d36600462000f49565b60026020525f90815260409020546001600160a01b031681565b5f3411620003b85760405162461bcd60e51b815260206004820152600d60248201527f4e6f7468696e672073656e742e00000000000000000000000000000000000000604482015260640162000135565b5f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546001600160a01b0316620004395760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000135565b5f80805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546040516001600160a01b03918216602482015234604482015290831660648201526383bece4d60e01b9060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526005549091506200050f906001600160a01b0316825f5b5f8062000d2c565b5050565b6005545f546001600160a01b03918216911633146200059b5760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000135565b806001600160a01b0316620005af62000e3d565b6001600160a01b0316146200062d5760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000135565b5f85858585604051620006409062000f23565b6200064f9493929190620010e4565b604051809103905ff08015801562000669573d5f803e3d5ffd5b506001600160a01b038082165f818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca906200070e908a9084908b908b908b908b9062001119565b60405180910390a15050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156200076b5750825b90505f8267ffffffffffffffff166001148015620007885750303b155b90508115801562000797575080155b15620007cf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200080457845468ff00000000000000001916680100000000000000001785555b6200080f876200088c565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156200088357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6200089662000eb9565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa15801562000913573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000939919062001169565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005545f546001600160a01b0391821691163314620009f15760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000135565b806001600160a01b031662000a0562000e3d565b6001600160a01b03161462000a835760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000135565b6001600160a01b038085165f9081526004602090815260408083205484168084526002909252909120549091168062000b255760405162461bcd60e51b815260206004820152602b60248201527f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726160448201527f7070656420746f6b656e21000000000000000000000000000000000000000000606482015260840162000135565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820187905282169063979005ad906044015f604051808303815f87803b15801562000b86575f80fd5b505af115801562000b99573d5f803e3d5ffd5b50505050505050505050565b6001600160a01b038084165f908152600260205260409020541662000c0d5760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000135565b6001600160a01b038381165f90815260026020526040908190205490517f1dd319cb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529116908190631dd319cb906044015f604051808303815f87803b15801562000c80575f80fd5b505af115801562000c93573d5f803e3d5ffd5b505050506001600160a01b038481165f90815260036020908152604080832054815190851660248201526044810188905286851660648083019190915282518083039091018152608490910190915290810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166383bece4d60e01b179052600554909262000d2592911690839062000507565b5050505050565b5f6040518060600160405280876001600160a01b031681526020018681526020018481525060405160200162000d639190620011cc565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff1690601462000db88362001212565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b815260040162000dfa94939291906200125a565b6020604051808303815f875af115801562000e17573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000883919062001298565b5f805f9054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e8e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000eb4919062001169565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000f21576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6112d380620012c283390190565b6001600160a01b038116811462000f46575f80fd5b50565b5f6020828403121562000f5a575f80fd5b813562000f678162000f31565b9392505050565b5f8083601f84011262000f7f575f80fd5b50813567ffffffffffffffff81111562000f97575f80fd5b60208301915083602082850101111562000faf575f80fd5b9250929050565b5f805f805f6060868803121562000fcb575f80fd5b853562000fd88162000f31565b9450602086013567ffffffffffffffff8082111562000ff5575f80fd5b6200100389838a0162000f6e565b909650945060408801359150808211156200101c575f80fd5b506200102b8882890162000f6e565b969995985093965092949392505050565b5f80604083850312156200104e575f80fd5b82356200105b8162000f31565b915060208301356200106d8162000f31565b809150509250929050565b5f805f606084860312156200108b575f80fd5b8335620010988162000f31565b9250602084013591506040840135620010b18162000f31565b809150509250925092565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f620010f9604083018688620010bc565b82810360208401526200110e818587620010bc565b979650505050505050565b5f6001600160a01b0380891683528088166020840152506080604083015262001147608083018688620010bc565b82810360608401526200115c818587620010bc565b9998505050505050505050565b5f602082840312156200117a575f80fd5b815162000f678162000f31565b5f81518084525f5b81811015620011ad576020818501810151868301820152016200118f565b505f602082860101526020601f19601f83011685010191505092915050565b602081526001600160a01b0382511660208201525f602083015160606040840152620011fc608084018262001187565b9050604084015160608401528091505092915050565b5f63ffffffff80831681810362001250577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019392505050565b5f63ffffffff80871683528086166020840152506080604083015262001284608083018562001187565b905060ff8316606083015295945050505050565b5f60208284031215620012a9575f80fd5b815167ffffffffffffffff8116811462000f67575f80fdfe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b50604051620012d3380380620012d3833981016040819052620000599162000228565b8181818160036200006b83826200031a565b5060046200007a82826200031a565b5050505050620000b17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000ba60201b60201c565b505050620003e2565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1662000161575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000164565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126200018e575f80fd5b81516001600160401b0380821115620001ab57620001ab6200016a565b604051601f8301601f19908116603f01168101908282118183101715620001d657620001d66200016a565b81604052838152602092508683858801011115620001f2575f80fd5b5f91505b83821015620002155785820183015181830184015290820190620001f6565b5f93810190920192909252949350505050565b5f80604083850312156200023a575f80fd5b82516001600160401b038082111562000251575f80fd5b6200025f868387016200017e565b9350602085015191508082111562000275575f80fd5b5062000284858286016200017e565b9150509250929050565b600181811c90821680620002a357607f821691505b602082108103620002c257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000315575f81815260208120601f850160051c81016020861015620002f05750805b601f850160051c820191505b818110156200031157828155600101620002fc565b5050505b505050565b81516001600160401b038111156200033657620003366200016a565b6200034e816200034784546200028e565b84620002c8565b602080601f83116001811462000384575f84156200036c5750858301515b5f19600386901b1c1916600185901b17855562000311565b5f85815260208120601f198616915b82811015620003b45788860151825594840194600190910190840162000393565b5085821015620003d257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610ee380620003f05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c806336568abe116100c7578063979005ad1161007d578063a9059cbb11610063578063a9059cbb146102c2578063d547741f146102d5578063dd62ed3e146102e8575f80fd5b8063979005ad146102a8578063a217fddf146102bb575f80fd5b806375b238fc116100ad57806375b238fc1461024157806391d148541461026857806395d89b41146102a0575f80fd5b806336568abe1461021b57806370a082311461022e575f80fd5b80631dd319cb1161011c578063248a9ca311610102578063248a9ca3146101d75780632f2ff15d146101f9578063313ce5671461020c575f80fd5b80631dd319cb146101af57806323b872dd146101c4575f80fd5b806301ffc9a71461014d57806306fdde0314610175578063095ea7b31461018a57806318160ddd1461019d575b5f80fd5b61016061015b366004610cc7565b6102fb565b60405190151581526020015b60405180910390f35b61017d610393565b60405161016c9190610d0d565b610160610198366004610d73565b610423565b6002545b60405190815260200161016c565b6101c26101bd366004610d73565b61043a565b005b6101606101d2366004610d9b565b6104d0565b6101a16101e5366004610dd4565b5f9081526007602052604090206001015490565b6101c2610207366004610deb565b6104f3565b6040516012815260200161016c565b6101c2610229366004610deb565b61051d565b6101a161023c366004610e15565b610569565b6101a17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610160610276366004610deb565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61017d61060c565b6101c26102b6366004610d73565b61061b565b6101a15f81565b6101606102d0366004610d73565b61064f565b6101c26102e3366004610deb565b61065c565b6101a16102f6366004610e2e565b610680565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061038d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103a290610e56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610e56565b80156104195780601f106103f057610100808354040283529160200191610419565b820191905f5260205f20905b8154815290600101906020018083116103fc57829003601f168201915b5050505050905090565b5f3361043081858561078e565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104648161079b565b8161046e84610569565b10156104c15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104cb83836107a8565b505050565b5f336104dd8582856107e0565b6104e8858585610856565b506001949350505050565b5f8281526007602052604090206001015461050d8161079b565b61051783836108b3565b50505050565b6001600160a01b038116331461055f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cb828261095e565b5f6001600160a01b0382163203610597576001600160a01b0382165f9081526020819052604090205461038d565b6001600160a01b03821633036105c4576001600160a01b0382165f9081526020819052604090205461038d565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104b8565b6060600480546103a290610e56565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106458161079b565b6104cb83836109e3565b5f33610430818585610856565b5f828152600760205260409020600101546106768161079b565b610517838361095e565b5f326001600160a01b03841614806106a05750326001600160a01b038316145b156106d2576001600160a01b038084165f908152600160209081526040808320938616835292905220545b905061038d565b336001600160a01b03841614806106f15750336001600160a01b038316145b15610720576001600160a01b038084165f908152600160209081526040808320938616835292905220546106cb565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104b8565b6104cb8383836001610a17565b6107a58133610b1b565b50565b6001600160a01b0382166107d157604051634b637e8f60e11b81525f60048201526024016104b8565b6107dc825f83610b88565b5050565b5f6107eb8484610680565b90505f1981146105175781811015610848576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104b8565b61051784848484035f610a17565b6001600160a01b03831661087f57604051634b637e8f60e11b81525f60048201526024016104b8565b6001600160a01b0382166108a85760405163ec442f0560e01b81525f60048201526024016104b8565b6104cb838383610b88565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff16610957575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561090f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038d565b505f61038d565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1615610957575f8381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038d565b6001600160a01b038216610a0c5760405163ec442f0560e01b81525f60048201526024016104b8565b6107dc5f8383610b88565b6001600160a01b038416610a59576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038316610a9b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561051757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b0d91815260200190565b60405180910390a350505050565b5f8281526007602090815260408083206001600160a01b038516845290915290205460ff166107dc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104b8565b6001600160a01b038316610bb2578060025f828254610ba79190610e8e565b90915550610c3b9050565b6001600160a01b0383165f9081526020819052604090205481811015610c1d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104b8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c5757600280548290039055610c75565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cba91815260200190565b60405180910390a3505050565b5f60208284031215610cd7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610d3857858101830151858201604001528201610d1c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d6e575f80fd5b919050565b5f8060408385031215610d84575f80fd5b610d8d83610d58565b946020939093013593505050565b5f805f60608486031215610dad575f80fd5b610db684610d58565b9250610dc460208501610d58565b9150604084013590509250925092565b5f60208284031215610de4575f80fd5b5035919050565b5f8060408385031215610dfc575f80fd5b82359150610e0c60208401610d58565b90509250929050565b5f60208284031215610e25575f80fd5b610d0682610d58565b5f8060408385031215610e3f575f80fd5b610e4883610d58565b9150610e0c60208401610d58565b600181811c90821680610e6a57607f821691505b602082108103610e8857634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561038d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d78cf2dd9ecf4da03679034ab54dbc38a0748a2a50f13ee501925e8df4738b1264736f6c63430008140033a2646970667358221220910ed4d806fc5d201f041052722e240d19224d7a3957d6d54e271e5fa89dde2664736f6c63430008140033", } // EthereumBridgeABI is the input ABI used to generate the binding from. @@ -630,3 +630,137 @@ func (_EthereumBridge *EthereumBridgeFilterer) ParseCreatedWrappedToken(log type event.Raw = log return event, nil } + +// EthereumBridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the EthereumBridge contract. +type EthereumBridgeInitializedIterator struct { + Event *EthereumBridgeInitialized // 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 *EthereumBridgeInitializedIterator) 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(EthereumBridgeInitialized) + 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(EthereumBridgeInitialized) + 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 *EthereumBridgeInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EthereumBridgeInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EthereumBridgeInitialized represents a Initialized event raised by the EthereumBridge contract. +type EthereumBridgeInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_EthereumBridge *EthereumBridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*EthereumBridgeInitializedIterator, error) { + + logs, sub, err := _EthereumBridge.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &EthereumBridgeInitializedIterator{contract: _EthereumBridge.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_EthereumBridge *EthereumBridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *EthereumBridgeInitialized) (event.Subscription, error) { + + logs, sub, err := _EthereumBridge.contract.WatchLogs(opts, "Initialized") + 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(EthereumBridgeInitialized) + if err := _EthereumBridge.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_EthereumBridge *EthereumBridgeFilterer) ParseInitialized(log types.Log) (*EthereumBridgeInitialized, error) { + event := new(EthereumBridgeInitialized) + if err := _EthereumBridge.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/generated/GasConsumerBalance/GasConsumerBalance.go b/contracts/generated/GasConsumerBalance/GasConsumerBalance.go index b64b2e7efa..c5cb17c595 100644 --- a/contracts/generated/GasConsumerBalance/GasConsumerBalance.go +++ b/contracts/generated/GasConsumerBalance/GasConsumerBalance.go @@ -32,7 +32,7 @@ var ( // GasConsumerBalanceMetaData contains all meta data concerning the GasConsumerBalance contract. var GasConsumerBalanceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"destroy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_balance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610157806100326000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806383197ef0146100465780638da5cb5b14610050578063c1cfb99a1461004e575b600080fd5b61004e610099565b005b6000546100709073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff16331461011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f596f7520617265206e6f7420746865206f776e65720000000000000000000000604482015260640160405180910390fd5b30fffea2646970667358221220b9b74e1c04efc1de448844b2b225f377bd3e408744e0d2845012f40f2c20396c64736f6c63430008090033", + Bin: "0x608060405234801561000f575f80fd5b505f80546001600160a01b031916331790556101528061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806383197ef0146100435780638da5cb5b1461004d578063c1cfb99a1461004b575b5f80fd5b61004b610095565b005b5f5461006c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f5473ffffffffffffffffffffffffffffffffffffffff163314610119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f596f7520617265206e6f7420746865206f776e65720000000000000000000000604482015260640160405180910390fd5b30fffea26469706673582212205bfc66da08320422cf69c718067c856e73af5dbc541b5ef740407b90ed8656a864736f6c63430008140033", } // GasConsumerBalanceABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index c74b748a1b..b34aff1de6 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -53,8 +53,8 @@ type StructsMetaRollup struct { // ManagementContractMetaData contains all meta data concerning the ManagementContract contract. var ManagementContractMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"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\":\"crossChainData\",\"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\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"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\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"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\":\"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\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61303d8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638129fc1c116100cd578063a1a227fa11610081578063bbd79e1511610066578063bbd79e151461035d578063e34fbfc814610370578063f2fde38b1461038357600080fd5b8063a1a227fa1461033a578063a52f433c1461034d57600080fd5b80638da5cb5b116100b25780638da5cb5b146102f65780638fa0d0531461030757806398077e861461031a57600080fd5b80638129fc1c146102535780638236a7ba1461025b57600080fd5b8063440c953b116101245780636a30d26c116101095780636a30d26c1461023b578063715018a614610243578063728109961461024b57600080fd5b8063440c953b1461021157806359a900711461022857600080fd5b806303e72e4814610156578063324ff8661461016b5780633e60a22f1461018957806343348b2f146101d5575b600080fd5b6101696101643660046115e2565b610396565b005b6101736104fd565b604051610180919061168c565b60405180910390f35b6101bd6101973660046116ee565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610180565b6102016101e3366004611723565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610180565b61021a60075481565b604051908152602001610180565b610169610236366004611789565b6105d6565b610173610660565b610169610730565b610169610796565b610169610868565b6102c3610269366004611830565b6040805160608082018352600080835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610180565b6000546001600160a01b03166101bd565b610169610315366004611849565b610a27565b61032d610328366004611830565b610ab6565b60405161018091906118d0565b6009546101bd906001600160a01b031681565b600654610100900460ff16610201565b61016961036b3660046118e3565b610b62565b61016961037e3660046119a9565b610cc7565b610169610391366004611723565b610ce6565b6000546001600160a01b031633146103f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60006001600160a01b031660058360405161041091906119eb565b908152604051908190036020019020546001600160a01b0316141561047457600480546001810182556000919091528251610472917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01906020850190611410565b505b8060058360405161048591906119eb565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5906104f19084908490611a07565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020016000905b828210156105cd57838290600052602060002001805461054090611a32565b80601f016020809104026020016040519081016040528092919081815260200182805461056c90611a32565b80156105b95780601f1061058e576101008083540402835291602001916105b9565b820191906000526020600020905b81548152906001019060200180831161059c57829003601f168201915b505050505081526020019060010190610521565b50505050905090565b60065460ff16156105e657600080fd5b60068054600160ff1991821681179092556001600160a01b038816600090815260026020908152604082208054909316841790925560038054938401815590528451610657927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190611410565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156105cd5783829060005260206000200180546106a390611a32565b80601f01602080910402602001604051908101604052809291908181526020018280546106cf90611a32565b801561071c5780601f106106f15761010080835404028352916020019161071c565b820191906000526020600020905b8154815290600101906020018083116106ff57829003601f168201915b505050505081526020019060010190610684565b6000546001600160a01b0316331461078a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ec565b6107946000610dc1565b565b6000546001600160a01b031633146107f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ec565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b50505050565b600054600160a81b900460ff1661089d5760005474010000000000000000000000000000000000000000900460ff16156108a1565b303b155b6109135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103ec565b600054600160a81b900460ff1615801561096857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600060075560405161097990611494565b604051809103906000f080158015610995573d6000803e3d6000fd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18015610a2457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b60026000610a3b6040870160208801611723565b6001600160a01b0316815260208101919091526040016000205460ff16610aa45760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064016103ec565b610aad84610e1e565b61086281610e53565b60048181548110610ac657600080fd5b906000526020600020016000915090508054610ae190611a32565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0d90611a32565b8015610b5a5780601f10610b2f57610100808354040283529160200191610b5a565b820191906000526020600020905b815481529060010190602001808311610b3d57829003601f168201915b505050505081565b6001600160a01b03861660009081526002602052604090205460ff1680610b8857600080fd5b8115610c58576000610bbe88888688604051602001610baa9493929190611a6d565b604051602081830303815290604052610f0d565b90506000610bcc8288610f48565b9050886001600160a01b0316816001600160a01b031614610c555760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d61746368000000000000000000000000000000000000000060648201526084016103ec565b50505b6001600160a01b03861660009081526002602090815260408220805460ff191660019081179091556003805491820181559092528451610cbd927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0191860190611410565b5050505050505050565b336000908152600160205260409020610ce19083836114a1565b505050565b6000546001600160a01b03163314610d405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ec565b6001600160a01b038116610dbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103ec565b610a24815b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803560009081526008602052604090208190610e3a8282611ac9565b505060075460408201351115610a245760400135600755565b6000610e5f8280611b15565b9050905060005b81811015610ce1576009546001600160a01b0316639730886d610e898580611b15565b84818110610e9957610e99611b5f565b9050602002810190610eab9190611b75565b60016040518363ffffffff1660e01b8152600401610eca929190611c24565b600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b5050505080610f0690611cf1565b9050610e66565b6000610f198251610f6c565b82604051602001610f2b929190611d0c565b604051602081830303815290604052805190602001209050919050565b6000806000610f5785856110a6565b91509150610f6481611116565b509392505050565b606081610fac57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610fd65780610fc081611cf1565b9150610fcf9050600a83611d7d565b9150610fb0565b60008167ffffffffffffffff811115610ff157610ff161152a565b6040519080825280601f01601f19166020018201604052801561101b576020820181803683370190505b5090505b841561109e57611030600183611d91565b915061103d600a86611da8565b611048906030611dbc565b60f81b81838151811061105d5761105d611b5f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611097600a86611d7d565b945061101f565b949350505050565b6000808251604114156110dd5760208301516040840151606085015160001a6110d1878285856112d1565b9450945050505061110f565b82516040141561110757602083015160408401516110fc8683836113be565b93509350505061110f565b506000905060025b9250929050565b600081600481111561112a5761112a611dd4565b14156111335750565b600181600481111561114757611147611dd4565b14156111955760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103ec565b60028160048111156111a9576111a9611dd4565b14156111f75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103ec565b600381600481111561120b5761120b611dd4565b14156112645760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103ec565b600481600481111561127857611278611dd4565b1415610a245760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016103ec565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561130857506000905060036113b5565b8460ff16601b1415801561132057508460ff16601c14155b1561133157506000905060046113b5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611385573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113ae576000600192509250506113b5565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316816113f460ff86901c601b611dbc565b9050611402878288856112d1565b935093505050935093915050565b82805461141c90611a32565b90600052602060002090601f01602090048101928261143e5760008555611484565b82601f1061145757805160ff1916838001178555611484565b82800160010185558215611484579182015b82811115611484578251825591602001919060010190611469565b50611490929150611515565b5090565b61121d80611deb83390190565b8280546114ad90611a32565b90600052602060002090601f0160209004810192826114cf5760008555611484565b82601f106114e85782800160ff19823516178555611484565b82800160010185558215611484579182015b828111156114845782358255916020019190600101906114fa565b5b808211156114905760008155600101611516565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261155157600080fd5b813567ffffffffffffffff8082111561156c5761156c61152a565b604051601f8301601f19908116603f011681019082821181831017156115945761159461152a565b816040528381528660208588010111156115ad57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610a2457600080fd5b600080604083850312156115f557600080fd5b823567ffffffffffffffff81111561160c57600080fd5b61161885828601611540565b9250506020830135611629816115cd565b809150509250929050565b60005b8381101561164f578181015183820152602001611637565b838111156108625750506000910152565b60008151808452611678816020860160208601611634565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156116e157603f198886030184526116cf858351611660565b945092850192908501906001016116b3565b5092979650505050505050565b60006020828403121561170057600080fd5b813567ffffffffffffffff81111561171757600080fd5b61109e84828501611540565b60006020828403121561173557600080fd5b8135611740816115cd565b9392505050565b60008083601f84011261175957600080fd5b50813567ffffffffffffffff81111561177157600080fd5b60208301915083602082850101111561110f57600080fd5b600080600080600080608087890312156117a257600080fd5b86356117ad816115cd565b9550602087013567ffffffffffffffff808211156117ca57600080fd5b6117d68a838b01611747565b909750955060408901359150808211156117ef57600080fd5b6117fb8a838b01611540565b9450606089013591508082111561181157600080fd5b5061181e89828a01611747565b979a9699509497509295939492505050565b60006020828403121561184257600080fd5b5035919050565b60008060008084860360a081121561186057600080fd5b606081121561186e57600080fd5b50849350606085013567ffffffffffffffff8082111561188d57600080fd5b61189988838901611747565b909550935060808701359150808211156118b257600080fd5b508501602081880312156118c557600080fd5b939692955090935050565b6020815260006117406020830184611660565b60008060008060008060c087890312156118fc57600080fd5b8635611907816115cd565b95506020870135611917816115cd565b9450604087013567ffffffffffffffff8082111561193457600080fd5b6119408a838b01611540565b9550606089013591508082111561195657600080fd5b6119628a838b01611540565b9450608089013591508082111561197857600080fd5b5061198589828a01611540565b92505060a0870135801515811461199b57600080fd5b809150509295509295509295565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611747565b90969095509350505050565b600082516119fd818460208701611634565b9190910192915050565b604081526000611a1a6040830185611660565b90506001600160a01b03831660208301529392505050565b600181811c90821680611a4657607f821691505b60208210811415611a6757634e487b7160e01b600052602260045260246000fd5b50919050565b60006bffffffffffffffffffffffff19808760601b168352808660601b166014840152508351611aa4816028850160208801611634565b835190830190611abb816028840160208801611634565b016028019695505050505050565b81358155600181016020830135611adf816115cd565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e19843603018112611b2c57600080fd5b83018035915067ffffffffffffffff821115611b4757600080fd5b6020019150600581901b360382131561110f57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be198336030181126119fd57600080fd5b803563ffffffff81168114611b9f57600080fd5b919050565b6000808335601e19843603018112611bbb57600080fd5b830160208101925035905067ffffffffffffffff811115611bdb57600080fd5b80360383131561110f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff81168114611b9f57600080fd5b6040815260008335611c35816115cd565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611c5f57600080fd5b606084015250611c7160408501611b8b565b63ffffffff166080830152611c8860608501611b8b565b63ffffffff1660a0830152611ca06080850185611ba4565b60c080850152611cb561010085018284611bea565b915050611cc460a08601611c13565b60ff1660e084015260209092019290925292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611d0557611d05611cdb565b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611d4481601a850160208801611634565b835190830190611d5b81601a840160208801611634565b01601a01949350505050565b634e487b7160e01b600052601260045260246000fd5b600082611d8c57611d8c611d67565b500490565b600082821015611da357611da3611cdb565b500390565b600082611db757611db7611d67565b500690565b60008219821115611dcf57611dcf611cdb565b500190565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61119f8061007e6000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610270578063b1454caa14610290578063f2fde38b146102c95761012e565b80638da5cb5b146102285780639730886d146102505761012e565b8063346633fb1161009a578063346633fb146101de57806336d2da90146101f3578063715018a6146102135761012e565b80630fcfbd111461017b57806333a88c72146101ae5761012e565b3661012e576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b5050505050005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018757600080fd5b5061019b610196366004610ad9565b6102e9565b6040519081526020015b60405180910390f35b3480156101ba57600080fd5b506101ce6101c9366004610ad9565b61039f565b60405190151581526020016101a5565b6101f16101ec366004610b23565b6103f2565b005b3480156101ff57600080fd5b506101f161020e366004610b4f565b6104be565b34801561021f57600080fd5b506101f16105bf565b34801561023457600080fd5b506000546040516001600160a01b0390911681526020016101a5565b34801561025c57600080fd5b506101f161026b366004610b6c565b610625565b34801561027c57600080fd5b506101f161028b366004610b23565b6107c9565b34801561029c57600080fd5b506102b06102ab366004610be2565b6108cb565b60405167ffffffffffffffff90911681526020016101a5565b3480156102d557600080fd5b506101f16102e4366004610b4f565b610924565b600080826040516020016102fd9190610cce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103985760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b9392505050565b600080826040516020016103b39190610cce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103ea5750428111155b949350505050565b60003411801561040157508034145b6104735760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610172565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6000546001600160a01b031633146105185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b50509050806105bb5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b5050565b6000546001600160a01b031633146106195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6106236000610a06565b565b6000546001600160a01b0316331461067f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b600061068b8242610dce565b90506000836040516020016106a09190610cce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561073b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b600081815260016020908152604082208490556002919061075e90870187610b4f565b6001600160a01b03168152602081019190915260400160009081209061078a6080870160608801610de6565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107c18282610fc3565b505050505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610870576040519150601f19603f3d011682016040523d82523d6000602084013e610875565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b505050565b60006108d633610a63565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759373382888888888860405161091397969594939291906110dd565b60405180910390a195945050505050565b6000546001600160a01b0316331461097e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6001600160a01b0381166109fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610172565b610a0381610a06565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610a96838561113d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c08284031215610ad357600080fd5b50919050565b600060208284031215610aeb57600080fd5b813567ffffffffffffffff811115610b0257600080fd5b6103ea84828501610ac1565b6001600160a01b0381168114610a0357600080fd5b60008060408385031215610b3657600080fd5b8235610b4181610b0e565b946020939093013593505050565b600060208284031215610b6157600080fd5b813561039881610b0e565b60008060408385031215610b7f57600080fd5b823567ffffffffffffffff811115610b9657600080fd5b610ba285828601610ac1565b95602094909401359450505050565b63ffffffff81168114610a0357600080fd5b60ff81168114610a0357600080fd5b8035610bdd81610bc3565b919050565b600080600080600060808688031215610bfa57600080fd5b8535610c0581610bb1565b94506020860135610c1581610bb1565b9350604086013567ffffffffffffffff80821115610c3257600080fd5b818801915088601f830112610c4657600080fd5b813581811115610c5557600080fd5b896020828501011115610c6757600080fd5b6020830195508094505050506060860135610c8181610bc3565b809150509295509295909350565b67ffffffffffffffff81168114610a0357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610cdf81610b0e565b6001600160a01b0381166020840152506020830135610cfd81610c8f565b67ffffffffffffffff808216604085015260408501359150610d1e82610bb1565b63ffffffff808316606086015260608601359250610d3b83610bb1565b80831660808601525060808501359150601e19853603018212610d5d57600080fd5b90840190813581811115610d7057600080fd5b803603861315610d7f57600080fd5b60c060a0860152610d9760e086018260208601610ca5565b92505050610da760a08501610bd2565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610de157610de1610db8565b500190565b600060208284031215610df857600080fd5b813561039881610bb1565b60008135610e1081610bb1565b92915050565b6000808335601e19843603018112610e2d57600080fd5b83018035915067ffffffffffffffff821115610e4857600080fd5b602001915036819003821315610e5d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610e8e57607f821691505b60208210811415610ad357634e487b7160e01b600052602260045260246000fd5b601f8211156108c657600081815260208120601f850160051c81016020861015610ed65750805b601f850160051c820191505b818110156107c157828155600101610ee2565b67ffffffffffffffff831115610f0d57610f0d610e64565b610f2183610f1b8354610e7a565b83610eaf565b6000601f841160018114610f555760008515610f3d5750838201355b600019600387901b1c1916600186901b178355610faf565b600083815260209020601f19861690835b82811015610f865786850135825560209485019460019092019101610f66565b5086821015610fa35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610e1081610bc3565b8135610fce81610b0e565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff198216178355602084013561100681610c8f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061106483610bb1565b921760e09190911b90911617815561109c61108160608401610e03565b6001830163ffffffff821663ffffffff198254161781555050565b6110a96080830183610e16565b6110b7818360028601610ef5565b50506105bb6110c860a08401610fb6565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c0608083015261112660c083018587610ca5565b905060ff831660a083015298975050505050505050565b600067ffffffffffffffff80831681851680830382111561116057611160610db8565b0194935050505056fea2646970667358221220a54aad59b2972196a793838aab3ac603764d8f10f53f8b069358ac232fba77fe64736f6c63430008090033a26469706673582212204f3aa48020ee7ed6375c2fef601af17d8aad13dee08c197cbddc2f4500931a8f64736f6c63430008090033", + 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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"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\":\"crossChainData\",\"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\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"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\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"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\":\"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\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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: "0x608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612bcd806100a05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c80638129fc1c116100c7578063a1a227fa1161007d578063bbd79e1511610063578063bbd79e1514610351578063e34fbfc814610364578063f2fde38b14610377575f80fd5b8063a1a227fa1461032e578063a52f433c14610341575f80fd5b80638da5cb5b116100ad5780638da5cb5b146102eb5780638fa0d053146102fb57806398077e861461030e575f80fd5b80638129fc1c146102495780638236a7ba14610251575f80fd5b8063440c953b1161011c5780636a30d26c116101025780636a30d26c14610231578063715018a6146102395780637281099614610241575f80fd5b8063440c953b1461020757806359a900711461021e575f80fd5b806303e72e481461014d578063324ff866146101625780633e60a22f1461018057806343348b2f146101cc575b5f80fd5b61016061015b36600461123d565b61038a565b005b61016a610490565b60405161017791906112d9565b60405180910390f35b6101b461018e366004611339565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610177565b6101f76101da366004611373565b6001600160a01b03165f9081526002602052604090205460ff1690565b6040519015158152602001610177565b61021060075481565b604051908152602001610177565b61016061022c3660046113da565b610564565b61016a6105e5565b6101606106b0565b6101606106c3565b61016061073e565b6102b861025f36600461147a565b60408051606080820183525f80835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610177565b5f546001600160a01b03166101b4565b610160610309366004611491565b6108f8565b61032161031c36600461147a565b61098a565b6040516101779190611511565b6009546101b4906001600160a01b031681565b600654610100900460ff166101f7565b61016061035f366004611523565b610a30565b6101606103723660046115e1565b610b89565b610160610385366004611373565b610ba7565b610392610bfd565b5f6001600160a01b03166005836040516103ac9190611620565b908152604051908190036020019020546001600160a01b03160361040757600480546001810182555f919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0161040583826116c0565b505b806005836040516104189190611620565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590610484908490849061177c565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020015f905b8282101561055b578382905f5260205f200180546104d09061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc9061163b565b80156105475780601f1061051e57610100808354040283529160200191610547565b820191905f5260205f20905b81548152906001019060200180831161052a57829003601f168201915b5050505050815260200190600101906104b3565b50505050905090565b60065460ff1615610573575f80fd5b60068054600160ff1991821681179092556001600160a01b0388165f9081526002602052604081208054909216831790915560038054928301815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016105dc84826116c0565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561055b578382905f5260205f200180546106259061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546106519061163b565b801561069c5780601f106106735761010080835404028352916020019161069c565b820191905f5260205f20905b81548152906001019060200180831161067f57829003601f168201915b505050505081526020019060010190610608565b6106b8610bfd565b6106c15f610c42565b565b6106cb610bfd565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da90906024015f604051808303815f87803b158015610726575f80fd5b505af1158015610738573d5f803e3d5ffd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156107885750825b90505f8267ffffffffffffffff1660011480156107a45750303b155b9050811580156107b2575080155b156107e9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561081d57845468ff00000000000000001916680100000000000000001785555b5f60075560405161082d9061117e565b604051809103905ff080158015610846573d5f803e3d5ffd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a183156108f157845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60025f61090b6040870160208801611373565b6001600160a01b0316815260208101919091526040015f205460ff166109785760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b61098184610c9e565b61073881610cd2565b60048181548110610999575f80fd5b905f5260205f20015f9150905080546109b19061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546109dd9061163b565b8015610a285780601f106109ff57610100808354040283529160200191610a28565b820191905f5260205f20905b815481529060010190602001808311610a0b57829003601f168201915b505050505081565b6001600160a01b0386165f9081526002602052604090205460ff1680610a54575f80fd5b8115610b22575f610a8988888688604051602001610a7594939291906117a6565b604051602081830303815290604052610d85565b90505f610a968288610dbf565b9050886001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840161096f565b50505b6001600160a01b0386165f908152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01610b7f84826116c0565b5050505050505050565b335f908152600160205260409020610ba2828483611801565b505050565b610baf610bfd565b6001600160a01b038116610bf1576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161096f565b610bfa81610c42565b50565b5f546001600160a01b031633146106c1576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161096f565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80355f9081526008602052604090208190610cb982826118bc565b505060075460408201351115610bfa5760400135600755565b5f610cdd8280611908565b905090505f5b81811015610ba2576009546001600160a01b0316639730886d610d068580611908565b84818110610d1657610d1661194e565b9050602002810190610d289190611962565b60016040518363ffffffff1660e01b8152600401610d47929190611a08565b5f604051808303815f87803b158015610d5e575f80fd5b505af1158015610d70573d5f803e3d5ffd5b5050505080610d7e90611abd565b9050610ce3565b5f610d908251610de7565b82604051602001610da2929190611ae1565b604051602081830303815290604052805190602001209050919050565b5f805f80610dcd8686610e84565b925092509250610ddd8282610ecd565b5090949350505050565b60605f610df383610fd4565b60010190505f8167ffffffffffffffff811115610e1257610e1261118c565b6040519080825280601f01601f191660200182016040528015610e3c576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e4657509392505050565b5f805f8351604103610ebb576020840151604085015160608601515f1a610ead888285856110b6565b955095509550505050610ec6565b505081515f91506002905b9250925092565b5f826003811115610ee057610ee0611b3b565b03610ee9575050565b6001826003811115610efd57610efd611b3b565b03610f34576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f4857610f48611b3b565b03610f82576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161096f565b6003826003811115610f9657610f96611b3b565b03610fd0576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161096f565b5050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061101c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611048576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106657662386f26fc10000830492506010015b6305f5e100831061107e576305f5e100830492506008015b612710831061109257612710830492506004015b606483106110a4576064830492506002015b600a83106110b0576001015b92915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110ef57505f91506003905082611174565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611140573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661116b57505f925060019150829050611174565b92505f91508190505b9450945094915050565b6110488062001b5083390190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126111af575f80fd5b813567ffffffffffffffff808211156111ca576111ca61118c565b604051601f8301601f19908116603f011681019082821181831017156111f2576111f261118c565b8160405283815286602085880101111561120a575f80fd5b836020870160208301375f602085830101528094505050505092915050565b6001600160a01b0381168114610bfa575f80fd5b5f806040838503121561124e575f80fd5b823567ffffffffffffffff811115611264575f80fd5b611270858286016111a0565b925050602083013561128181611229565b809150509250929050565b5f5b838110156112a657818101518382015260200161128e565b50505f910152565b5f81518084526112c581602086016020860161128c565b601f01601f19169290920160200192915050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b8281101561132c57603f1988860301845261131a8583516112ae565b945092850192908501906001016112fe565b5092979650505050505050565b5f60208284031215611349575f80fd5b813567ffffffffffffffff81111561135f575f80fd5b61136b848285016111a0565b949350505050565b5f60208284031215611383575f80fd5b813561138e81611229565b9392505050565b5f8083601f8401126113a5575f80fd5b50813567ffffffffffffffff8111156113bc575f80fd5b6020830191508360208285010111156113d3575f80fd5b9250929050565b5f805f805f80608087890312156113ef575f80fd5b86356113fa81611229565b9550602087013567ffffffffffffffff80821115611416575f80fd5b6114228a838b01611395565b9097509550604089013591508082111561143a575f80fd5b6114468a838b016111a0565b9450606089013591508082111561145b575f80fd5b5061146889828a01611395565b979a9699509497509295939492505050565b5f6020828403121561148a575f80fd5b5035919050565b5f805f8084860360a08112156114a5575f80fd5b60608112156114b2575f80fd5b50849350606085013567ffffffffffffffff808211156114d0575f80fd5b6114dc88838901611395565b909550935060808701359150808211156114f4575f80fd5b50850160208188031215611506575f80fd5b939692955090935050565b602081525f61138e60208301846112ae565b5f805f805f8060c08789031215611538575f80fd5b863561154381611229565b9550602087013561155381611229565b9450604087013567ffffffffffffffff8082111561156f575f80fd5b61157b8a838b016111a0565b95506060890135915080821115611590575f80fd5b61159c8a838b016111a0565b945060808901359150808211156115b1575f80fd5b506115be89828a016111a0565b92505060a087013580151581146115d3575f80fd5b809150509295509295509295565b5f80602083850312156115f2575f80fd5b823567ffffffffffffffff811115611608575f80fd5b61161485828601611395565b90969095509350505050565b5f825161163181846020870161128c565b9190910192915050565b600181811c9082168061164f57607f821691505b60208210810361166d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ba2575f81815260208120601f850160051c810160208610156116995750805b601f850160051c820191505b818110156116b8578281556001016116a5565b505050505050565b815167ffffffffffffffff8111156116da576116da61118c565b6116ee816116e8845461163b565b84611673565b602080601f831160018114611721575f841561170a5750858301515b5f19600386901b1c1916600185901b1785556116b8565b5f85815260208120601f198616915b8281101561174f57888601518255948401946001909101908401611730565b508582101561176c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b604081525f61178e60408301856112ae565b90506001600160a01b03831660208301529392505050565b5f6bffffffffffffffffffffffff19808760601b168352808660601b1660148401525083516117dc81602885016020880161128c565b8351908301906117f381602884016020880161128c565b016028019695505050505050565b67ffffffffffffffff8311156118195761181961118c565b61182d83611827835461163b565b83611673565b5f601f84116001811461185e575f85156118475750838201355b5f19600387901b1c1916600186901b1783556108f1565b5f83815260209020601f19861690835b8281101561188e578685013582556020948501946001909201910161186e565b50868210156118aa575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556001810160208301356118d281611229565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b5f808335601e1984360301811261191d575f80fd5b83018035915067ffffffffffffffff821115611937575f80fd5b6020019150600581901b36038213156113d3575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112611631575f80fd5b803563ffffffff81168114611989575f80fd5b919050565b5f808335601e198436030181126119a3575f80fd5b830160208101925035905067ffffffffffffffff8111156119c2575f80fd5b8036038213156113d3575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b803560ff81168114611989575f80fd5b604081525f8335611a1881611229565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611a41575f80fd5b606084015250611a5360408501611976565b63ffffffff166080830152611a6a60608501611976565b63ffffffff1660a0830152611a82608085018561198e565b60c080850152611a97610100850182846119d0565b915050611aa660a086016119f8565b60ff1660e084015260209092019290925292915050565b5f60018201611ada57634e487b7160e01b5f52601160045260245ffd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081525f8351611b1881601a85016020880161128c565b835190830190611b2f81601a84016020880161128c565b01601a01949350505050565b634e487b7160e01b5f52602160045260245ffdfe608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fa8806100a05f395ff3fe6080604052600436106100b4575f3560e01c80638da5cb5b1161006857806399a3ad211161004d57806399a3ad211461025d578063b1454caa1461027c578063f2fde38b146102b457610124565b80638da5cb5b146102185780639730886d1461023e57610124565b8063346633fb11610099578063346633fb146101d257806336d2da90146101e5578063715018a61461020457610124565b80630fcfbd111461017157806333a88c72146101a357610124565b36610124576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044015f604051808303818588803b158015610110575f80fd5b505af1158015610122573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561017c575f80fd5b5061019061018b36600461091b565b6102d3565b6040519081526020015b60405180910390f35b3480156101ae575f80fd5b506101c26101bd36600461091b565b610387565b604051901515815260200161019a565b6101226101e0366004610961565b6103d8565b3480156101f0575f80fd5b506101226101ff36600461098b565b6104a3565b34801561020f575f80fd5b5061012261054e565b348015610223575f80fd5b505f546040516001600160a01b03909116815260200161019a565b348015610249575f80fd5b506101226102583660046109a6565b610561565b348015610268575f80fd5b50610122610277366004610961565b6106ad565b348015610287575f80fd5b5061029b610296366004610a17565b610759565b60405167ffffffffffffffff909116815260200161019a565b3480156102bf575f80fd5b506101226102ce36600461098b565b6107b1565b5f80826040516020016102e69190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150806103805760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b9392505050565b5f808260405160200161039a9190610af9565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915080158015906103d05750428111155b949350505050565b5f341180156103e657508034145b6104585760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610168565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104ab610807565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146104f4576040519150601f19603f3d011682016040523d82523d5f602084013e6104f9565b606091505b505090508061054a5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b5050565b610556610807565b61055f5f61084c565b565b610569610807565b5f6105748242610bf4565b90505f836040516020016105889190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150156106225760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b5f8181526001602090815260408220849055600291906106449087018761098b565b6001600160a01b0316815260208101919091526040015f9081209061066f6080870160608801610c0d565b63ffffffff1681526020808201929092526040015f90812080546001810182559082529190208591600402016106a58282610dd1565b505050505050565b6106b5610807565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106fe576040519150601f19603f3d011682016040523d82523d5f602084013e610703565b606091505b50509050806107545760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b505050565b5f610763336108a8565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107a09796959493929190610eeb565b60405180910390a195945050505050565b6107b9610807565b6001600160a01b0381166107fb576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610168565b6108048161084c565b50565b5f546001600160a01b0316331461055f576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610168565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f908152600360205260408120805467ffffffffffffffff1691600191906108da8385610f4a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b5f60c08284031215610915575f80fd5b50919050565b5f6020828403121561092b575f80fd5b813567ffffffffffffffff811115610941575f80fd5b6103d084828501610905565b6001600160a01b0381168114610804575f80fd5b5f8060408385031215610972575f80fd5b823561097d8161094d565b946020939093013593505050565b5f6020828403121561099b575f80fd5b81356103808161094d565b5f80604083850312156109b7575f80fd5b823567ffffffffffffffff8111156109cd575f80fd5b6109d985828601610905565b95602094909401359450505050565b63ffffffff81168114610804575f80fd5b60ff81168114610804575f80fd5b8035610a12816109f9565b919050565b5f805f805f60808688031215610a2b575f80fd5b8535610a36816109e8565b94506020860135610a46816109e8565b9350604086013567ffffffffffffffff80821115610a62575f80fd5b818801915088601f830112610a75575f80fd5b813581811115610a83575f80fd5b896020828501011115610a94575f80fd5b6020830195508094505050506060860135610aae816109f9565b809150509295509295909350565b67ffffffffffffffff81168114610804575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235610b098161094d565b6001600160a01b0381166020840152506020830135610b2781610abc565b67ffffffffffffffff808216604085015260408501359150610b48826109e8565b63ffffffff808316606086015260608601359250610b65836109e8565b80831660808601525060808501359150601e19853603018212610b86575f80fd5b6020918501918201913581811115610b9c575f80fd5b803603831315610baa575f80fd5b60c060a0860152610bbf60e086018285610ad1565b92505050610bcf60a08501610a07565b60ff811660c0850152509392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0757610c07610be0565b92915050565b5f60208284031215610c1d575f80fd5b8135610380816109e8565b5f8135610c07816109e8565b5f808335601e19843603018112610c49575f80fd5b83018035915067ffffffffffffffff821115610c63575f80fd5b602001915036819003821315610c77575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610ca657607f821691505b60208210810361091557634e487b7160e01b5f52602260045260245ffd5b601f821115610754575f81815260208120601f850160051c81016020861015610cea5750805b601f850160051c820191505b818110156106a557828155600101610cf6565b67ffffffffffffffff831115610d2157610d21610c7e565b610d3583610d2f8354610c92565b83610cc4565b5f601f841160018114610d66575f8515610d4f5750838201355b5f19600387901b1c1916600186901b178355610dbe565b5f83815260209020601f19861690835b82811015610d965786850135825560209485019460019092019101610d76565b5086821015610db2575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f8135610c07816109f9565b8135610ddc8161094d565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e1481610abc565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610e72836109e8565b921760e09190911b909116178155610eaa610e8f60608401610c28565b6001830163ffffffff821663ffffffff198254161781555050565b610eb76080830183610c34565b610ec5818360028601610d09565b505061054a610ed660a08401610dc5565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff871660208201525f63ffffffff808816604084015280871660608401525060c06080830152610f3360c083018587610ad1565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610f6b57610f6b610be0565b509291505056fea264697066735822122076ee989163cafe9af5816a8fe978aae61590b2374fa3eb153e06140a1bba2f1b64736f6c63430008140033a264697066735822122066465611131e935a75afab1e5ad5d2ea36a8341118e771dff756ddc0023095aa64736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. @@ -859,6 +859,140 @@ func (_ManagementContract *ManagementContractFilterer) ParseImportantContractAdd return event, nil } +// ManagementContractInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ManagementContract contract. +type ManagementContractInitializedIterator struct { + Event *ManagementContractInitialized // 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 *ManagementContractInitializedIterator) 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(ManagementContractInitialized) + 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(ManagementContractInitialized) + 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 *ManagementContractInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ManagementContractInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ManagementContractInitialized represents a Initialized event raised by the ManagementContract contract. +type ManagementContractInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ManagementContract *ManagementContractFilterer) FilterInitialized(opts *bind.FilterOpts) (*ManagementContractInitializedIterator, error) { + + logs, sub, err := _ManagementContract.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ManagementContractInitializedIterator{contract: _ManagementContract.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ManagementContract *ManagementContractFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ManagementContractInitialized) (event.Subscription, error) { + + logs, sub, err := _ManagementContract.contract.WatchLogs(opts, "Initialized") + 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(ManagementContractInitialized) + if err := _ManagementContract.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ManagementContract *ManagementContractFilterer) ParseInitialized(log types.Log) (*ManagementContractInitialized, error) { + event := new(ManagementContractInitialized) + if err := _ManagementContract.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ManagementContractLogManagementContractCreatedIterator is returned from FilterLogManagementContractCreated and is used to iterate over the raw logs and unpacked data for LogManagementContractCreated events raised by the ManagementContract contract. type ManagementContractLogManagementContractCreatedIterator struct { Event *ManagementContractLogManagementContractCreated // Event containing the contract specifics and raw log diff --git a/contracts/generated/MessageBus/MessageBus.go b/contracts/generated/MessageBus/MessageBus.go index 464bede112..58712f9bf3 100644 --- a/contracts/generated/MessageBus/MessageBus.go +++ b/contracts/generated/MessageBus/MessageBus.go @@ -41,8 +41,8 @@ type StructsCrossChainMessage struct { // MessageBusMetaData contains all meta data concerning the MessageBus contract. var MessageBusMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61119f8061007e6000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610270578063b1454caa14610290578063f2fde38b146102c95761012e565b80638da5cb5b146102285780639730886d146102505761012e565b8063346633fb1161009a578063346633fb146101de57806336d2da90146101f3578063715018a6146102135761012e565b80630fcfbd111461017b57806333a88c72146101ae5761012e565b3661012e576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b5050505050005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018757600080fd5b5061019b610196366004610ad9565b6102e9565b6040519081526020015b60405180910390f35b3480156101ba57600080fd5b506101ce6101c9366004610ad9565b61039f565b60405190151581526020016101a5565b6101f16101ec366004610b23565b6103f2565b005b3480156101ff57600080fd5b506101f161020e366004610b4f565b6104be565b34801561021f57600080fd5b506101f16105bf565b34801561023457600080fd5b506000546040516001600160a01b0390911681526020016101a5565b34801561025c57600080fd5b506101f161026b366004610b6c565b610625565b34801561027c57600080fd5b506101f161028b366004610b23565b6107c9565b34801561029c57600080fd5b506102b06102ab366004610be2565b6108cb565b60405167ffffffffffffffff90911681526020016101a5565b3480156102d557600080fd5b506101f16102e4366004610b4f565b610924565b600080826040516020016102fd9190610cce565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103985760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b9392505050565b600080826040516020016103b39190610cce565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103ea5750428111155b949350505050565b60003411801561040157508034145b6104735760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610172565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6000546001600160a01b031633146105185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b50509050806105bb5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b5050565b6000546001600160a01b031633146106195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6106236000610a06565b565b6000546001600160a01b0316331461067f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b600061068b8242610dce565b90506000836040516020016106a09190610cce565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561073b5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610172565b600081815260016020908152604082208490556002919061075e90870187610b4f565b6001600160a01b03168152602081019190915260400160009081209061078a6080870160608801610de6565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016107c18282610fc3565b505050505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610870576040519150601f19603f3d011682016040523d82523d6000602084013e610875565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610172565b505050565b60006108d633610a63565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef7759373382888888888860405161091397969594939291906110dd565b60405180910390a195945050505050565b6000546001600160a01b0316331461097e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610172565b6001600160a01b0381166109fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610172565b610a0381610a06565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff169160019190610a96838561113d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c08284031215610ad357600080fd5b50919050565b600060208284031215610aeb57600080fd5b813567ffffffffffffffff811115610b0257600080fd5b6103ea84828501610ac1565b6001600160a01b0381168114610a0357600080fd5b60008060408385031215610b3657600080fd5b8235610b4181610b0e565b946020939093013593505050565b600060208284031215610b6157600080fd5b813561039881610b0e565b60008060408385031215610b7f57600080fd5b823567ffffffffffffffff811115610b9657600080fd5b610ba285828601610ac1565b95602094909401359450505050565b63ffffffff81168114610a0357600080fd5b60ff81168114610a0357600080fd5b8035610bdd81610bc3565b919050565b600080600080600060808688031215610bfa57600080fd5b8535610c0581610bb1565b94506020860135610c1581610bb1565b9350604086013567ffffffffffffffff80821115610c3257600080fd5b818801915088601f830112610c4657600080fd5b813581811115610c5557600080fd5b896020828501011115610c6757600080fd5b6020830195508094505050506060860135610c8181610bc3565b809150509295509295909350565b67ffffffffffffffff81168114610a0357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610cdf81610b0e565b6001600160a01b0381166020840152506020830135610cfd81610c8f565b67ffffffffffffffff808216604085015260408501359150610d1e82610bb1565b63ffffffff808316606086015260608601359250610d3b83610bb1565b80831660808601525060808501359150601e19853603018212610d5d57600080fd5b90840190813581811115610d7057600080fd5b803603861315610d7f57600080fd5b60c060a0860152610d9760e086018260208601610ca5565b92505050610da760a08501610bd2565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610de157610de1610db8565b500190565b600060208284031215610df857600080fd5b813561039881610bb1565b60008135610e1081610bb1565b92915050565b6000808335601e19843603018112610e2d57600080fd5b83018035915067ffffffffffffffff821115610e4857600080fd5b602001915036819003821315610e5d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610e8e57607f821691505b60208210811415610ad357634e487b7160e01b600052602260045260246000fd5b601f8211156108c657600081815260208120601f850160051c81016020861015610ed65750805b601f850160051c820191505b818110156107c157828155600101610ee2565b67ffffffffffffffff831115610f0d57610f0d610e64565b610f2183610f1b8354610e7a565b83610eaf565b6000601f841160018114610f555760008515610f3d5750838201355b600019600387901b1c1916600186901b178355610faf565b600083815260209020601f19861690835b82811015610f865786850135825560209485019460019092019101610f66565b5086821015610fa35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610e1081610bc3565b8135610fce81610b0e565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff198216178355602084013561100681610c8f565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff000000000000000000000000000000000000000000000000000000008184828516171785556040860135925061106483610bb1565b921760e09190911b90911617815561109c61108160608401610e03565b6001830163ffffffff821663ffffffff198254161781555050565b6110a96080830183610e16565b6110b7818360028601610ef5565b50506105bb6110c860a08401610fb6565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c0608083015261112660c083018587610ca5565b905060ff831660a083015298975050505050505050565b600067ffffffffffffffff80831681851680830382111561116057611160610db8565b0194935050505056fea2646970667358221220a54aad59b2972196a793838aab3ac603764d8f10f53f8b069358ac232fba77fe64736f6c63430008090033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fa8806100a05f395ff3fe6080604052600436106100b4575f3560e01c80638da5cb5b1161006857806399a3ad211161004d57806399a3ad211461025d578063b1454caa1461027c578063f2fde38b146102b457610124565b80638da5cb5b146102185780639730886d1461023e57610124565b8063346633fb11610099578063346633fb146101d257806336d2da90146101e5578063715018a61461020457610124565b80630fcfbd111461017157806333a88c72146101a357610124565b36610124576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044015f604051808303818588803b158015610110575f80fd5b505af1158015610122573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561017c575f80fd5b5061019061018b36600461091b565b6102d3565b6040519081526020015b60405180910390f35b3480156101ae575f80fd5b506101c26101bd36600461091b565b610387565b604051901515815260200161019a565b6101226101e0366004610961565b6103d8565b3480156101f0575f80fd5b506101226101ff36600461098b565b6104a3565b34801561020f575f80fd5b5061012261054e565b348015610223575f80fd5b505f546040516001600160a01b03909116815260200161019a565b348015610249575f80fd5b506101226102583660046109a6565b610561565b348015610268575f80fd5b50610122610277366004610961565b6106ad565b348015610287575f80fd5b5061029b610296366004610a17565b610759565b60405167ffffffffffffffff909116815260200161019a565b3480156102bf575f80fd5b506101226102ce36600461098b565b6107b1565b5f80826040516020016102e69190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150806103805760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b9392505050565b5f808260405160200161039a9190610af9565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915080158015906103d05750428111155b949350505050565b5f341180156103e657508034145b6104585760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610168565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104ab610807565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146104f4576040519150601f19603f3d011682016040523d82523d5f602084013e6104f9565b606091505b505090508061054a5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b5050565b610556610807565b61055f5f61084c565b565b610569610807565b5f6105748242610bf4565b90505f836040516020016105889190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150156106225760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b5f8181526001602090815260408220849055600291906106449087018761098b565b6001600160a01b0316815260208101919091526040015f9081209061066f6080870160608801610c0d565b63ffffffff1681526020808201929092526040015f90812080546001810182559082529190208591600402016106a58282610dd1565b505050505050565b6106b5610807565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106fe576040519150601f19603f3d011682016040523d82523d5f602084013e610703565b606091505b50509050806107545760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b505050565b5f610763336108a8565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107a09796959493929190610eeb565b60405180910390a195945050505050565b6107b9610807565b6001600160a01b0381166107fb576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610168565b6108048161084c565b50565b5f546001600160a01b0316331461055f576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610168565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f908152600360205260408120805467ffffffffffffffff1691600191906108da8385610f4a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b5f60c08284031215610915575f80fd5b50919050565b5f6020828403121561092b575f80fd5b813567ffffffffffffffff811115610941575f80fd5b6103d084828501610905565b6001600160a01b0381168114610804575f80fd5b5f8060408385031215610972575f80fd5b823561097d8161094d565b946020939093013593505050565b5f6020828403121561099b575f80fd5b81356103808161094d565b5f80604083850312156109b7575f80fd5b823567ffffffffffffffff8111156109cd575f80fd5b6109d985828601610905565b95602094909401359450505050565b63ffffffff81168114610804575f80fd5b60ff81168114610804575f80fd5b8035610a12816109f9565b919050565b5f805f805f60808688031215610a2b575f80fd5b8535610a36816109e8565b94506020860135610a46816109e8565b9350604086013567ffffffffffffffff80821115610a62575f80fd5b818801915088601f830112610a75575f80fd5b813581811115610a83575f80fd5b896020828501011115610a94575f80fd5b6020830195508094505050506060860135610aae816109f9565b809150509295509295909350565b67ffffffffffffffff81168114610804575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235610b098161094d565b6001600160a01b0381166020840152506020830135610b2781610abc565b67ffffffffffffffff808216604085015260408501359150610b48826109e8565b63ffffffff808316606086015260608601359250610b65836109e8565b80831660808601525060808501359150601e19853603018212610b86575f80fd5b6020918501918201913581811115610b9c575f80fd5b803603831315610baa575f80fd5b60c060a0860152610bbf60e086018285610ad1565b92505050610bcf60a08501610a07565b60ff811660c0850152509392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0757610c07610be0565b92915050565b5f60208284031215610c1d575f80fd5b8135610380816109e8565b5f8135610c07816109e8565b5f808335601e19843603018112610c49575f80fd5b83018035915067ffffffffffffffff821115610c63575f80fd5b602001915036819003821315610c77575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610ca657607f821691505b60208210810361091557634e487b7160e01b5f52602260045260245ffd5b601f821115610754575f81815260208120601f850160051c81016020861015610cea5750805b601f850160051c820191505b818110156106a557828155600101610cf6565b67ffffffffffffffff831115610d2157610d21610c7e565b610d3583610d2f8354610c92565b83610cc4565b5f601f841160018114610d66575f8515610d4f5750838201355b5f19600387901b1c1916600186901b178355610dbe565b5f83815260209020601f19861690835b82811015610d965786850135825560209485019460019092019101610d76565b5086821015610db2575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f8135610c07816109f9565b8135610ddc8161094d565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e1481610abc565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610e72836109e8565b921760e09190911b909116178155610eaa610e8f60608401610c28565b6001830163ffffffff821663ffffffff198254161781555050565b610eb76080830183610c34565b610ec5818360028601610d09565b505061054a610ed660a08401610dc5565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff871660208201525f63ffffffff808816604084015280871660608401525060c06080830152610f3360c083018587610ad1565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610f6b57610f6b610be0565b509291505056fea264697066735822122076ee989163cafe9af5816a8fe978aae61590b2374fa3eb153e06140a1bba2f1b64736f6c63430008140033", } // MessageBusABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ObsERC20/ObsERC20.go b/contracts/generated/ObsERC20/ObsERC20.go index d8d057cf98..b33f30c74f 100644 --- a/contracts/generated/ObsERC20/ObsERC20.go +++ b/contracts/generated/ObsERC20/ObsERC20.go @@ -31,8 +31,8 @@ var ( // ObsERC20MetaData contains all meta data concerning the ObsERC20 contract. var ObsERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b5060405162000da838038062000da88339810160408190526200005a9162000207565b8151829082906200007390600390602085019062000094565b5080516200008990600490602084019062000094565b5050505050620002ae565b828054620000a29062000271565b90600052602060002090601f016020900481019282620000c6576000855562000111565b82601f10620000e157805160ff191683800117855562000111565b8280016001018555821562000111579182015b8281111562000111578251825591602001919060010190620000f4565b506200011f92915062000123565b5090565b5b808211156200011f576000815560010162000124565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016257600080fd5b81516001600160401b03808211156200017f576200017f6200013a565b604051601f8301601f19908116603f01168101908282118183101715620001aa57620001aa6200013a565b81604052838152602092508683858801011115620001c757600080fd5b600091505b83821015620001eb5785820183015181830184015290820190620001cc565b83821115620001fd5760008385830101525b9695505050505050565b600080604083850312156200021b57600080fd5b82516001600160401b03808211156200023357600080fd5b620002418683870162000150565b935060208501519150808211156200025857600080fd5b50620002678582860162000150565b9150509250929050565b600181811c908216806200028657607f821691505b60208210811415620002a857634e487b7160e01b600052602260045260246000fd5b50919050565b610aea80620002be6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610171578063a9059cbb14610184578063dd62ed3e1461019757600080fd5b8063395093511461014357806370a082311461015657806395d89b411461016957600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101aa565b6040516100e39190610927565b60405180910390f35b6100ff6100fa366004610998565b61023c565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c2565b610256565b604051601281526020016100e3565b6100ff610151366004610998565b61027a565b6101136101643660046109fe565b6102b9565b6100d6610366565b6100ff61017f366004610998565b610375565b6100ff610192366004610998565b61041f565b6101136101a5366004610a20565b61042d565b6060600380546101b990610a53565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610a53565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b60003361024a81858561053e565b60019150505b92915050565b600033610264858285610696565b61026f858585610710565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061024a90829086906102b4908790610a8e565b61053e565b6000326001600160a01b03831614156102ea576001600160a01b038216600090815260208190526040902054610250565b336001600160a01b0383161415610319576001600160a01b038216600090815260208190526040902054610250565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064015b60405180910390fd5b6060600480546101b990610a53565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161035d565b61026f828686840361053e565b60003361024a818585610710565b6000326001600160a01b038416148061044e5750326001600160a01b038316145b15610481576001600160a01b038084166000908152600160209081526040808320938616835292905220545b9050610250565b336001600160a01b03841614806104a05750336001600160a01b038316145b156104d0576001600160a01b0380841660009081526001602090815260408083209386168352929052205461047a565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b0383166105b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b0382166106355760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006106a2848461042d565b9050600019811461070a57818110156106fd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161035d565b61070a848484840361053e565b50505050565b6001600160a01b03831661078c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b0382166108085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b038316600090815260208190526040902054818110156108975760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161035d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906108ce908490610a8e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161091a91815260200190565b60405180910390a361070a565b600060208083528351808285015260005b8181101561095457858101830151858201604001528201610938565b81811115610966576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461099357600080fd5b919050565b600080604083850312156109ab57600080fd5b6109b48361097c565b946020939093013593505050565b6000806000606084860312156109d757600080fd5b6109e08461097c565b92506109ee6020850161097c565b9150604084013590509250925092565b600060208284031215610a1057600080fd5b610a198261097c565b9392505050565b60008060408385031215610a3357600080fd5b610a3c8361097c565b9150610a4a6020840161097c565b90509250929050565b600181811c90821680610a6757607f821691505b60208210811415610a8857634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610aaf57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220b7e862b33f5871c5f4b68a7ca11e31c10471fae77a607bce0a1253addcb15e0764736f6c63430008090033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b5060405162000c0538038062000c05833981016040819052620000599162000141565b8181600362000069838262000233565b50600462000078828262000233565b5050505050620002fb565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620000a7575f80fd5b81516001600160401b0380821115620000c457620000c462000083565b604051601f8301601f19908116603f01168101908282118183101715620000ef57620000ef62000083565b816040528381526020925086838588010111156200010b575f80fd5b5f91505b838210156200012e57858201830151818301840152908201906200010f565b5f93810190920192909252949350505050565b5f806040838503121562000153575f80fd5b82516001600160401b03808211156200016a575f80fd5b620001788683870162000097565b935060208501519150808211156200018e575f80fd5b506200019d8582860162000097565b9150509250929050565b600181811c90821680620001bc57607f821691505b602082108103620001db57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200022e575f81815260208120601f850160051c81016020861015620002095750805b601f850160051c820191505b818110156200022a5782815560010162000215565b5050505b505050565b81516001600160401b038111156200024f576200024f62000083565b6200026781620002608454620001a7565b84620001e1565b602080601f8311600181146200029d575f8415620002855750858301515b5f19600386901b1c1916600185901b1785556200022a565b5f85815260208120601f198616915b82811015620002cd57888601518255948401946001909101908401620002ac565b5085821015620002eb57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6108fc80620003095f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063313ce5671161007257806395d89b411161005857806395d89b411461012b578063a9059cbb14610133578063dd62ed3e14610146575f80fd5b8063313ce5671461010957806370a0823114610118575f80fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6575b5f80fd5b6100ab610159565b6040516100b89190610757565b60405180910390f35b6100d46100cf3660046107bd565b6101e9565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d46101043660046107e5565b610202565b604051601281526020016100b8565b6100e861012636600461081e565b610225565b6100ab6102cd565b6100d46101413660046107bd565b6102dc565b6100e861015436600461083e565b6102e9565b6060600380546101689061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546101949061086f565b80156101df5780601f106101b6576101008083540402835291602001916101df565b820191905f5260205f20905b8154815290600101906020018083116101c257829003601f168201915b5050505050905090565b5f336101f68185856103f7565b60019150505b92915050565b5f3361020f858285610409565b61021a858585610485565b506001949350505050565b5f6001600160a01b0382163203610253576001600160a01b0382165f908152602081905260409020546101fc565b6001600160a01b0382163303610280576001600160a01b0382165f908152602081905260409020546101fc565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064015b60405180910390fd5b6060600480546101689061086f565b5f336101f6818585610485565b5f326001600160a01b03841614806103095750326001600160a01b038316145b1561033b576001600160a01b038084165f908152600160209081526040808320938616835292905220545b90506101fc565b336001600160a01b038416148061035a5750336001600160a01b038316145b15610389576001600160a01b038084165f90815260016020908152604080832093861683529290522054610334565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016102c4565b6104048383836001610514565b505050565b5f61041484846102e9565b90505f19811461047f5781811015610471576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016102c4565b61047f84848484035f610514565b50505050565b6001600160a01b0383166104c7576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038216610509576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b610404838383610618565b6001600160a01b038416610556576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038316610598576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561047f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060a91815260200190565b60405180910390a350505050565b6001600160a01b038316610642578060025f82825461063791906108a7565b909155506106cb9050565b6001600160a01b0383165f90815260208190526040902054818110156106ad576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016102c4565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610705565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074a91815260200190565b60405180910390a3505050565b5f6020808352835180828501525f5b8181101561078257858101830151858201604001528201610766565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b8575f80fd5b919050565b5f80604083850312156107ce575f80fd5b6107d7836107a2565b946020939093013593505050565b5f805f606084860312156107f7575f80fd5b610800846107a2565b925061080e602085016107a2565b9150604084013590509250925092565b5f6020828403121561082e575f80fd5b610837826107a2565b9392505050565b5f806040838503121561084f575f80fd5b610858836107a2565b9150610866602084016107a2565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a157634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156101fc57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ee5ed205aebde9bd99bcfce3cb969833ce42c8b5553fdc7a2c86922f8e738a3964736f6c63430008140033", } // ObsERC20ABI is the input ABI used to generate the binding from. @@ -390,107 +390,65 @@ func (_ObsERC20 *ObsERC20CallerSession) TotalSupply() (*big.Int, error) { // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.contract.Transact(opts, "approve", spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.Approve(&_ObsERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.Approve(&_ObsERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.Approve(&_ObsERC20.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ObsERC20 *ObsERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ObsERC20 *ObsERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.DecreaseAllowance(&_ObsERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ObsERC20 *ObsERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.DecreaseAllowance(&_ObsERC20.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ObsERC20 *ObsERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ObsERC20 *ObsERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.IncreaseAllowance(&_ObsERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ObsERC20 *ObsERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.IncreaseAllowance(&_ObsERC20.TransactOpts, spender, addedValue) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.Approve(&_ObsERC20.TransactOpts, spender, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.contract.Transact(opts, "transfer", to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.Transfer(&_ObsERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.Transfer(&_ObsERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.Transfer(&_ObsERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.Transfer(&_ObsERC20.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.contract.Transact(opts, "transferFrom", from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.TransferFrom(&_ObsERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.TransferFrom(&_ObsERC20.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_ObsERC20 *ObsERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ObsERC20.Contract.TransferFrom(&_ObsERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ObsERC20 *ObsERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ObsERC20.Contract.TransferFrom(&_ObsERC20.TransactOpts, from, to, value) } // ObsERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ObsERC20 contract. diff --git a/contracts/generated/ObscuroBridge/ObscuroBridge.go b/contracts/generated/ObscuroBridge/ObscuroBridge.go index 24d5cf1172..e4b61ac875 100644 --- a/contracts/generated/ObscuroBridge/ObscuroBridge.go +++ b/contracts/generated/ObscuroBridge/ObscuroBridge.go @@ -31,8 +31,8 @@ var ( // ObscuroBridgeMetaData contains all meta data concerning the ObscuroBridge contract. var ObscuroBridgeMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"promoteToAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setRemoteBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526001805463ffffffff60a01b1916905534801561002057600080fd5b50611cec806100306000396000f3fe6080604052600436106101445760003560e01c806375b238fc116100c0578063a217fddf11610074578063c4d66de811610059578063c4d66de8146103b4578063d547741f146103d4578063e4c3ebc7146103f457600080fd5b8063a217fddf1461037f578063a381c8e21461039457600080fd5b806383bece4d116100a557806383bece4d146102f957806391d148541461031957806393b374421461035f57600080fd5b806375b238fc146102a557806375cb2672146102d957600080fd5b80632f2ff15d11610117578063498d82ab116100fc578063498d82ab146102315780635d872970146102515780635fa7b5841461028557600080fd5b80632f2ff15d146101f157806336568abe1461021157600080fd5b806301ffc9a71461014957806316ce81491461017e5780631888d712146101a0578063248a9ca3146101b3575b600080fd5b34801561015557600080fd5b506101696101643660046117ee565b610428565b60405190151581526020015b60405180910390f35b34801561018a57600080fd5b5061019e610199366004611830565b610491565b005b61019e6101ae366004611830565b6104ec565b3480156101bf57600080fd5b506101e36101ce36600461184d565b60009081526002602052604090206001015490565b604051908152602001610175565b3480156101fd57600080fd5b5061019e61020c366004611866565b610625565b34801561021d57600080fd5b5061019e61022c366004611866565b610650565b34801561023d57600080fd5b5061019e61024c3660046118df565b6106dc565b34801561025d57600080fd5b506101e37f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b34801561029157600080fd5b5061019e6102a0366004611830565b6107a1565b3480156102b157600080fd5b506101e37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102e557600080fd5b5061019e6102f4366004611830565b6107f6565b34801561030557600080fd5b5061019e610314366004611962565b610950565b34801561032557600080fd5b50610169610334366004611866565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561036b57600080fd5b5061019e61037a366004611830565b610b79565b34801561038b57600080fd5b506101e3600081565b3480156103a057600080fd5b5061019e6103af366004611962565b610bce565b3480156103c057600080fd5b5061019e6103cf366004611830565b610d7b565b3480156103e057600080fd5b5061019e6103ef366004611866565b610ea1565b34801561040057600080fd5b506101e37fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061048b57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104bc8133610ec7565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600034116105415760405162461bcd60e51b815260206004820152600f60248201527f456d707479207472616e736665722e000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518082018252348082526001600160a01b03848116602093840190815284519384019290925290518116828401528251808303840181526060909201909252600354909161059991168260025b600080610f47565b6001546001600160a01b03166040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152346024830181905292169163346633fb916044016000604051808303818588803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b50505050505050565b6000828152600260205260409020600101546106418133610ec7565b61064b8383611062565b505050565b6001600160a01b03811633146106ce5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610538565b6106d88282611104565b5050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756107078133610ec7565b6107317f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87611062565b600063458ffd6360e01b87878787876040516024016107549594939291906119cd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260035490915061061c906001600160a01b0316826001610591565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756107cc8133610ec7565b6106d87f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83611104565b600054610100900460ff166108735760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610538565b80600060026101000a8154816001600160a01b0302191690836001600160a01b03160217905550600060029054906101000a90046001600160a01b03166001600160a01b031663a1a227fa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190611a0f565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003546000546001600160a01b0391821691620100009091041633146109de5760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e67657221000000000000000000000000000000006064820152608401610538565b806001600160a01b03166109f0611187565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e646572210000000000000000000000000000006064820152608401610538565b6001600160a01b03841660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff1615610abc57610ab7848484611213565b610b73565b6001600160a01b03841660009081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff1615610b0557610ab78261121e565b60405162461bcd60e51b815260206004820152602560248201527f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206160448201527f737365742e0000000000000000000000000000000000000000000000000000006064820152608401610538565b50505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610ba48133610ec7565b6106d87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583611062565b60008211610c1e5760405162461bcd60e51b815260206004820152601a60248201527f417474656d7074696e6720656d707479207472616e736665722e0000000000006044820152606401610538565b6001600160a01b03831660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16610cf15760405162461bcd60e51b815260206004820152604e60248201527f54686973206164647265737320686173206e6f74206265656e20676976656e2060448201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60648201527f742077686974656c69737465642e000000000000000000000000000000000000608482015260a401610538565b610cfd833330856112bc565b604080516001600160a01b038581166024830152604482018590528381166064808401919091528351808403909101815260849092019092526020810180516001600160e01b03167f83bece4d000000000000000000000000000000000000000000000000000000001790526003549091610b739116826000610591565b600054610100900460ff16610d965760005460ff1615610d9a565b303b155b610e0c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610538565b600054610100900460ff16158015610e2e576000805461ffff19166101011790555b610e37826107f6565b610e617fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533611062565b610e8c7fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105786000611062565b80156106d8576000805461ff00191690555050565b600082815260026020526040902060010154610ebd8133610ec7565b61064b8383611104565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff166106d857610f05816001600160a01b03166014611340565b610f10836020611340565b604051602001610f21929190611a58565b60408051601f198184030181529082905262461bcd60e51b825261053891600401611b05565b60006040518060600160405280876001600160a01b0316815260200186815260200184815250604051602001610f7d9190611b18565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff16906014610fd083611b73565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b81526004016110109493929190611b97565b602060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611bd4565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff166106d85760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556110c03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16156106d85760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008060029054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e9190611a0f565b905090565b61064b838284611528565b6040516000906001600160a01b038316908281818181865af19150503d8060008114611266576040519150601f19603f3d011682016040523d82523d6000602084013e61126b565b606091505b50509050806106d85760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e642045746865720000000000000000000000006044820152606401610538565b6040516001600160a01b0380851660248301528316604482015260648101829052610b739085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611571565b6060600061134f836002611bfe565b61135a906002611c1d565b67ffffffffffffffff81111561137257611372611c35565b6040519080825280601f01601f19166020018201604052801561139c576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106113d3576113d3611c4b565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061141e5761141e611c4b565b60200101906001600160f81b031916908160001a9053506000611442846002611bfe565b61144d906001611c1d565b90505b60018111156114d2577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061148e5761148e611c4b565b1a60f81b8282815181106114a4576114a4611c4b565b60200101906001600160f81b031916908160001a90535060049490941c936114cb81611c61565b9050611450565b5083156115215760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610538565b9392505050565b6040516001600160a01b03831660248201526044810182905261064b9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611309565b60006115c6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116569092919063ffffffff16565b80519091501561064b57808060200190518101906115e49190611c78565b61064b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610538565b6060611665848460008561166d565b949350505050565b6060824710156116e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610538565b6001600160a01b0385163b61173c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610538565b600080866001600160a01b031685876040516117589190611c9a565b60006040518083038185875af1925050503d8060008114611795576040519150601f19603f3d011682016040523d82523d6000602084013e61179a565b606091505b50915091506117aa8282866117b5565b979650505050505050565b606083156117c4575081611521565b8251156117d45782518084602001fd5b8160405162461bcd60e51b81526004016105389190611b05565b60006020828403121561180057600080fd5b81356001600160e01b03198116811461152157600080fd5b6001600160a01b038116811461182d57600080fd5b50565b60006020828403121561184257600080fd5b813561152181611818565b60006020828403121561185f57600080fd5b5035919050565b6000806040838503121561187957600080fd5b82359150602083013561188b81611818565b809150509250929050565b60008083601f8401126118a857600080fd5b50813567ffffffffffffffff8111156118c057600080fd5b6020830191508360208285010111156118d857600080fd5b9250929050565b6000806000806000606086880312156118f757600080fd5b853561190281611818565b9450602086013567ffffffffffffffff8082111561191f57600080fd5b61192b89838a01611896565b9096509450604088013591508082111561194457600080fd5b5061195188828901611896565b969995985093965092949392505050565b60008060006060848603121561197757600080fd5b833561198281611818565b925060208401359150604084013561199981611818565b809150509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03861681526060602082015260006119f06060830186886119a4565b8281036040840152611a038185876119a4565b98975050505050505050565b600060208284031215611a2157600080fd5b815161152181611818565b60005b83811015611a47578181015183820152602001611a2f565b83811115610b735750506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611a90816017850160208801611a2c565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611acd816028840160208801611a2c565b01602801949350505050565b60008151808452611af1816020860160208601611a2c565b601f01601f19169290920160200192915050565b6020815260006115216020830184611ad9565b602081526001600160a01b0382511660208201526000602083015160606040840152611b476080840182611ad9565b9050604084015160608401528091505092915050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415611b8d57611b8d611b5d565b6001019392505050565b600063ffffffff808716835280861660208401525060806040830152611bc06080830185611ad9565b905060ff8316606083015295945050505050565b600060208284031215611be657600080fd5b815167ffffffffffffffff8116811461152157600080fd5b6000816000190483118215151615611c1857611c18611b5d565b500290565b60008219821115611c3057611c30611b5d565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081611c7057611c70611b5d565b506000190190565b600060208284031215611c8a57600080fd5b8151801515811461152157600080fd5b60008251611cac818460208701611a2c565b919091019291505056fea2646970667358221220ff3d89bdd2a8c139f63057a849b2b635520784cd22e91cfd13360119ac56ca6e64736f6c63430008090033", + ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"promoteToAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setRemoteBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040526001805463ffffffff60a01b1916905534801561001f575f80fd5b506118cf8061002d5f395ff3fe60806040526004361061013d575f3560e01c806375b238fc116100bb578063a217fddf11610071578063c4d66de811610057578063c4d66de81461039a578063d547741f146103b9578063e4c3ebc7146103d8575f80fd5b8063a217fddf14610368578063a381c8e21461037b575f80fd5b806383bece4d116100a157806383bece4d146102e657806391d148541461030557806393b3744214610349575f80fd5b806375b238fc1461029457806375cb2672146102c7575f80fd5b80632f2ff15d11610110578063498d82ab116100f6578063498d82ab146102235780635d872970146102425780635fa7b58414610275575f80fd5b80632f2ff15d146101e557806336568abe14610204575f80fd5b806301ffc9a71461014157806316ce8149146101755780631888d71214610196578063248a9ca3146101a9575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611504565b61040b565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461153f565b610473565b005b6101946101a436600461153f565b6104cd565b3480156101b4575f80fd5b506101d76101c336600461155a565b5f9081526002602052604090206001015490565b60405190815260200161016c565b3480156101f0575f80fd5b506101946101ff366004611571565b610600565b34801561020f575f80fd5b5061019461021e366004611571565b61062a565b34801561022e575f80fd5b5061019461023d3660046115e4565b61067b565b34801561024d575f80fd5b506101d77f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b348015610280575f80fd5b5061019461028f36600461153f565b61073f565b34801561029f575f80fd5b506101d77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102d2575f80fd5b506101946102e136600461153f565b610793565b3480156102f1575f80fd5b50610194610300366004611661565b61086b565b348015610310575f80fd5b5061016061031f366004611571565b5f9182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610354575f80fd5b5061019461036336600461153f565b610a84565b348015610373575f80fd5b506101d75f81565b348015610386575f80fd5b50610194610395366004611661565b610ad8565b3480156103a5575f80fd5b506101946103b436600461153f565b610c82565b3480156103c4575f80fd5b506101946103d3366004611571565b610e13565b3480156103e3575f80fd5b506101d77fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061046d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561049d81610e37565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f34116105215760405162461bcd60e51b815260206004820152600f60248201527f456d707479207472616e736665722e000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518082018252348082526001600160a01b03848116602093840190815284519384019290925290518116828401528251808303840181526060909201909252600354909161057891168260025b5f80610e44565b6001546001600160a01b03166040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152346024830181905292169163346633fb916044015f604051808303818588803b1580156105e5575f80fd5b505af11580156105f7573d5f803e3d5ffd5b50505050505050565b5f8281526002602052604090206001015461061a81610e37565b6106248383610f4c565b50505050565b6001600160a01b038116331461066c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106768282610ff7565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106a581610e37565b6106cf7f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87610f4c565b505f63458ffd6360e01b87878787876040516024016106f29594939291906116c8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506105f7906001600160a01b0316826001610571565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561076981610e37565b6106767f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83610ff7565b61079b61107c565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa158015610817573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083b9190611709565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003545f546001600160a01b03918216911633146108f15760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e67657221000000000000000000000000000000006064820152608401610518565b806001600160a01b03166109036110e5565b6001600160a01b03161461097f5760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e646572210000000000000000000000000000006064820152608401610518565b6001600160a01b0384165f9081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16156109ce576109c984848461115e565b610624565b6001600160a01b0384165f9081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff1615610a16576109c982611169565b60405162461bcd60e51b815260206004820152602560248201527f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206160448201527f737365742e0000000000000000000000000000000000000000000000000000006064820152608401610518565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610aae81610e37565b6106767fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610f4c565b5f8211610b275760405162461bcd60e51b815260206004820152601a60248201527f417474656d7074696e6720656d707479207472616e736665722e0000000000006044820152606401610518565b6001600160a01b0383165f9081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16610bf95760405162461bcd60e51b815260206004820152604e60248201527f54686973206164647265737320686173206e6f74206265656e20676976656e2060448201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60648201527f742077686974656c69737465642e000000000000000000000000000000000000608482015260a401610518565b610c0583333085611208565b604080516001600160a01b038581166024830152604482018590528381166064808401919091528351808403909101815260849092019092526020810180516001600160e01b03167f83bece4d0000000000000000000000000000000000000000000000000000000017905260035490916106249116825f610571565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610ccc5750825b90505f8267ffffffffffffffff166001148015610ce85750303b155b905081158015610cf6575080155b15610d2d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d6157845468ff00000000000000001916680100000000000000001785555b610d6a86610793565b610d947fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610f4c565b50610dbf7fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105785f610f4c565b508315610e0b57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f82815260026020526040902060010154610e2d81610e37565b6106248383610ff7565b610e41813361126f565b50565b5f6040518060600160405280876001600160a01b0316815260200186815260200184815250604051602001610e799190611771565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff16906014610ecc836117b5565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b8152600401610f0c94939291906117fc565b6020604051808303815f875af1158015610f28573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f79190611838565b5f8281526002602090815260408083206001600160a01b038516845290915281205460ff16610ff0575f8381526002602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610fa83390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161046d565b505f61046d565b5f8281526002602090815260408083206001600160a01b038516845290915281205460ff1615610ff0575f8381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161046d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166110e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805f9054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611135573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111599190611709565b905090565b6106768382846112dc565b6040515f906001600160a01b038316908281818181865af19150503d805f81146111ae576040519150601f19603f3d011682016040523d82523d5f602084013e6111b3565b606091505b50509050806112045760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e642045746865720000000000000000000000006044820152606401610518565b5050565b6040516001600160a01b0384811660248301528381166044830152606482018390526106249186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061130d565b5f8281526002602090815260408083206001600160a01b038516845290915290205460ff16611204576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610518565b6040516001600160a01b0383811660248301526044820183905261067691859182169063a9059cbb9060640161123d565b5f6113216001600160a01b03841683611387565b905080515f14158015611345575080806020019051810190611343919061185f565b155b15610676576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610518565b606061139483835f61139b565b9392505050565b6060814710156113d9576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610518565b5f80856001600160a01b031684866040516113f4919061187e565b5f6040518083038185875af1925050503d805f811461142e576040519150601f19603f3d011682016040523d82523d5f602084013e611433565b606091505b509150915061144386838361144d565b9695505050505050565b6060826114625761145d826114c2565b611394565b815115801561147957506001600160a01b0384163b155b156114bb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610518565b5080611394565b8051156114d25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215611514575f80fd5b81356001600160e01b031981168114611394575f80fd5b6001600160a01b0381168114610e41575f80fd5b5f6020828403121561154f575f80fd5b81356113948161152b565b5f6020828403121561156a575f80fd5b5035919050565b5f8060408385031215611582575f80fd5b8235915060208301356115948161152b565b809150509250929050565b5f8083601f8401126115af575f80fd5b50813567ffffffffffffffff8111156115c6575f80fd5b6020830191508360208285010111156115dd575f80fd5b9250929050565b5f805f805f606086880312156115f8575f80fd5b85356116038161152b565b9450602086013567ffffffffffffffff8082111561161f575f80fd5b61162b89838a0161159f565b90965094506040880135915080821115611643575f80fd5b506116508882890161159f565b969995985093965092949392505050565b5f805f60608486031215611673575f80fd5b833561167e8161152b565b92506020840135915060408401356116958161152b565b809150509250925092565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201525f6116ea6060830186886116a0565b82810360408401526116fd8185876116a0565b98975050505050505050565b5f60208284031215611719575f80fd5b81516113948161152b565b5f5b8381101561173e578181015183820152602001611726565b50505f910152565b5f815180845261175d816020860160208601611724565b601f01601f19169290920160200192915050565b602081526001600160a01b0382511660208201525f60208301516060604084015261179f6080840182611746565b9050604084015160608401528091505092915050565b5f63ffffffff8083168181036117f2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019392505050565b5f63ffffffff8087168352808616602084015250608060408301526118246080830185611746565b905060ff8316606083015295945050505050565b5f60208284031215611848575f80fd5b815167ffffffffffffffff81168114611394575f80fd5b5f6020828403121561186f575f80fd5b81518015158114611394575f80fd5b5f825161188f818460208701611724565b919091019291505056fea2646970667358221220eb300a1f32731fc01883edb9fd7062b4cbe7d428f2f0a0bc9f4267f6a53a009e64736f6c63430008140033", } // ObscuroBridgeABI is the input ABI used to generate the binding from. @@ -547,23 +547,23 @@ func (_ObscuroBridge *ObscuroBridgeTransactorSession) RemoveToken(asset common.A // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_ObscuroBridge *ObscuroBridgeTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { - return _ObscuroBridge.contract.Transact(opts, "renounceRole", role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ObscuroBridge *ObscuroBridgeTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ObscuroBridge.contract.Transact(opts, "renounceRole", role, callerConfirmation) } // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_ObscuroBridge *ObscuroBridgeSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { - return _ObscuroBridge.Contract.RenounceRole(&_ObscuroBridge.TransactOpts, role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ObscuroBridge *ObscuroBridgeSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ObscuroBridge.Contract.RenounceRole(&_ObscuroBridge.TransactOpts, role, callerConfirmation) } // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_ObscuroBridge *ObscuroBridgeTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { - return _ObscuroBridge.Contract.RenounceRole(&_ObscuroBridge.TransactOpts, role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_ObscuroBridge *ObscuroBridgeTransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _ObscuroBridge.Contract.RenounceRole(&_ObscuroBridge.TransactOpts, role, callerConfirmation) } // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. @@ -671,6 +671,140 @@ func (_ObscuroBridge *ObscuroBridgeTransactorSession) WhitelistToken(asset commo return _ObscuroBridge.Contract.WhitelistToken(&_ObscuroBridge.TransactOpts, asset, name, symbol) } +// ObscuroBridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ObscuroBridge contract. +type ObscuroBridgeInitializedIterator struct { + Event *ObscuroBridgeInitialized // 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 *ObscuroBridgeInitializedIterator) 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(ObscuroBridgeInitialized) + 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(ObscuroBridgeInitialized) + 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 *ObscuroBridgeInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ObscuroBridgeInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ObscuroBridgeInitialized represents a Initialized event raised by the ObscuroBridge contract. +type ObscuroBridgeInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ObscuroBridge *ObscuroBridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*ObscuroBridgeInitializedIterator, error) { + + logs, sub, err := _ObscuroBridge.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ObscuroBridgeInitializedIterator{contract: _ObscuroBridge.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ObscuroBridge *ObscuroBridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ObscuroBridgeInitialized) (event.Subscription, error) { + + logs, sub, err := _ObscuroBridge.contract.WatchLogs(opts, "Initialized") + 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(ObscuroBridgeInitialized) + if err := _ObscuroBridge.contract.UnpackLog(event, "Initialized", 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 +} + +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_ObscuroBridge *ObscuroBridgeFilterer) ParseInitialized(log types.Log) (*ObscuroBridgeInitialized, error) { + event := new(ObscuroBridgeInitialized) + if err := _ObscuroBridge.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ObscuroBridgeRoleAdminChangedIterator is returned from FilterRoleAdminChanged and is used to iterate over the raw logs and unpacked data for RoleAdminChanged events raised by the ObscuroBridge contract. type ObscuroBridgeRoleAdminChangedIterator struct { Event *ObscuroBridgeRoleAdminChanged // Event containing the contract specifics and raw log diff --git a/contracts/generated/WrappedERC20/WrappedERC20.go b/contracts/generated/WrappedERC20/WrappedERC20.go index 71e1dde065..b74ae34fc5 100644 --- a/contracts/generated/WrappedERC20/WrappedERC20.go +++ b/contracts/generated/WrappedERC20/WrappedERC20.go @@ -31,8 +31,8 @@ var ( // WrappedERC20MetaData contains all meta data concerning the WrappedERC20 contract. var WrappedERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"giver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issueFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b50604051620019d7380380620019d78339810160408190526200005a91620002e3565b8181818181600390805190602001906200007692919062000170565b5080516200008c90600490602084019062000170565b5050505050620000c37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000cb60201b60201c565b50506200038a565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166200016c5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200012b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b8280546200017e906200034d565b90600052602060002090601f016020900481019282620001a25760008555620001ed565b82601f10620001bd57805160ff1916838001178555620001ed565b82800160010185558215620001ed579182015b82811115620001ed578251825591602001919060010190620001d0565b50620001fb929150620001ff565b5090565b5b80821115620001fb576000815560010162000200565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023e57600080fd5b81516001600160401b03808211156200025b576200025b62000216565b604051601f8301601f19908116603f0116810190828211818310171562000286576200028662000216565b81604052838152602092508683858801011115620002a357600080fd5b600091505b83821015620002c75785820183015181830184015290820190620002a8565b83821115620002d95760008385830101525b9695505050505050565b60008060408385031215620002f757600080fd5b82516001600160401b03808211156200030f57600080fd5b6200031d868387016200022c565b935060208501519150808211156200033457600080fd5b5062000343858286016200022c565b9150509250929050565b600181811c908216806200036257607f821691505b602082108114156200038457634e487b7160e01b600052602260045260246000fd5b50919050565b61163d806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806339509351116100d8578063979005ad1161008c578063a9059cbb11610066578063a9059cbb1461031a578063d547741f1461032d578063dd62ed3e1461034057600080fd5b8063979005ad146102ec578063a217fddf146102ff578063a457c2d71461030757600080fd5b806375b238fc116100bd57806375b238fc1461028457806391d14854146102ab57806395d89b41146102e457600080fd5b8063395093511461025e57806370a082311461027157600080fd5b806323b872dd1161012f5780632f2ff15d116101145780632f2ff15d14610229578063313ce5671461023c57806336568abe1461024b57600080fd5b806323b872dd146101f3578063248a9ca31461020657600080fd5b8063095ea7b311610160578063095ea7b3146101b957806318160ddd146101cc5780631dd319cb146101de57600080fd5b806301ffc9a71461017c57806306fdde03146101a4575b600080fd5b61018f61018a3660046112f7565b610353565b60405190151581526020015b60405180910390f35b6101ac6103ec565b60405161019b9190611365565b61018f6101c73660046113b4565b61047e565b6002545b60405190815260200161019b565b6101f16101ec3660046113b4565b610496565b005b61018f6102013660046113de565b61052d565b6101d061021436600461141a565b60009081526007602052604090206001015490565b6101f1610237366004611433565b610551565b6040516012815260200161019b565b6101f1610259366004611433565b610577565b61018f61026c3660046113b4565b610603565b6101d061027f36600461145f565b610642565b6101d07fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b61018f6102b9366004611433565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101ac6106ea565b6101f16102fa3660046113b4565b6106f9565b6101d0600081565b61018f6103153660046113b4565b61072e565b61018f6103283660046113b4565b6107d8565b6101f161033b366004611433565b6107e6565b6101d061034e36600461147a565b61080c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103e657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103fb906114a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610427906114a4565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60003361048c81858561091d565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104c18133610a75565b816104cb84610642565b101561051e5760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6105288383610af5565b505050565b60003361053b858285610c7a565b610546858585610cf4565b506001949350505050565b60008281526007602052604090206001015461056d8133610a75565b6105288383610f0b565b6001600160a01b03811633146105f55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610515565b6105ff8282610fad565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061048c908290869061063d9087906114f5565b61091d565b6000326001600160a01b0383161415610673576001600160a01b0382166000908152602081905260409020546103e6565b336001600160a01b03831614156106a2576001600160a01b0382166000908152602081905260409020546103e6565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e6365006044820152606401610515565b6060600480546103fb906114a4565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756107248133610a75565b6105288383611030565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156107cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610515565b610546828686840361091d565b60003361048c818585610cf4565b6000828152600760205260409020600101546108028133610a75565b6105288383610fad565b6000326001600160a01b038416148061082d5750326001600160a01b038316145b15610860576001600160a01b038084166000908152600160209081526040808320938616835292905220545b90506103e6565b336001600160a01b038416148061087f5750336001600160a01b038316145b156108af576001600160a01b03808416600090815260016020908152604080832093861683529290522054610859565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383166109985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b038216610a145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166105ff57610ab3816001600160a01b0316601461110f565b610abe83602061110f565b604051602001610acf92919061150d565b60408051601f198184030181529082905262461bcd60e51b825261051591600401611365565b6001600160a01b038216610b715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03821660009081526020819052604090205481811015610c005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610c2f90849061158e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000610c86848461080c565b90506000198114610cee5781811015610ce15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610515565b610cee848484840361091d565b50505050565b6001600160a01b038316610d705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b038216610dec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03831660009081526020819052604090205481811015610e7b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610515565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610eb29084906114f5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610efe91815260200190565b60405180910390a3610cee565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166105ff5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610f693390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16156105ff5760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166110865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610515565b806002600082825461109891906114f5565b90915550506001600160a01b038216600090815260208190526040812080548392906110c59084906114f5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6060600061111e8360026115a5565b6111299060026114f5565b67ffffffffffffffff811115611141576111416115c4565b6040519080825280601f01601f19166020018201604052801561116b576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106111a2576111a26115da565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106111ed576111ed6115da565b60200101906001600160f81b031916908160001a90535060006112118460026115a5565b61121c9060016114f5565b90505b60018111156112a1577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061125d5761125d6115da565b1a60f81b828281518110611273576112736115da565b60200101906001600160f81b031916908160001a90535060049490941c9361129a816115f0565b905061121f565b5083156112f05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610515565b9392505050565b60006020828403121561130957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112f057600080fd5b60005b8381101561135457818101518382015260200161133c565b83811115610cee5750506000910152565b6020815260008251806020840152611384816040850160208701611339565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146113af57600080fd5b919050565b600080604083850312156113c757600080fd5b6113d083611398565b946020939093013593505050565b6000806000606084860312156113f357600080fd5b6113fc84611398565b925061140a60208501611398565b9150604084013590509250925092565b60006020828403121561142c57600080fd5b5035919050565b6000806040838503121561144657600080fd5b8235915061145660208401611398565b90509250929050565b60006020828403121561147157600080fd5b6112f082611398565b6000806040838503121561148d57600080fd5b61149683611398565b915061145660208401611398565b600181811c908216806114b857607f821691505b602082108114156114d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611508576115086114df565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611545816017850160208801611339565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611582816028840160208801611339565b01602801949350505050565b6000828210156115a0576115a06114df565b500390565b60008160001904831182151516156115bf576115bf6114df565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816115ff576115ff6114df565b50600019019056fea26469706673582212201c0c3a851d2bc9f4f94393362a160e99651c656d627113abd657cce4d7d8770964736f6c63430008090033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"giver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issueFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b50604051620012d3380380620012d3833981016040819052620000599162000228565b8181818160036200006b83826200031a565b5060046200007a82826200031a565b5050505050620000b17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000ba60201b60201c565b505050620003e2565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1662000161575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000164565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126200018e575f80fd5b81516001600160401b0380821115620001ab57620001ab6200016a565b604051601f8301601f19908116603f01168101908282118183101715620001d657620001d66200016a565b81604052838152602092508683858801011115620001f2575f80fd5b5f91505b83821015620002155785820183015181830184015290820190620001f6565b5f93810190920192909252949350505050565b5f80604083850312156200023a575f80fd5b82516001600160401b038082111562000251575f80fd5b6200025f868387016200017e565b9350602085015191508082111562000275575f80fd5b5062000284858286016200017e565b9150509250929050565b600181811c90821680620002a357607f821691505b602082108103620002c257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000315575f81815260208120601f850160051c81016020861015620002f05750805b601f850160051c820191505b818110156200031157828155600101620002fc565b5050505b505050565b81516001600160401b038111156200033657620003366200016a565b6200034e816200034784546200028e565b84620002c8565b602080601f83116001811462000384575f84156200036c5750858301515b5f19600386901b1c1916600185901b17855562000311565b5f85815260208120601f198616915b82811015620003b45788860151825594840194600190910190840162000393565b5085821015620003d257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610ee380620003f05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c806336568abe116100c7578063979005ad1161007d578063a9059cbb11610063578063a9059cbb146102c2578063d547741f146102d5578063dd62ed3e146102e8575f80fd5b8063979005ad146102a8578063a217fddf146102bb575f80fd5b806375b238fc116100ad57806375b238fc1461024157806391d148541461026857806395d89b41146102a0575f80fd5b806336568abe1461021b57806370a082311461022e575f80fd5b80631dd319cb1161011c578063248a9ca311610102578063248a9ca3146101d75780632f2ff15d146101f9578063313ce5671461020c575f80fd5b80631dd319cb146101af57806323b872dd146101c4575f80fd5b806301ffc9a71461014d57806306fdde0314610175578063095ea7b31461018a57806318160ddd1461019d575b5f80fd5b61016061015b366004610cc7565b6102fb565b60405190151581526020015b60405180910390f35b61017d610393565b60405161016c9190610d0d565b610160610198366004610d73565b610423565b6002545b60405190815260200161016c565b6101c26101bd366004610d73565b61043a565b005b6101606101d2366004610d9b565b6104d0565b6101a16101e5366004610dd4565b5f9081526007602052604090206001015490565b6101c2610207366004610deb565b6104f3565b6040516012815260200161016c565b6101c2610229366004610deb565b61051d565b6101a161023c366004610e15565b610569565b6101a17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610160610276366004610deb565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61017d61060c565b6101c26102b6366004610d73565b61061b565b6101a15f81565b6101606102d0366004610d73565b61064f565b6101c26102e3366004610deb565b61065c565b6101a16102f6366004610e2e565b610680565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061038d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103a290610e56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610e56565b80156104195780601f106103f057610100808354040283529160200191610419565b820191905f5260205f20905b8154815290600101906020018083116103fc57829003601f168201915b5050505050905090565b5f3361043081858561078e565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104648161079b565b8161046e84610569565b10156104c15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104cb83836107a8565b505050565b5f336104dd8582856107e0565b6104e8858585610856565b506001949350505050565b5f8281526007602052604090206001015461050d8161079b565b61051783836108b3565b50505050565b6001600160a01b038116331461055f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cb828261095e565b5f6001600160a01b0382163203610597576001600160a01b0382165f9081526020819052604090205461038d565b6001600160a01b03821633036105c4576001600160a01b0382165f9081526020819052604090205461038d565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104b8565b6060600480546103a290610e56565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106458161079b565b6104cb83836109e3565b5f33610430818585610856565b5f828152600760205260409020600101546106768161079b565b610517838361095e565b5f326001600160a01b03841614806106a05750326001600160a01b038316145b156106d2576001600160a01b038084165f908152600160209081526040808320938616835292905220545b905061038d565b336001600160a01b03841614806106f15750336001600160a01b038316145b15610720576001600160a01b038084165f908152600160209081526040808320938616835292905220546106cb565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104b8565b6104cb8383836001610a17565b6107a58133610b1b565b50565b6001600160a01b0382166107d157604051634b637e8f60e11b81525f60048201526024016104b8565b6107dc825f83610b88565b5050565b5f6107eb8484610680565b90505f1981146105175781811015610848576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104b8565b61051784848484035f610a17565b6001600160a01b03831661087f57604051634b637e8f60e11b81525f60048201526024016104b8565b6001600160a01b0382166108a85760405163ec442f0560e01b81525f60048201526024016104b8565b6104cb838383610b88565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff16610957575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561090f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038d565b505f61038d565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1615610957575f8381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038d565b6001600160a01b038216610a0c5760405163ec442f0560e01b81525f60048201526024016104b8565b6107dc5f8383610b88565b6001600160a01b038416610a59576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038316610a9b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561051757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b0d91815260200190565b60405180910390a350505050565b5f8281526007602090815260408083206001600160a01b038516845290915290205460ff166107dc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104b8565b6001600160a01b038316610bb2578060025f828254610ba79190610e8e565b90915550610c3b9050565b6001600160a01b0383165f9081526020819052604090205481811015610c1d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104b8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c5757600280548290039055610c75565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cba91815260200190565b60405180910390a3505050565b5f60208284031215610cd7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610d3857858101830151858201604001528201610d1c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d6e575f80fd5b919050565b5f8060408385031215610d84575f80fd5b610d8d83610d58565b946020939093013593505050565b5f805f60608486031215610dad575f80fd5b610db684610d58565b9250610dc460208501610d58565b9150604084013590509250925092565b5f60208284031215610de4575f80fd5b5035919050565b5f8060408385031215610dfc575f80fd5b82359150610e0c60208401610d58565b90509250929050565b5f60208284031215610e25575f80fd5b610d0682610d58565b5f8060408385031215610e3f575f80fd5b610e4883610d58565b9150610e0c60208401610d58565b600181811c90821680610e6a57607f821691505b602082108103610e8857634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561038d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d78cf2dd9ecf4da03679034ab54dbc38a0748a2a50f13ee501925e8df4738b1264736f6c63430008140033", } // WrappedERC20ABI is the input ABI used to generate the binding from. @@ -545,23 +545,23 @@ func (_WrappedERC20 *WrappedERC20CallerSession) TotalSupply() (*big.Int, error) // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "approve", spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.Approve(&_WrappedERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.Approve(&_WrappedERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.Approve(&_WrappedERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.Approve(&_WrappedERC20.TransactOpts, spender, value) } // BurnFor is a paid mutator transaction binding the contract method 0x1dd319cb. @@ -585,27 +585,6 @@ func (_WrappedERC20 *WrappedERC20TransactorSession) BurnFor(giver common.Address return _WrappedERC20.Contract.BurnFor(&_WrappedERC20.TransactOpts, giver, amount) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.DecreaseAllowance(&_WrappedERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.DecreaseAllowance(&_WrappedERC20.TransactOpts, spender, subtractedValue) -} - // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d. // // Solidity: function grantRole(bytes32 role, address account) returns() @@ -627,27 +606,6 @@ func (_WrappedERC20 *WrappedERC20TransactorSession) GrantRole(role [32]byte, acc return _WrappedERC20.Contract.GrantRole(&_WrappedERC20.TransactOpts, role, account) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.IncreaseAllowance(&_WrappedERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_WrappedERC20 *WrappedERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.IncreaseAllowance(&_WrappedERC20.TransactOpts, spender, addedValue) -} - // IssueFor is a paid mutator transaction binding the contract method 0x979005ad. // // Solidity: function issueFor(address receiver, uint256 amount) returns() @@ -671,23 +629,23 @@ func (_WrappedERC20 *WrappedERC20TransactorSession) IssueFor(receiver common.Add // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_WrappedERC20 *WrappedERC20Transactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "renounceRole", role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_WrappedERC20 *WrappedERC20Transactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _WrappedERC20.contract.Transact(opts, "renounceRole", role, callerConfirmation) } // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_WrappedERC20 *WrappedERC20Session) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { - return _WrappedERC20.Contract.RenounceRole(&_WrappedERC20.TransactOpts, role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_WrappedERC20 *WrappedERC20Session) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _WrappedERC20.Contract.RenounceRole(&_WrappedERC20.TransactOpts, role, callerConfirmation) } // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe. // -// Solidity: function renounceRole(bytes32 role, address account) returns() -func (_WrappedERC20 *WrappedERC20TransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) { - return _WrappedERC20.Contract.RenounceRole(&_WrappedERC20.TransactOpts, role, account) +// Solidity: function renounceRole(bytes32 role, address callerConfirmation) returns() +func (_WrappedERC20 *WrappedERC20TransactorSession) RenounceRole(role [32]byte, callerConfirmation common.Address) (*types.Transaction, error) { + return _WrappedERC20.Contract.RenounceRole(&_WrappedERC20.TransactOpts, role, callerConfirmation) } // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f. @@ -713,44 +671,44 @@ func (_WrappedERC20 *WrappedERC20TransactorSession) RevokeRole(role [32]byte, ac // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "transfer", to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.Transfer(&_WrappedERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.Transfer(&_WrappedERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.Transfer(&_WrappedERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.Transfer(&_WrappedERC20.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.contract.Transact(opts, "transferFrom", from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.TransferFrom(&_WrappedERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.TransferFrom(&_WrappedERC20.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) -func (_WrappedERC20 *WrappedERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _WrappedERC20.Contract.TransferFrom(&_WrappedERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_WrappedERC20 *WrappedERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _WrappedERC20.Contract.TransferFrom(&_WrappedERC20.TransactOpts, from, to, value) } // WrappedERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WrappedERC20 contract. From 220114128b8a8cb9b55f7689897cc0dc60d688b7 Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Tue, 19 Dec 2023 15:41:08 +0200 Subject: [PATCH 3/6] Upgraded hardhat version. --- .../ConstantSupplyERC20/ConstantSupplyERC20.go | 2 +- .../CrossChainMessenger/CrossChainMessenger.go | 2 +- .../generated/EthereumBridge/EthereumBridge.go | 2 +- .../GasConsumerBalance/GasConsumerBalance.go | 2 +- .../ManagementContract/ManagementContract.go | 2 +- contracts/generated/MessageBus/MessageBus.go | 2 +- contracts/generated/ObsERC20/ObsERC20.go | 2 +- .../generated/ObscuroBridge/ObscuroBridge.go | 2 +- contracts/generated/WrappedERC20/WrappedERC20.go | 2 +- contracts/package.json | 2 +- contracts/src/common/ConstantSupplyERC20.sol | 8 +++++--- contracts/test/bridge-test.ts | 16 +++++++++++++--- 12 files changed, 28 insertions(+), 16 deletions(-) diff --git a/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go b/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go index 50f6473d43..1142cf1824 100644 --- a/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go +++ b/contracts/generated/ConstantSupplyERC20/ConstantSupplyERC20.go @@ -32,7 +32,7 @@ var ( // ConstantSupplyERC20MetaData contains all meta data concerning the ConstantSupplyERC20 contract. var ConstantSupplyERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801562000010575f80fd5b5060405162000c3038038062000c3083398101604081905262000033916200029d565b8282600362000043838262000397565b50600462000052828262000397565b5050506200006733826200007060201b60201c565b50505062000485565b6001600160a01b0382166200009f5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b620000ac5f8383620000b0565b5050565b6001600160a01b038316620000de578060025f828254620000d291906200045f565b90915550620001509050565b6001600160a01b0383165f9081526020819052604090205481811015620001325760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000096565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166200016e576002805482900390556200018c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001d291815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000203575f80fd5b81516001600160401b0380821115620002205762000220620001df565b604051601f8301601f19908116603f011681019082821181831017156200024b576200024b620001df565b8160405283815260209250868385880101111562000267575f80fd5b5f91505b838210156200028a57858201830151818301840152908201906200026b565b5f93810190920192909252949350505050565b5f805f60608486031215620002b0575f80fd5b83516001600160401b0380821115620002c7575f80fd5b620002d587838801620001f3565b94506020860151915080821115620002eb575f80fd5b50620002fa86828701620001f3565b925050604084015190509250925092565b600181811c908216806200032057607f821691505b6020821081036200033f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000392575f81815260208120601f850160051c810160208610156200036d5750805b601f850160051c820191505b818110156200038e5782815560010162000379565b5050505b505050565b81516001600160401b03811115620003b357620003b3620001df565b620003cb81620003c484546200030b565b8462000345565b602080601f83116001811462000401575f8415620003e95750858301515b5f19600386901b1c1916600185901b1785556200038e565b5f85815260208120601f198616915b82811015620004315788860151825594840194600190910190840162000410565b50858210156200044f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200047f57634e487b7160e01b5f52601160045260245ffd5b92915050565b61079d80620004935f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063313ce5671161007257806395d89b411161005857806395d89b4114610140578063a9059cbb14610148578063dd62ed3e1461015b575f80fd5b8063313ce5671461010957806370a0823114610118575f80fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6575b5f80fd5b6100ab610193565b6040516100b891906105f8565b60405180910390f35b6100d46100cf36600461065e565b610223565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610686565b61023c565b604051601281526020016100b8565b6100e86101263660046106bf565b6001600160a01b03165f9081526020819052604090205490565b6100ab61025f565b6100d461015636600461065e565b61026e565b6100e86101693660046106df565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101a290610710565b80601f01602080910402602001604051908101604052809291908181526020018280546101ce90610710565b80156102195780601f106101f057610100808354040283529160200191610219565b820191905f5260205f20905b8154815290600101906020018083116101fc57829003601f168201915b5050505050905090565b5f3361023081858561027b565b60019150505b92915050565b5f3361024985828561028d565b610254858585610326565b506001949350505050565b6060600480546101a290610710565b5f33610230818585610326565b61028883838360016103b5565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146103205781811015610312576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61032084848484035f6103b5565b50505050565b6001600160a01b038316610368576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b0382166103aa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6102888383836104b9565b6001600160a01b0384166103f7576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b038316610439576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561032057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ab91815260200190565b60405180910390a350505050565b6001600160a01b0383166104e3578060025f8282546104d89190610748565b9091555061056c9050565b6001600160a01b0383165f908152602081905260409020548181101561054e576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610309565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610588576002805482900390556105a6565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105eb91815260200190565b60405180910390a3505050565b5f6020808352835180828501525f5b8181101561062357858101830151858201604001528201610607565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610659575f80fd5b919050565b5f806040838503121561066f575f80fd5b61067883610643565b946020939093013593505050565b5f805f60608486031215610698575f80fd5b6106a184610643565b92506106af60208501610643565b9150604084013590509250925092565b5f602082840312156106cf575f80fd5b6106d882610643565b9392505050565b5f80604083850312156106f0575f80fd5b6106f983610643565b915061070760208401610643565b90509250929050565b600181811c9082168061072457607f821691505b60208210810361074257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023657634e487b7160e01b5f52601160045260245ffdfea2646970667358221220c2fead2f098c766cc98c4b17615ad00ab6cbb6c547c8bc6ac0ce17231eb3a9a364736f6c63430008140033", + Bin: "0x60806040523480156200001157600080fd5b5060405162000c7738038062000c778339810160408190526200003491620002ab565b82826003620000448382620003ad565b506004620000538282620003ad565b5050506200006833826200007160201b60201c565b505050620004a1565b6001600160a01b038216620000a15760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000af60008383620000b3565b5050565b6001600160a01b038316620000e2578060026000828254620000d6919062000479565b90915550620001569050565b6001600160a01b03831660009081526020819052604090205481811015620001375760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000098565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001745760028054829003905562000193565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001d991815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020e57600080fd5b81516001600160401b03808211156200022b576200022b620001e6565b604051601f8301601f19908116603f01168101908282118183101715620002565762000256620001e6565b816040528381526020925086838588010111156200027357600080fd5b600091505b8382101562000297578582018301518183018401529082019062000278565b600093810190920192909252949350505050565b600080600060608486031215620002c157600080fd5b83516001600160401b0380821115620002d957600080fd5b620002e787838801620001fc565b94506020860151915080821115620002fe57600080fd5b506200030d86828701620001fc565b925050604084015190509250925092565b600181811c908216806200033357607f821691505b6020821081036200035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a857600081815260208120601f850160051c81016020861015620003835750805b601f850160051c820191505b81811015620003a4578281556001016200038f565b5050505b505050565b81516001600160401b03811115620003c957620003c9620001e6565b620003e181620003da84546200031e565b846200035a565b602080601f831160018114620004195760008415620004005750858301515b600019600386901b1c1916600185901b178555620003a4565b600085815260208120601f198616915b828110156200044a5788860151825594840194600190910190840162000429565b5085821015620004695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200049b57634e487b7160e01b600052601160045260246000fd5b92915050565b6107c680620004b16000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b4114610146578063a9059cbb1461014e578063dd62ed3e1461016157600080fd5b8063313ce5671461010e57806370a082311461011d57600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e957806323b872dd146100fb575b600080fd5b6100b061019a565b6040516100bd9190610610565b60405180910390f35b6100d96100d436600461067a565b61022c565b60405190151581526020016100bd565b6002545b6040519081526020016100bd565b6100d96101093660046106a4565b610246565b604051601281526020016100bd565b6100ed61012b3660046106e0565b6001600160a01b031660009081526020819052604090205490565b6100b061026a565b6100d961015c36600461067a565b610279565b6100ed61016f366004610702565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101a990610735565b80601f01602080910402602001604051908101604052809291908181526020018280546101d590610735565b80156102225780601f106101f757610100808354040283529160200191610222565b820191906000526020600020905b81548152906001019060200180831161020557829003601f168201915b5050505050905090565b60003361023a818585610287565b60019150505b92915050565b600033610254858285610299565b61025f858585610335565b506001949350505050565b6060600480546101a990610735565b60003361023a818585610335565b61029483838360016103c6565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461032f5781811015610320576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61032f848484840360006103c6565b50505050565b6001600160a01b038316610378576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610317565b6001600160a01b0382166103bb576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610317565b6102948383836104cd565b6001600160a01b038416610409576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610317565b6001600160a01b03831661044c576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610317565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561032f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104bf91815260200190565b60405180910390a350505050565b6001600160a01b0383166104f85780600260008282546104ed919061076f565b909155506105839050565b6001600160a01b03831660009081526020819052604090205481811015610564576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610317565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661059f576002805482900390556105be565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161060391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561063d57858101830151858201604001528201610621565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461067557600080fd5b919050565b6000806040838503121561068d57600080fd5b6106968361065e565b946020939093013593505050565b6000806000606084860312156106b957600080fd5b6106c28461065e565b92506106d06020850161065e565b9150604084013590509250925092565b6000602082840312156106f257600080fd5b6106fb8261065e565b9392505050565b6000806040838503121561071557600080fd5b61071e8361065e565b915061072c6020840161065e565b90509250929050565b600181811c9082168061074957607f821691505b60208210810361076957634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024057634e487b7160e01b600052601160045260246000fdfea2646970667358221220dfee8b2508201459d014b985ef570589fb9fe2647a943251cbfaf253dc423e2764736f6c63430008140033", } // ConstantSupplyERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go index 3c0786ca12..2a31ae18f6 100644 --- a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go +++ b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go @@ -42,7 +42,7 @@ type StructsCrossChainMessage struct { // CrossChainMessengerMetaData contains all meta data concerning the CrossChainMessenger contract. var CrossChainMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"crossChainSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"encodeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messageBusAddr\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"message\",\"type\":\"tuple\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50610a438061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c80639b7cf1ee1161004d5780639b7cf1ee146100bc578063a1a227fa146100d1578063c4d66de8146100e1575f80fd5b80635b76f28b1461006857806363012de514610091575b5f80fd5b61007b610076366004610595565b6100f4565b604051610088919061065e565b60405180910390f35b6001546100a4906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b6100cf6100ca366004610677565b610173565b005b5f546001600160a01b03166100a4565b6100cf6100ef3660046106ae565b61029e565b60606040518060600160405280856001600160a01b0316815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093855250505060209182015260405161015b9291016106c7565b60405160208183030381529060405290509392505050565b61017c81610403565b61018960208201826106ae565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555f6101c4608083018361070b565b8101906101d191906107dc565b90505f80825f01516001600160a01b03165a84602001516040516101f591906108a8565b5f604051808303815f8787f1925050503d805f811461022f576040519150601f19603f3d011682016040523d82523d5f602084013e610234565b606091505b50915091508161027b57806040517fa5fa8d2b000000000000000000000000000000000000000000000000000000008152600401610272919061065e565b60405180910390fd5b50506001805473ffffffffffffffffffffffffffffffffffffffff191690555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156102e85750825b90505f8267ffffffffffffffff1660011480156103045750303b155b905081158015610312575080155b15610349576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037d57845468ff00000000000000001916680100000000000000001785555b5f80546001600160a01b03881673ffffffffffffffffffffffffffffffffffffffff199182161790915560018054909116905583156103fb57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f546040517f33a88c720000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906333a88c729061044b90849060040161090e565b602060405180830381865afa158015610466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048a91906109ee565b6104d65760405162461bcd60e51b815260206004820152601f60248201527f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e006044820152606401610272565b5f816040516020016104e8919061090e565b60408051601f1981840301815291815281516020928301205f818152600290935291205490915060ff161561055f5760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c726561647920636f6e73756d65642e000000000000006044820152606401610272565b5f908152600260205260409020805460ff1916600117905550565b80356001600160a01b0381168114610590575f80fd5b919050565b5f805f604084860312156105a7575f80fd5b6105b08461057a565b9250602084013567ffffffffffffffff808211156105cc575f80fd5b818601915086601f8301126105df575f80fd5b8135818111156105ed575f80fd5b8760208285010111156105fe575f80fd5b6020830194508093505050509250925092565b5f5b8381101561062b578181015183820152602001610613565b50505f910152565b5f815180845261064a816020860160208601610611565b601f01601f19169290920160200192915050565b602081525f6106706020830184610633565b9392505050565b5f60208284031215610687575f80fd5b813567ffffffffffffffff81111561069d575f80fd5b820160c08185031215610670575f80fd5b5f602082840312156106be575f80fd5b6106708261057a565b602081526001600160a01b0382511660208201525f6020830151606060408401526106f56080840182610633565b9050604084015160608401528091505092915050565b5f808335601e19843603018112610720575f80fd5b83018035915067ffffffffffffffff82111561073a575f80fd5b60200191503681900382131561074e575f80fd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156107a5576107a5610755565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156107d4576107d4610755565b604052919050565b5f60208083850312156107ed575f80fd5b823567ffffffffffffffff80821115610804575f80fd5b9084019060608287031215610817575f80fd5b61081f610782565b6108288361057a565b8152838301358281111561083a575f80fd5b8301601f8101881361084a575f80fd5b80358381111561085c5761085c610755565b61086e601f8201601f191687016107ab565b93508084528886828401011115610883575f80fd5b80868301878601375f9084018601525092830152604090810135908201529392505050565b5f82516108b9818460208701610611565b9190910192915050565b803563ffffffff81168114610590575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b803560ff81168114610590575f80fd5b602081526001600160a01b036109238361057a565b1660208201525f602083013567ffffffffffffffff808216808314610946575f80fd5b80604086015250610959604086016108c3565b915063ffffffff808316606086015280610975606088016108c3565b1660808601525060808501359150601e19853603018212610994575f80fd5b60209185019182019135818111156109aa575f80fd5b8036038313156109b8575f80fd5b60c060a08601526109cd60e0860182856108d6565b925050506109dd60a085016108fe565b60ff811660c0850152509392505050565b5f602082840312156109fe575f80fd5b81518015158114610670575f80fdfea26469706673582212207866e94e178cdd6434f7587649cf64f2e4539464826cdd49ba12f78e331b4c6764736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b50610a86806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80639b7cf1ee116100505780639b7cf1ee146100c0578063a1a227fa146100d5578063c4d66de8146100e657600080fd5b80635b76f28b1461006c57806363012de514610095575b600080fd5b61007f61007a3660046105ac565b6100f9565b60405161008c919061067f565b60405180910390f35b6001546100a8906001600160a01b031681565b6040516001600160a01b03909116815260200161008c565b6100d36100ce366004610699565b610179565b005b6000546001600160a01b03166100a8565b6100d36100f43660046106d4565b6102ab565b60606040518060600160405280856001600160a01b0316815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020918201526040516101619291016106ef565b60405160208183030381529060405290509392505050565b61018281610413565b61018f60208201826106d4565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560006101cb6080830183610734565b8101906101d8919061080b565b905060008082600001516001600160a01b03165a84602001516040516101fe91906108df565b60006040518083038160008787f1925050503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b50915091508161028857806040517fa5fa8d2b00000000000000000000000000000000000000000000000000000000815260040161027f919061067f565b60405180910390fd5b50506001805473ffffffffffffffffffffffffffffffffffffffff191690555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102f65750825b905060008267ffffffffffffffff1660011480156103135750303b155b905081158015610321575080155b15610358576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561038c57845468ff00000000000000001916680100000000000000001785555b600080546001600160a01b03881673ffffffffffffffffffffffffffffffffffffffff1991821617909155600180549091169055831561040b57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6000546040517f33a88c720000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906333a88c729061045c908490600401610949565b602060405180830381865afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190610a2e565b6104e95760405162461bcd60e51b815260206004820152601f60248201527f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e00604482015260640161027f565b6000816040516020016104fc9190610949565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156105745760405162461bcd60e51b815260206004820152601960248201527f4d65737361676520616c726561647920636f6e73756d65642e00000000000000604482015260640161027f565b6000908152600260205260409020805460ff1916600117905550565b80356001600160a01b03811681146105a757600080fd5b919050565b6000806000604084860312156105c157600080fd5b6105ca84610590565b9250602084013567ffffffffffffffff808211156105e757600080fd5b818601915086601f8301126105fb57600080fd5b81358181111561060a57600080fd5b87602082850101111561061c57600080fd5b6020830194508093505050509250925092565b60005b8381101561064a578181015183820152602001610632565b50506000910152565b6000815180845261066b81602086016020860161062f565b601f01601f19169290920160200192915050565b6020815260006106926020830184610653565b9392505050565b6000602082840312156106ab57600080fd5b813567ffffffffffffffff8111156106c257600080fd5b820160c0818503121561069257600080fd5b6000602082840312156106e657600080fd5b61069282610590565b602081526001600160a01b038251166020820152600060208301516060604084015261071e6080840182610653565b9050604084015160608401528091505092915050565b6000808335601e1984360301811261074b57600080fd5b83018035915067ffffffffffffffff82111561076657600080fd5b60200191503681900382131561077b57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156107d4576107d4610782565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561080357610803610782565b604052919050565b6000602080838503121561081e57600080fd5b823567ffffffffffffffff8082111561083657600080fd5b908401906060828703121561084a57600080fd5b6108526107b1565b61085b83610590565b8152838301358281111561086e57600080fd5b8301601f8101881361087f57600080fd5b80358381111561089157610891610782565b6108a3601f8201601f191687016107da565b935080845288868284010111156108b957600080fd5b808683018786013760009084018601525092830152604090810135908201529392505050565b600082516108f181846020870161062f565b9190910192915050565b803563ffffffff811681146105a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff811681146105a757600080fd5b602081526001600160a01b0361095e83610590565b1660208201526000602083013567ffffffffffffffff80821680831461098357600080fd5b80604086015250610996604086016108fb565b915063ffffffff8083166060860152806109b2606088016108fb565b1660808601525060808501359150601e198536030182126109d257600080fd5b60209185019182019135818111156109e957600080fd5b8036038313156109f857600080fd5b60c060a0860152610a0d60e08601828561090f565b92505050610a1d60a08501610938565b60ff811660c0850152509392505050565b600060208284031215610a4057600080fd5b8151801515811461069257600080fdfea26469706673582212205dc5b80e9d88b384254cf417ae26dc0174232223f8426bc65bd43cc898376cdd64736f6c63430008140033", } // CrossChainMessengerABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/EthereumBridge/EthereumBridge.go b/contracts/generated/EthereumBridge/EthereumBridge.go index c2b8843a6a..02feb4b1fa 100644 --- a/contracts/generated/EthereumBridge/EthereumBridge.go +++ b/contracts/generated/EthereumBridge/EthereumBridge.go @@ -32,7 +32,7 @@ var ( // EthereumBridgeMetaData contains all meta data concerning the EthereumBridge contract. var EthereumBridgeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"localAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"CreatedWrappedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"hasTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"localToRemoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"crossChainAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"onCreateTokenCommand\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"remoteToLocalToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"contractWrappedERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040526001805463ffffffff60a01b1916905534801561001f575f80fd5b506125ca8061002d5f395ff3fe608060405260043610620000c5575f3560e01c806383bece4d11620000725780639e405b7111620000545780639e405b7114620002d3578063a381c8e2146200030b578063d5c6b504146200032f576200013e565b806383bece4d14620002615780639813c7b21462000285576200013e565b8063458ffd6311620000a8578063458ffd6314620001f5578063485cc955146200021957806375cb2672146200023d576200013e565b80628d48e314620001875780631888d71214620001dc576200013e565b366200013e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747261637420646f6573206e6f7420737570706f72742072656365697660448201527f652829000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000604482015260640162000135565b34801562000193575f80fd5b50620001bf620001a536600462000f49565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001f3620001ed36600462000f49565b62000367565b005b34801562000201575f80fd5b50620001f36200021336600462000fb6565b62000513565b34801562000225575f80fd5b50620001f3620002373660046200103c565b62000720565b34801562000249575f80fd5b50620001f36200025b36600462000f49565b6200088c565b3480156200026d575f80fd5b50620001f36200027f36600462001078565b62000969565b34801562000291575f80fd5b50620002c2620002a336600462000f49565b6001600160a01b039081165f9081526002602052604090205416151590565b6040519015158152602001620001d3565b348015620002df575f80fd5b50620001bf620002f136600462000f49565b60036020525f90815260409020546001600160a01b031681565b34801562000317575f80fd5b50620001f36200032936600462001078565b62000ba5565b3480156200033b575f80fd5b50620001bf6200034d36600462000f49565b60026020525f90815260409020546001600160a01b031681565b5f3411620003b85760405162461bcd60e51b815260206004820152600d60248201527f4e6f7468696e672073656e742e00000000000000000000000000000000000000604482015260640162000135565b5f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546001600160a01b0316620004395760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000135565b5f80805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546040516001600160a01b03918216602482015234604482015290831660648201526383bece4d60e01b9060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526005549091506200050f906001600160a01b0316825f5b5f8062000d2c565b5050565b6005545f546001600160a01b03918216911633146200059b5760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000135565b806001600160a01b0316620005af62000e3d565b6001600160a01b0316146200062d5760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000135565b5f85858585604051620006409062000f23565b6200064f9493929190620010e4565b604051809103905ff08015801562000669573d5f803e3d5ffd5b506001600160a01b038082165f818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca906200070e908a9084908b908b908b908b9062001119565b60405180910390a15050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156200076b5750825b90505f8267ffffffffffffffff166001148015620007885750303b155b90508115801562000797575080155b15620007cf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200080457845468ff00000000000000001916680100000000000000001785555b6200080f876200088c565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156200088357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6200089662000eb9565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa15801562000913573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000939919062001169565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005545f546001600160a01b0391821691163314620009f15760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000135565b806001600160a01b031662000a0562000e3d565b6001600160a01b03161462000a835760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000135565b6001600160a01b038085165f9081526004602090815260408083205484168084526002909252909120549091168062000b255760405162461bcd60e51b815260206004820152602b60248201527f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726160448201527f7070656420746f6b656e21000000000000000000000000000000000000000000606482015260840162000135565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820187905282169063979005ad906044015f604051808303815f87803b15801562000b86575f80fd5b505af115801562000b99573d5f803e3d5ffd5b50505050505050505050565b6001600160a01b038084165f908152600260205260409020541662000c0d5760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000135565b6001600160a01b038381165f90815260026020526040908190205490517f1dd319cb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529116908190631dd319cb906044015f604051808303815f87803b15801562000c80575f80fd5b505af115801562000c93573d5f803e3d5ffd5b505050506001600160a01b038481165f90815260036020908152604080832054815190851660248201526044810188905286851660648083019190915282518083039091018152608490910190915290810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166383bece4d60e01b179052600554909262000d2592911690839062000507565b5050505050565b5f6040518060600160405280876001600160a01b031681526020018681526020018481525060405160200162000d639190620011cc565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff1690601462000db88362001212565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b815260040162000dfa94939291906200125a565b6020604051808303815f875af115801562000e17573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000883919062001298565b5f805f9054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e8e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000eb4919062001169565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000f21576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6112d380620012c283390190565b6001600160a01b038116811462000f46575f80fd5b50565b5f6020828403121562000f5a575f80fd5b813562000f678162000f31565b9392505050565b5f8083601f84011262000f7f575f80fd5b50813567ffffffffffffffff81111562000f97575f80fd5b60208301915083602082850101111562000faf575f80fd5b9250929050565b5f805f805f6060868803121562000fcb575f80fd5b853562000fd88162000f31565b9450602086013567ffffffffffffffff8082111562000ff5575f80fd5b6200100389838a0162000f6e565b909650945060408801359150808211156200101c575f80fd5b506200102b8882890162000f6e565b969995985093965092949392505050565b5f80604083850312156200104e575f80fd5b82356200105b8162000f31565b915060208301356200106d8162000f31565b809150509250929050565b5f805f606084860312156200108b575f80fd5b8335620010988162000f31565b9250602084013591506040840135620010b18162000f31565b809150509250925092565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f620010f9604083018688620010bc565b82810360208401526200110e818587620010bc565b979650505050505050565b5f6001600160a01b0380891683528088166020840152506080604083015262001147608083018688620010bc565b82810360608401526200115c818587620010bc565b9998505050505050505050565b5f602082840312156200117a575f80fd5b815162000f678162000f31565b5f81518084525f5b81811015620011ad576020818501810151868301820152016200118f565b505f602082860101526020601f19601f83011685010191505092915050565b602081526001600160a01b0382511660208201525f602083015160606040840152620011fc608084018262001187565b9050604084015160608401528091505092915050565b5f63ffffffff80831681810362001250577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019392505050565b5f63ffffffff80871683528086166020840152506080604083015262001284608083018562001187565b905060ff8316606083015295945050505050565b5f60208284031215620012a9575f80fd5b815167ffffffffffffffff8116811462000f67575f80fdfe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b50604051620012d3380380620012d3833981016040819052620000599162000228565b8181818160036200006b83826200031a565b5060046200007a82826200031a565b5050505050620000b17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000ba60201b60201c565b505050620003e2565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1662000161575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000164565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126200018e575f80fd5b81516001600160401b0380821115620001ab57620001ab6200016a565b604051601f8301601f19908116603f01168101908282118183101715620001d657620001d66200016a565b81604052838152602092508683858801011115620001f2575f80fd5b5f91505b83821015620002155785820183015181830184015290820190620001f6565b5f93810190920192909252949350505050565b5f80604083850312156200023a575f80fd5b82516001600160401b038082111562000251575f80fd5b6200025f868387016200017e565b9350602085015191508082111562000275575f80fd5b5062000284858286016200017e565b9150509250929050565b600181811c90821680620002a357607f821691505b602082108103620002c257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000315575f81815260208120601f850160051c81016020861015620002f05750805b601f850160051c820191505b818110156200031157828155600101620002fc565b5050505b505050565b81516001600160401b038111156200033657620003366200016a565b6200034e816200034784546200028e565b84620002c8565b602080601f83116001811462000384575f84156200036c5750858301515b5f19600386901b1c1916600185901b17855562000311565b5f85815260208120601f198616915b82811015620003b45788860151825594840194600190910190840162000393565b5085821015620003d257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610ee380620003f05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c806336568abe116100c7578063979005ad1161007d578063a9059cbb11610063578063a9059cbb146102c2578063d547741f146102d5578063dd62ed3e146102e8575f80fd5b8063979005ad146102a8578063a217fddf146102bb575f80fd5b806375b238fc116100ad57806375b238fc1461024157806391d148541461026857806395d89b41146102a0575f80fd5b806336568abe1461021b57806370a082311461022e575f80fd5b80631dd319cb1161011c578063248a9ca311610102578063248a9ca3146101d75780632f2ff15d146101f9578063313ce5671461020c575f80fd5b80631dd319cb146101af57806323b872dd146101c4575f80fd5b806301ffc9a71461014d57806306fdde0314610175578063095ea7b31461018a57806318160ddd1461019d575b5f80fd5b61016061015b366004610cc7565b6102fb565b60405190151581526020015b60405180910390f35b61017d610393565b60405161016c9190610d0d565b610160610198366004610d73565b610423565b6002545b60405190815260200161016c565b6101c26101bd366004610d73565b61043a565b005b6101606101d2366004610d9b565b6104d0565b6101a16101e5366004610dd4565b5f9081526007602052604090206001015490565b6101c2610207366004610deb565b6104f3565b6040516012815260200161016c565b6101c2610229366004610deb565b61051d565b6101a161023c366004610e15565b610569565b6101a17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610160610276366004610deb565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61017d61060c565b6101c26102b6366004610d73565b61061b565b6101a15f81565b6101606102d0366004610d73565b61064f565b6101c26102e3366004610deb565b61065c565b6101a16102f6366004610e2e565b610680565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061038d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103a290610e56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610e56565b80156104195780601f106103f057610100808354040283529160200191610419565b820191905f5260205f20905b8154815290600101906020018083116103fc57829003601f168201915b5050505050905090565b5f3361043081858561078e565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104648161079b565b8161046e84610569565b10156104c15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104cb83836107a8565b505050565b5f336104dd8582856107e0565b6104e8858585610856565b506001949350505050565b5f8281526007602052604090206001015461050d8161079b565b61051783836108b3565b50505050565b6001600160a01b038116331461055f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cb828261095e565b5f6001600160a01b0382163203610597576001600160a01b0382165f9081526020819052604090205461038d565b6001600160a01b03821633036105c4576001600160a01b0382165f9081526020819052604090205461038d565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104b8565b6060600480546103a290610e56565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106458161079b565b6104cb83836109e3565b5f33610430818585610856565b5f828152600760205260409020600101546106768161079b565b610517838361095e565b5f326001600160a01b03841614806106a05750326001600160a01b038316145b156106d2576001600160a01b038084165f908152600160209081526040808320938616835292905220545b905061038d565b336001600160a01b03841614806106f15750336001600160a01b038316145b15610720576001600160a01b038084165f908152600160209081526040808320938616835292905220546106cb565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104b8565b6104cb8383836001610a17565b6107a58133610b1b565b50565b6001600160a01b0382166107d157604051634b637e8f60e11b81525f60048201526024016104b8565b6107dc825f83610b88565b5050565b5f6107eb8484610680565b90505f1981146105175781811015610848576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104b8565b61051784848484035f610a17565b6001600160a01b03831661087f57604051634b637e8f60e11b81525f60048201526024016104b8565b6001600160a01b0382166108a85760405163ec442f0560e01b81525f60048201526024016104b8565b6104cb838383610b88565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff16610957575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561090f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038d565b505f61038d565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1615610957575f8381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038d565b6001600160a01b038216610a0c5760405163ec442f0560e01b81525f60048201526024016104b8565b6107dc5f8383610b88565b6001600160a01b038416610a59576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038316610a9b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561051757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b0d91815260200190565b60405180910390a350505050565b5f8281526007602090815260408083206001600160a01b038516845290915290205460ff166107dc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104b8565b6001600160a01b038316610bb2578060025f828254610ba79190610e8e565b90915550610c3b9050565b6001600160a01b0383165f9081526020819052604090205481811015610c1d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104b8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c5757600280548290039055610c75565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cba91815260200190565b60405180910390a3505050565b5f60208284031215610cd7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610d3857858101830151858201604001528201610d1c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d6e575f80fd5b919050565b5f8060408385031215610d84575f80fd5b610d8d83610d58565b946020939093013593505050565b5f805f60608486031215610dad575f80fd5b610db684610d58565b9250610dc460208501610d58565b9150604084013590509250925092565b5f60208284031215610de4575f80fd5b5035919050565b5f8060408385031215610dfc575f80fd5b82359150610e0c60208401610d58565b90509250929050565b5f60208284031215610e25575f80fd5b610d0682610d58565b5f8060408385031215610e3f575f80fd5b610e4883610d58565b9150610e0c60208401610d58565b600181811c90821680610e6a57607f821691505b602082108103610e8857634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561038d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d78cf2dd9ecf4da03679034ab54dbc38a0748a2a50f13ee501925e8df4738b1264736f6c63430008140033a2646970667358221220910ed4d806fc5d201f041052722e240d19224d7a3957d6d54e271e5fa89dde2664736f6c63430008140033", + Bin: "0x60806040526001805463ffffffff60a01b1916905534801561002057600080fd5b50612681806100306000396000f3fe608060405260043610620000c65760003560e01c806383bece4d11620000735780639e405b7111620000555780639e405b7114620002dc578063a381c8e21462000316578063d5c6b504146200033b576200013f565b806383bece4d14620002675780639813c7b2146200028c576200013f565b8063458ffd6311620000a9578063458ffd6314620001f8578063485cc955146200021d57806375cb26721462000242576200013f565b80628d48e314620001885780631888d71214620001df576200013f565b366200013f5760405162461bcd60e51b815260206004820152602360248201527f436f6e747261637420646f6573206e6f7420737570706f72742072656365697660448201527f652829000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000604482015260640162000136565b3480156200019557600080fd5b50620001c2620001a736600462000f7f565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001f6620001f036600462000f7f565b62000375565b005b3480156200020557600080fd5b50620001f66200021736600462000ff2565b62000526565b3480156200022a57600080fd5b50620001f66200023c3660046200107e565b62000739565b3480156200024f57600080fd5b50620001f66200026136600462000f7f565b620008a7565b3480156200027457600080fd5b50620001f662000286366004620010bc565b62000987565b3480156200029957600080fd5b50620002cb620002ab36600462000f7f565b6001600160a01b0390811660009081526002602052604090205416151590565b6040519015158152602001620001d6565b348015620002e957600080fd5b50620001c2620002fb36600462000f7f565b6003602052600090815260409020546001600160a01b031681565b3480156200032357600080fd5b50620001f662000335366004620010bc565b62000bca565b3480156200034857600080fd5b50620001c26200035a36600462000f7f565b6002602052600090815260409020546001600160a01b031681565b60003411620003c75760405162461bcd60e51b815260206004820152600d60248201527f4e6f7468696e672073656e742e00000000000000000000000000000000000000604482015260640162000136565b6000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b546001600160a01b0316620004495760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000136565b600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546040516001600160a01b03918216602482015234604482015290831660648201526383bece4d60e01b9060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260055490915062000522906001600160a01b03168260005b60008062000d59565b5050565b6005546000546001600160a01b0391821691163314620005af5760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000136565b806001600160a01b0316620005c362000e6e565b6001600160a01b031614620006415760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000136565b600085858585604051620006559062000f58565b6200066494939291906200112c565b604051809103906000f08015801562000681573d6000803e3d6000fd5b506001600160a01b038082166000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca9062000727908a9084908b908b908b908b9062001162565b60405180910390a15050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620007855750825b905060008267ffffffffffffffff166001148015620007a35750303b155b905081158015620007b2575080155b15620007ea576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200081f57845468ff00000000000000001916680100000000000000001785555b6200082a87620008a7565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156200089e57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b620008b162000eee565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa15801562000931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009579190620011b3565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005546000546001600160a01b039182169116331462000a105760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e6765722100000000000000000000000000000000606482015260840162000136565b806001600160a01b031662000a2462000e6e565b6001600160a01b03161462000aa25760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e64657221000000000000000000000000000000606482015260840162000136565b6001600160a01b0380851660009081526004602090815260408083205484168084526002909252909120549091168062000b455760405162461bcd60e51b815260206004820152602b60248201527f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726160448201527f7070656420746f6b656e21000000000000000000000000000000000000000000606482015260840162000136565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820187905282169063979005ad90604401600060405180830381600087803b15801562000ba957600080fd5b505af115801562000bbe573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b038084166000908152600260205260409020541662000c335760405162461bcd60e51b815260206004820152601560248201527f4e6f206d617070696e6720666f7220746f6b656e2e0000000000000000000000604482015260640162000136565b6001600160a01b03838116600090815260026020526040908190205490517f1dd319cb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529116908190631dd319cb90604401600060405180830381600087803b15801562000caa57600080fd5b505af115801562000cbf573d6000803e3d6000fd5b505050506001600160a01b03848116600090815260036020908152604080832054815190851660248201526044810188905286851660648083019190915282518083039091018152608490910190915290810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166383bece4d60e01b179052600554909262000d5292911690839062000519565b5050505050565b60006040518060600160405280876001600160a01b031681526020018681526020018481525060405160200162000d9191906200121b565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff1690601462000de68362001262565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b815260040162000e289493929190620012ad565b6020604051808303816000875af115801562000e48573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089e9190620012ec565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ec3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ee99190620011b3565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000f56576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611333806200131983390190565b6001600160a01b038116811462000f7c57600080fd5b50565b60006020828403121562000f9257600080fd5b813562000f9f8162000f66565b9392505050565b60008083601f84011262000fb957600080fd5b50813567ffffffffffffffff81111562000fd257600080fd5b60208301915083602082850101111562000feb57600080fd5b9250929050565b6000806000806000606086880312156200100b57600080fd5b8535620010188162000f66565b9450602086013567ffffffffffffffff808211156200103657600080fd5b6200104489838a0162000fa6565b909650945060408801359150808211156200105e57600080fd5b506200106d8882890162000fa6565b969995985093965092949392505050565b600080604083850312156200109257600080fd5b82356200109f8162000f66565b91506020830135620010b18162000f66565b809150509250929050565b600080600060608486031215620010d257600080fd5b8335620010df8162000f66565b9250602084013591506040840135620010f88162000f66565b809150509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006200114260408301868862001103565b82810360208401526200115781858762001103565b979650505050505050565b60006001600160a01b038089168352808816602084015250608060408301526200119160808301868862001103565b8281036060840152620011a681858762001103565b9998505050505050505050565b600060208284031215620011c657600080fd5b815162000f9f8162000f66565b6000815180845260005b81811015620011fb57602081850181015186830182015201620011dd565b506000602082860101526020601f19601f83011685010191505092915050565b602081526001600160a01b03825116602082015260006020830151606060408401526200124c6080840182620011d3565b9050604084015160608401528091505092915050565b600063ffffffff808316818103620012a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b600063ffffffff808716835280861660208401525060806040830152620012d86080830185620011d3565b905060ff8316606083015295945050505050565b600060208284031215620012ff57600080fd5b815167ffffffffffffffff8116811462000f9f57600080fdfe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b5060405162001333380380620013338339810160408190526200005a9162000233565b8181818160036200006c83826200032c565b5060046200007b82826200032c565b5050505050620000b27fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000bb60201b60201c565b505050620003f8565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16620001645760008381526007602090815260408083206001600160a01b03861684529091529020805460ff191660011790556200011b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000168565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019657600080fd5b81516001600160401b0380821115620001b357620001b36200016e565b604051601f8301601f19908116603f01168101908282118183101715620001de57620001de6200016e565b81604052838152602092508683858801011115620001fb57600080fd5b600091505b838210156200021f578582018301518183018401529082019062000200565b600093810190920192909252949350505050565b600080604083850312156200024757600080fd5b82516001600160401b03808211156200025f57600080fd5b6200026d8683870162000184565b935060208501519150808211156200028457600080fd5b50620002938582860162000184565b9150509250929050565b600181811c90821680620002b257607f821691505b602082108103620002d357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032757600081815260208120601f850160051c81016020861015620003025750805b601f850160051c820191505b8181101562000323578281556001016200030e565b5050505b505050565b81516001600160401b038111156200034857620003486200016e565b62000360816200035984546200029d565b84620002d9565b602080601f8311600181146200039857600084156200037f5750858301515b600019600386901b1c1916600185901b17855562000323565b600085815260208120601f198616915b82811015620003c957888601518255948401946001909101908401620003a8565b5085821015620003e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610f2b80620004086000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017e578063095ea7b31461019357806318160ddd146101a6575b600080fd5b610169610164366004610cf7565b610307565b60405190151581526020015b60405180910390f35b6101866103a0565b6040516101759190610d40565b6101696101a1366004610daa565b610432565b6002545b604051908152602001610175565b6101cb6101c6366004610daa565b61044a565b005b6101696101db366004610dd4565b6104e0565b6101aa6101ee366004610e10565b60009081526007602052604090206001015490565b6101cb610211366004610e29565b610504565b60405160128152602001610175565b6101cb610233366004610e29565b61052f565b6101aa610246366004610e55565b61057b565b6101aa7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610e29565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610186610621565b6101cb6102c1366004610daa565b610630565b6101aa600081565b6101696102dc366004610daa565b610664565b6101cb6102ef366004610e29565b610672565b6101aa610302366004610e70565b610697565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e9a565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e9a565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856107a8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610474816107b5565b8161047e8461057b565b10156104d15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104db83836107c2565b505050565b6000336104ee8582856107fc565b6104f9858585610875565b506001949350505050565b60008281526007602052604090206001015461051f816107b5565b61052983836108d4565b50505050565b6001600160a01b0381163314610571576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104db8282610982565b60006001600160a01b03821632036105ab576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105d9576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104c8565b6060600480546103af90610e9a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561065a816107b5565b6104db8383610a09565b600033610440818585610875565b60008281526007602052604090206001015461068d816107b5565b6105298383610982565b6000326001600160a01b03841614806106b85750326001600160a01b038316145b156106eb576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b038416148061070a5750336001600160a01b038316145b1561073a576001600160a01b038084166000908152600160209081526040808320938616835292905220546106e4565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104c8565b6104db8383836001610a3f565b6107bf8133610b46565b50565b6001600160a01b0382166107ec57604051634b637e8f60e11b8152600060048201526024016104c8565b6107f882600083610bb4565b5050565b60006108088484610697565b905060001981146105295781811015610866576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104c8565b61052984848484036000610a3f565b6001600160a01b03831661089f57604051634b637e8f60e11b8152600060048201526024016104c8565b6001600160a01b0382166108c95760405163ec442f0560e01b8152600060048201526024016104c8565b6104db838383610bb4565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff1661097a5760008381526007602090815260408083206001600160a01b03861684529091529020805460ff191660011790556109323390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff161561097a5760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b038216610a335760405163ec442f0560e01b8152600060048201526024016104c8565b6107f860008383610bb4565b6001600160a01b038416610a82576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016104c8565b6001600160a01b038316610ac5576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016104c8565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561052957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3891815260200190565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107f8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104c8565b6001600160a01b038316610bdf578060026000828254610bd49190610ed4565b90915550610c6a9050565b6001600160a01b03831660009081526020819052604090205481811015610c4b576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104c8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610c8657600280548290039055610ca5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cea91815260200190565b60405180910390a3505050565b600060208284031215610d0957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d3957600080fd5b9392505050565b600060208083528351808285015260005b81811015610d6d57858101830151858201604001528201610d51565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610da557600080fd5b919050565b60008060408385031215610dbd57600080fd5b610dc683610d8e565b946020939093013593505050565b600080600060608486031215610de957600080fd5b610df284610d8e565b9250610e0060208501610d8e565b9150604084013590509250925092565b600060208284031215610e2257600080fd5b5035919050565b60008060408385031215610e3c57600080fd5b82359150610e4c60208401610d8e565b90509250929050565b600060208284031215610e6757600080fd5b610d3982610d8e565b60008060408385031215610e8357600080fd5b610e8c83610d8e565b9150610e4c60208401610d8e565b600181811c90821680610eae57607f821691505b602082108103610ece57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561039a57634e487b7160e01b600052601160045260246000fdfea264697066735822122073c661078daaaa94cd6d2de1a875ac8163912d81e7f2083db0bfdaf8c67f3fe564736f6c63430008140033a26469706673582212207bd666bd6e32772e6e7d7f5ba8d9e3d7f6521d01988f6698161bb364fc4f5ab964736f6c63430008140033", } // EthereumBridgeABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/GasConsumerBalance/GasConsumerBalance.go b/contracts/generated/GasConsumerBalance/GasConsumerBalance.go index c5cb17c595..2444b2e2fa 100644 --- a/contracts/generated/GasConsumerBalance/GasConsumerBalance.go +++ b/contracts/generated/GasConsumerBalance/GasConsumerBalance.go @@ -32,7 +32,7 @@ var ( // GasConsumerBalanceMetaData contains all meta data concerning the GasConsumerBalance contract. var GasConsumerBalanceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"destroy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_balance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b505f80546001600160a01b031916331790556101528061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806383197ef0146100435780638da5cb5b1461004d578063c1cfb99a1461004b575b5f80fd5b61004b610095565b005b5f5461006c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f5473ffffffffffffffffffffffffffffffffffffffff163314610119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f596f7520617265206e6f7420746865206f776e65720000000000000000000000604482015260640160405180910390fd5b30fffea26469706673582212205bfc66da08320422cf69c718067c856e73af5dbc541b5ef740407b90ed8656a864736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610157806100326000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806383197ef0146100465780638da5cb5b14610050578063c1cfb99a1461004e575b600080fd5b61004e610099565b005b6000546100709073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff16331461011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f596f7520617265206e6f7420746865206f776e65720000000000000000000000604482015260640160405180910390fd5b30fffea26469706673582212205d989c8df853591d61707dd349944634844c4a7cbbae383852bd046ba70f7ab464736f6c63430008140033", } // GasConsumerBalanceABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index b34aff1de6..8cc256dcf3 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -54,7 +54,7 @@ type StructsMetaRollup 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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"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\":\"crossChainData\",\"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\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"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\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"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\":\"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\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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: "0x608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612bcd806100a05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c80638129fc1c116100c7578063a1a227fa1161007d578063bbd79e1511610063578063bbd79e1514610351578063e34fbfc814610364578063f2fde38b14610377575f80fd5b8063a1a227fa1461032e578063a52f433c14610341575f80fd5b80638da5cb5b116100ad5780638da5cb5b146102eb5780638fa0d053146102fb57806398077e861461030e575f80fd5b80638129fc1c146102495780638236a7ba14610251575f80fd5b8063440c953b1161011c5780636a30d26c116101025780636a30d26c14610231578063715018a6146102395780637281099614610241575f80fd5b8063440c953b1461020757806359a900711461021e575f80fd5b806303e72e481461014d578063324ff866146101625780633e60a22f1461018057806343348b2f146101cc575b5f80fd5b61016061015b36600461123d565b61038a565b005b61016a610490565b60405161017791906112d9565b60405180910390f35b6101b461018e366004611339565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610177565b6101f76101da366004611373565b6001600160a01b03165f9081526002602052604090205460ff1690565b6040519015158152602001610177565b61021060075481565b604051908152602001610177565b61016061022c3660046113da565b610564565b61016a6105e5565b6101606106b0565b6101606106c3565b61016061073e565b6102b861025f36600461147a565b60408051606080820183525f80835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610177565b5f546001600160a01b03166101b4565b610160610309366004611491565b6108f8565b61032161031c36600461147a565b61098a565b6040516101779190611511565b6009546101b4906001600160a01b031681565b600654610100900460ff166101f7565b61016061035f366004611523565b610a30565b6101606103723660046115e1565b610b89565b610160610385366004611373565b610ba7565b610392610bfd565b5f6001600160a01b03166005836040516103ac9190611620565b908152604051908190036020019020546001600160a01b03160361040757600480546001810182555f919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0161040583826116c0565b505b806005836040516104189190611620565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590610484908490849061177c565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020015f905b8282101561055b578382905f5260205f200180546104d09061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc9061163b565b80156105475780601f1061051e57610100808354040283529160200191610547565b820191905f5260205f20905b81548152906001019060200180831161052a57829003601f168201915b5050505050815260200190600101906104b3565b50505050905090565b60065460ff1615610573575f80fd5b60068054600160ff1991821681179092556001600160a01b0388165f9081526002602052604081208054909216831790915560038054928301815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016105dc84826116c0565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561055b578382905f5260205f200180546106259061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546106519061163b565b801561069c5780601f106106735761010080835404028352916020019161069c565b820191905f5260205f20905b81548152906001019060200180831161067f57829003601f168201915b505050505081526020019060010190610608565b6106b8610bfd565b6106c15f610c42565b565b6106cb610bfd565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da90906024015f604051808303815f87803b158015610726575f80fd5b505af1158015610738573d5f803e3d5ffd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156107885750825b90505f8267ffffffffffffffff1660011480156107a45750303b155b9050811580156107b2575080155b156107e9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561081d57845468ff00000000000000001916680100000000000000001785555b5f60075560405161082d9061117e565b604051809103905ff080158015610846573d5f803e3d5ffd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a183156108f157845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60025f61090b6040870160208801611373565b6001600160a01b0316815260208101919091526040015f205460ff166109785760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b61098184610c9e565b61073881610cd2565b60048181548110610999575f80fd5b905f5260205f20015f9150905080546109b19061163b565b80601f01602080910402602001604051908101604052809291908181526020018280546109dd9061163b565b8015610a285780601f106109ff57610100808354040283529160200191610a28565b820191905f5260205f20905b815481529060010190602001808311610a0b57829003601f168201915b505050505081565b6001600160a01b0386165f9081526002602052604090205460ff1680610a54575f80fd5b8115610b22575f610a8988888688604051602001610a7594939291906117a6565b604051602081830303815290604052610d85565b90505f610a968288610dbf565b9050886001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840161096f565b50505b6001600160a01b0386165f908152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01610b7f84826116c0565b5050505050505050565b335f908152600160205260409020610ba2828483611801565b505050565b610baf610bfd565b6001600160a01b038116610bf1576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161096f565b610bfa81610c42565b50565b5f546001600160a01b031633146106c1576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161096f565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80355f9081526008602052604090208190610cb982826118bc565b505060075460408201351115610bfa5760400135600755565b5f610cdd8280611908565b905090505f5b81811015610ba2576009546001600160a01b0316639730886d610d068580611908565b84818110610d1657610d1661194e565b9050602002810190610d289190611962565b60016040518363ffffffff1660e01b8152600401610d47929190611a08565b5f604051808303815f87803b158015610d5e575f80fd5b505af1158015610d70573d5f803e3d5ffd5b5050505080610d7e90611abd565b9050610ce3565b5f610d908251610de7565b82604051602001610da2929190611ae1565b604051602081830303815290604052805190602001209050919050565b5f805f80610dcd8686610e84565b925092509250610ddd8282610ecd565b5090949350505050565b60605f610df383610fd4565b60010190505f8167ffffffffffffffff811115610e1257610e1261118c565b6040519080825280601f01601f191660200182016040528015610e3c576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e4657509392505050565b5f805f8351604103610ebb576020840151604085015160608601515f1a610ead888285856110b6565b955095509550505050610ec6565b505081515f91506002905b9250925092565b5f826003811115610ee057610ee0611b3b565b03610ee9575050565b6001826003811115610efd57610efd611b3b565b03610f34576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f4857610f48611b3b565b03610f82576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161096f565b6003826003811115610f9657610f96611b3b565b03610fd0576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161096f565b5050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061101c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611048576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106657662386f26fc10000830492506010015b6305f5e100831061107e576305f5e100830492506008015b612710831061109257612710830492506004015b606483106110a4576064830492506002015b600a83106110b0576001015b92915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110ef57505f91506003905082611174565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611140573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661116b57505f925060019150829050611174565b92505f91508190505b9450945094915050565b6110488062001b5083390190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126111af575f80fd5b813567ffffffffffffffff808211156111ca576111ca61118c565b604051601f8301601f19908116603f011681019082821181831017156111f2576111f261118c565b8160405283815286602085880101111561120a575f80fd5b836020870160208301375f602085830101528094505050505092915050565b6001600160a01b0381168114610bfa575f80fd5b5f806040838503121561124e575f80fd5b823567ffffffffffffffff811115611264575f80fd5b611270858286016111a0565b925050602083013561128181611229565b809150509250929050565b5f5b838110156112a657818101518382015260200161128e565b50505f910152565b5f81518084526112c581602086016020860161128c565b601f01601f19169290920160200192915050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b8281101561132c57603f1988860301845261131a8583516112ae565b945092850192908501906001016112fe565b5092979650505050505050565b5f60208284031215611349575f80fd5b813567ffffffffffffffff81111561135f575f80fd5b61136b848285016111a0565b949350505050565b5f60208284031215611383575f80fd5b813561138e81611229565b9392505050565b5f8083601f8401126113a5575f80fd5b50813567ffffffffffffffff8111156113bc575f80fd5b6020830191508360208285010111156113d3575f80fd5b9250929050565b5f805f805f80608087890312156113ef575f80fd5b86356113fa81611229565b9550602087013567ffffffffffffffff80821115611416575f80fd5b6114228a838b01611395565b9097509550604089013591508082111561143a575f80fd5b6114468a838b016111a0565b9450606089013591508082111561145b575f80fd5b5061146889828a01611395565b979a9699509497509295939492505050565b5f6020828403121561148a575f80fd5b5035919050565b5f805f8084860360a08112156114a5575f80fd5b60608112156114b2575f80fd5b50849350606085013567ffffffffffffffff808211156114d0575f80fd5b6114dc88838901611395565b909550935060808701359150808211156114f4575f80fd5b50850160208188031215611506575f80fd5b939692955090935050565b602081525f61138e60208301846112ae565b5f805f805f8060c08789031215611538575f80fd5b863561154381611229565b9550602087013561155381611229565b9450604087013567ffffffffffffffff8082111561156f575f80fd5b61157b8a838b016111a0565b95506060890135915080821115611590575f80fd5b61159c8a838b016111a0565b945060808901359150808211156115b1575f80fd5b506115be89828a016111a0565b92505060a087013580151581146115d3575f80fd5b809150509295509295509295565b5f80602083850312156115f2575f80fd5b823567ffffffffffffffff811115611608575f80fd5b61161485828601611395565b90969095509350505050565b5f825161163181846020870161128c565b9190910192915050565b600181811c9082168061164f57607f821691505b60208210810361166d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ba2575f81815260208120601f850160051c810160208610156116995750805b601f850160051c820191505b818110156116b8578281556001016116a5565b505050505050565b815167ffffffffffffffff8111156116da576116da61118c565b6116ee816116e8845461163b565b84611673565b602080601f831160018114611721575f841561170a5750858301515b5f19600386901b1c1916600185901b1785556116b8565b5f85815260208120601f198616915b8281101561174f57888601518255948401946001909101908401611730565b508582101561176c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b604081525f61178e60408301856112ae565b90506001600160a01b03831660208301529392505050565b5f6bffffffffffffffffffffffff19808760601b168352808660601b1660148401525083516117dc81602885016020880161128c565b8351908301906117f381602884016020880161128c565b016028019695505050505050565b67ffffffffffffffff8311156118195761181961118c565b61182d83611827835461163b565b83611673565b5f601f84116001811461185e575f85156118475750838201355b5f19600387901b1c1916600186901b1783556108f1565b5f83815260209020601f19861690835b8281101561188e578685013582556020948501946001909201910161186e565b50868210156118aa575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556001810160208301356118d281611229565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b5f808335601e1984360301811261191d575f80fd5b83018035915067ffffffffffffffff821115611937575f80fd5b6020019150600581901b36038213156113d3575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112611631575f80fd5b803563ffffffff81168114611989575f80fd5b919050565b5f808335601e198436030181126119a3575f80fd5b830160208101925035905067ffffffffffffffff8111156119c2575f80fd5b8036038213156113d3575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b803560ff81168114611989575f80fd5b604081525f8335611a1881611229565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611a41575f80fd5b606084015250611a5360408501611976565b63ffffffff166080830152611a6a60608501611976565b63ffffffff1660a0830152611a82608085018561198e565b60c080850152611a97610100850182846119d0565b915050611aa660a086016119f8565b60ff1660e084015260209092019290925292915050565b5f60018201611ada57634e487b7160e01b5f52601160045260245ffd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081525f8351611b1881601a85016020880161128c565b835190830190611b2f81601a84016020880161128c565b01601a01949350505050565b634e487b7160e01b5f52602160045260245ffdfe608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fa8806100a05f395ff3fe6080604052600436106100b4575f3560e01c80638da5cb5b1161006857806399a3ad211161004d57806399a3ad211461025d578063b1454caa1461027c578063f2fde38b146102b457610124565b80638da5cb5b146102185780639730886d1461023e57610124565b8063346633fb11610099578063346633fb146101d257806336d2da90146101e5578063715018a61461020457610124565b80630fcfbd111461017157806333a88c72146101a357610124565b36610124576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044015f604051808303818588803b158015610110575f80fd5b505af1158015610122573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561017c575f80fd5b5061019061018b36600461091b565b6102d3565b6040519081526020015b60405180910390f35b3480156101ae575f80fd5b506101c26101bd36600461091b565b610387565b604051901515815260200161019a565b6101226101e0366004610961565b6103d8565b3480156101f0575f80fd5b506101226101ff36600461098b565b6104a3565b34801561020f575f80fd5b5061012261054e565b348015610223575f80fd5b505f546040516001600160a01b03909116815260200161019a565b348015610249575f80fd5b506101226102583660046109a6565b610561565b348015610268575f80fd5b50610122610277366004610961565b6106ad565b348015610287575f80fd5b5061029b610296366004610a17565b610759565b60405167ffffffffffffffff909116815260200161019a565b3480156102bf575f80fd5b506101226102ce36600461098b565b6107b1565b5f80826040516020016102e69190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150806103805760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b9392505050565b5f808260405160200161039a9190610af9565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915080158015906103d05750428111155b949350505050565b5f341180156103e657508034145b6104585760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610168565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104ab610807565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146104f4576040519150601f19603f3d011682016040523d82523d5f602084013e6104f9565b606091505b505090508061054a5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b5050565b610556610807565b61055f5f61084c565b565b610569610807565b5f6105748242610bf4565b90505f836040516020016105889190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150156106225760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b5f8181526001602090815260408220849055600291906106449087018761098b565b6001600160a01b0316815260208101919091526040015f9081209061066f6080870160608801610c0d565b63ffffffff1681526020808201929092526040015f90812080546001810182559082529190208591600402016106a58282610dd1565b505050505050565b6106b5610807565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106fe576040519150601f19603f3d011682016040523d82523d5f602084013e610703565b606091505b50509050806107545760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b505050565b5f610763336108a8565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107a09796959493929190610eeb565b60405180910390a195945050505050565b6107b9610807565b6001600160a01b0381166107fb576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610168565b6108048161084c565b50565b5f546001600160a01b0316331461055f576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610168565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f908152600360205260408120805467ffffffffffffffff1691600191906108da8385610f4a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b5f60c08284031215610915575f80fd5b50919050565b5f6020828403121561092b575f80fd5b813567ffffffffffffffff811115610941575f80fd5b6103d084828501610905565b6001600160a01b0381168114610804575f80fd5b5f8060408385031215610972575f80fd5b823561097d8161094d565b946020939093013593505050565b5f6020828403121561099b575f80fd5b81356103808161094d565b5f80604083850312156109b7575f80fd5b823567ffffffffffffffff8111156109cd575f80fd5b6109d985828601610905565b95602094909401359450505050565b63ffffffff81168114610804575f80fd5b60ff81168114610804575f80fd5b8035610a12816109f9565b919050565b5f805f805f60808688031215610a2b575f80fd5b8535610a36816109e8565b94506020860135610a46816109e8565b9350604086013567ffffffffffffffff80821115610a62575f80fd5b818801915088601f830112610a75575f80fd5b813581811115610a83575f80fd5b896020828501011115610a94575f80fd5b6020830195508094505050506060860135610aae816109f9565b809150509295509295909350565b67ffffffffffffffff81168114610804575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235610b098161094d565b6001600160a01b0381166020840152506020830135610b2781610abc565b67ffffffffffffffff808216604085015260408501359150610b48826109e8565b63ffffffff808316606086015260608601359250610b65836109e8565b80831660808601525060808501359150601e19853603018212610b86575f80fd5b6020918501918201913581811115610b9c575f80fd5b803603831315610baa575f80fd5b60c060a0860152610bbf60e086018285610ad1565b92505050610bcf60a08501610a07565b60ff811660c0850152509392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0757610c07610be0565b92915050565b5f60208284031215610c1d575f80fd5b8135610380816109e8565b5f8135610c07816109e8565b5f808335601e19843603018112610c49575f80fd5b83018035915067ffffffffffffffff821115610c63575f80fd5b602001915036819003821315610c77575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610ca657607f821691505b60208210810361091557634e487b7160e01b5f52602260045260245ffd5b601f821115610754575f81815260208120601f850160051c81016020861015610cea5750805b601f850160051c820191505b818110156106a557828155600101610cf6565b67ffffffffffffffff831115610d2157610d21610c7e565b610d3583610d2f8354610c92565b83610cc4565b5f601f841160018114610d66575f8515610d4f5750838201355b5f19600387901b1c1916600186901b178355610dbe565b5f83815260209020601f19861690835b82811015610d965786850135825560209485019460019092019101610d76565b5086821015610db2575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f8135610c07816109f9565b8135610ddc8161094d565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e1481610abc565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610e72836109e8565b921760e09190911b909116178155610eaa610e8f60608401610c28565b6001830163ffffffff821663ffffffff198254161781555050565b610eb76080830183610c34565b610ec5818360028601610d09565b505061054a610ed660a08401610dc5565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff871660208201525f63ffffffff808816604084015280871660608401525060c06080830152610f3360c083018587610ad1565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610f6b57610f6b610be0565b509291505056fea264697066735822122076ee989163cafe9af5816a8fe978aae61590b2374fa3eb153e06140a1bba2f1b64736f6c63430008140033a264697066735822122066465611131e935a75afab1e5ad5d2ea36a8341118e771dff756ddc0023095aa64736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612cd8806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638129fc1c116100cd578063a1a227fa11610081578063bbd79e1511610066578063bbd79e151461035d578063e34fbfc814610370578063f2fde38b1461038357600080fd5b8063a1a227fa1461033a578063a52f433c1461034d57600080fd5b80638da5cb5b116100b25780638da5cb5b146102f65780638fa0d0531461030757806398077e861461031a57600080fd5b80638129fc1c146102535780638236a7ba1461025b57600080fd5b8063440c953b116101245780636a30d26c116101095780636a30d26c1461023b578063715018a614610243578063728109961461024b57600080fd5b8063440c953b1461021157806359a900711461022857600080fd5b806303e72e4814610156578063324ff8661461016b5780633e60a22f1461018957806343348b2f146101d5575b600080fd5b610169610164366004611296565b610396565b005b61017361049e565b6040516101809190611338565b60405180910390f35b6101bd61019736600461139a565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610180565b6102016101e33660046113d7565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610180565b61021a60075481565b604051908152602001610180565b610169610236366004611444565b610577565b6101736105fa565b6101696106ca565b6101696106de565b61016961075e565b6102c36102693660046114eb565b6040805160608082018352600080835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610180565b6000546001600160a01b03166101bd565b610169610315366004611504565b61091e565b61032d6103283660046114eb565b6109b2565b604051610180919061158b565b6009546101bd906001600160a01b031681565b600654610100900460ff16610201565b61016961036b36600461159e565b610a5e565b61016961037e366004611664565b610bbc565b6101696103913660046113d7565b610bdb565b61039e610c32565b60006001600160a01b03166005836040516103b991906116a6565b908152604051908190036020019020546001600160a01b03160361041557600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610413838261174a565b505b8060058360405161042691906116a6565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590610492908490849061180a565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561056e5783829060005260206000200180546104e1906116c2565b80601f016020809104026020016040519081016040528092919081815260200182805461050d906116c2565b801561055a5780601f1061052f5761010080835404028352916020019161055a565b820191906000526020600020905b81548152906001019060200180831161053d57829003601f168201915b5050505050815260200190600101906104c2565b50505050905090565b60065460ff161561058757600080fd5b60068054600160ff1991821681179092556001600160a01b03881660009081526002602052604081208054909216831790915560038054928301815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016105f1848261174a565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561056e57838290600052602060002001805461063d906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610669906116c2565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b50505050508152602001906001019061061e565b6106d2610c32565b6106dc6000610c78565b565b6106e6610c32565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107a95750825b905060008267ffffffffffffffff1660011480156107c65750303b155b9050811580156107d4575080155b1561080b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561083f57845468ff00000000000000001916680100000000000000001785555b6000600755604051610850906111d0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a1831561091757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6002600061093260408701602088016113d7565b6001600160a01b0316815260208101919091526040016000205460ff166109a05760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b6109a984610cd5565b61075881610d0a565b600481815481106109c257600080fd5b9060005260206000200160009150905080546109dd906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a09906116c2565b8015610a565780601f10610a2b57610100808354040283529160200191610a56565b820191906000526020600020905b815481529060010190602001808311610a3957829003601f168201915b505050505081565b6001600160a01b03861660009081526002602052604090205460ff1680610a8457600080fd5b8115610b54576000610aba88888688604051602001610aa69493929190611835565b604051602081830303815290604052610dc4565b90506000610ac88288610dff565b9050886001600160a01b0316816001600160a01b031614610b515760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d6174636800000000000000000000000000000000000000006064820152608401610997565b50505b6001600160a01b0386166000908152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01610bb2848261174a565b5050505050505050565b336000908152600160205260409020610bd6828483611891565b505050565b610be3610c32565b6001600160a01b038116610c26576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610997565b610c2f81610c78565b50565b6000546001600160a01b031633146106dc576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610997565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803560009081526008602052604090208190610cf18282611951565b505060075460408201351115610c2f5760400135600755565b6000610d16828061199d565b9050905060005b81811015610bd6576009546001600160a01b0316639730886d610d40858061199d565b84818110610d5057610d506119e7565b9050602002810190610d6291906119fd565b60016040518363ffffffff1660e01b8152600401610d81929190611aac565b600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b5050505080610dbd90611b63565b9050610d1d565b6000610dd08251610e29565b82604051602001610de2929190611b8a565b604051602081830303815290604052805190602001209050919050565b600080600080610e0f8686610ec9565b925092509250610e1f8282610f16565b5090949350505050565b60606000610e368361101e565b600101905060008167ffffffffffffffff811115610e5657610e566111de565b6040519080825280601f01601f191660200182016040528015610e80576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e8a57509392505050565b60008060008351604103610f035760208401516040850151606086015160001a610ef588828585611101565b955095509550505050610f0f565b50508151600091506002905b9250925092565b6000826003811115610f2a57610f2a611be5565b03610f33575050565b6001826003811115610f4757610f47611be5565b03610f7e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f9257610f92611be5565b03610fcc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b6003826003811115610fe057610fe0611be5565b0361101a576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611067577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611093576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106110b157662386f26fc10000830492506010015b6305f5e10083106110c9576305f5e100830492506008015b61271083106110dd57612710830492506004015b606483106110ef576064830492506002015b600a83106110fb576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561113c57506000915060039050826111c6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611190573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111bc575060009250600191508290506111c6565b9250600091508190505b9450945094915050565b6110a78062001bfc83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120557600080fd5b813567ffffffffffffffff80821115611220576112206111de565b604051601f8301601f19908116603f01168101908282118183101715611248576112486111de565b8160405283815286602085880101111561126157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610c2f57600080fd5b600080604083850312156112a957600080fd5b823567ffffffffffffffff8111156112c057600080fd5b6112cc858286016111f4565b92505060208301356112dd81611281565b809150509250929050565b60005b838110156113035781810151838201526020016112eb565b50506000910152565b600081518084526113248160208601602086016112e8565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561138d57603f1988860301845261137b85835161130c565b9450928501929085019060010161135f565b5092979650505050505050565b6000602082840312156113ac57600080fd5b813567ffffffffffffffff8111156113c357600080fd5b6113cf848285016111f4565b949350505050565b6000602082840312156113e957600080fd5b81356113f481611281565b9392505050565b60008083601f84011261140d57600080fd5b50813567ffffffffffffffff81111561142557600080fd5b60208301915083602082850101111561143d57600080fd5b9250929050565b6000806000806000806080878903121561145d57600080fd5b863561146881611281565b9550602087013567ffffffffffffffff8082111561148557600080fd5b6114918a838b016113fb565b909750955060408901359150808211156114aa57600080fd5b6114b68a838b016111f4565b945060608901359150808211156114cc57600080fd5b506114d989828a016113fb565b979a9699509497509295939492505050565b6000602082840312156114fd57600080fd5b5035919050565b60008060008084860360a081121561151b57600080fd5b606081121561152957600080fd5b50849350606085013567ffffffffffffffff8082111561154857600080fd5b611554888389016113fb565b9095509350608087013591508082111561156d57600080fd5b5085016020818803121561158057600080fd5b939692955090935050565b6020815260006113f4602083018461130c565b60008060008060008060c087890312156115b757600080fd5b86356115c281611281565b955060208701356115d281611281565b9450604087013567ffffffffffffffff808211156115ef57600080fd5b6115fb8a838b016111f4565b9550606089013591508082111561161157600080fd5b61161d8a838b016111f4565b9450608089013591508082111561163357600080fd5b5061164089828a016111f4565b92505060a0870135801515811461165657600080fd5b809150509295509295509295565b6000806020838503121561167757600080fd5b823567ffffffffffffffff81111561168e57600080fd5b61169a858286016113fb565b90969095509350505050565b600082516116b88184602087016112e8565b9190910192915050565b600181811c908216806116d657607f821691505b6020821081036116f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610bd657600081815260208120601f850160051c810160208610156117235750805b601f850160051c820191505b818110156117425782815560010161172f565b505050505050565b815167ffffffffffffffff811115611764576117646111de565b6117788161177284546116c2565b846116fc565b602080601f8311600181146117ad57600084156117955750858301515b600019600386901b1c1916600185901b178555611742565b600085815260208120601f198616915b828110156117dc578886015182559484019460019091019084016117bd565b50858210156117fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061181d604083018561130c565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835161186c8160288501602088016112e8565b8351908301906118838160288401602088016112e8565b016028019695505050505050565b67ffffffffffffffff8311156118a9576118a96111de565b6118bd836118b783546116c2565b836116fc565b6000601f8411600181146118f157600085156118d95750838201355b600019600387901b1c1916600186901b178355610917565b600083815260209020601f19861690835b828110156119225786850135825560209485019460019092019101611902565b508682101561193f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013561196781611281565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e198436030181126119b457600080fd5b83018035915067ffffffffffffffff8211156119cf57600080fd5b6020019150600581901b360382131561143d57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be198336030181126116b857600080fd5b803563ffffffff81168114611a2757600080fd5b919050565b6000808335601e19843603018112611a4357600080fd5b830160208101925035905067ffffffffffffffff811115611a6357600080fd5b80360382131561143d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff81168114611a2757600080fd5b6040815260008335611abd81611281565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611ae757600080fd5b606084015250611af960408501611a13565b63ffffffff166080830152611b1060608501611a13565b63ffffffff1660a0830152611b286080850185611a2c565b60c080850152611b3d61010085018284611a72565b915050611b4c60a08601611a9b565b60ff1660e084015260209092019290925292915050565b600060018201611b8357634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611bc281601a8501602088016112e8565b835190830190611bd981601a8401602088016112e8565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a2646970667358221220f9990321c02b27ff6d9e9764a4533e0649409c086361d42137fc2d2df1d7363064736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/MessageBus/MessageBus.go b/contracts/generated/MessageBus/MessageBus.go index 58712f9bf3..a5919dd6c7 100644 --- a/contracts/generated/MessageBus/MessageBus.go +++ b/contracts/generated/MessageBus/MessageBus.go @@ -42,7 +42,7 @@ type StructsCrossChainMessage struct { // MessageBusMetaData contains all meta data concerning the MessageBus contract. var MessageBusMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e81610044565b50610093565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fa8806100a05f395ff3fe6080604052600436106100b4575f3560e01c80638da5cb5b1161006857806399a3ad211161004d57806399a3ad211461025d578063b1454caa1461027c578063f2fde38b146102b457610124565b80638da5cb5b146102185780639730886d1461023e57610124565b8063346633fb11610099578063346633fb146101d257806336d2da90146101e5578063715018a61461020457610124565b80630fcfbd111461017157806333a88c72146101a357610124565b36610124576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044015f604051808303818588803b158015610110575f80fd5b505af1158015610122573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561017c575f80fd5b5061019061018b36600461091b565b6102d3565b6040519081526020015b60405180910390f35b3480156101ae575f80fd5b506101c26101bd36600461091b565b610387565b604051901515815260200161019a565b6101226101e0366004610961565b6103d8565b3480156101f0575f80fd5b506101226101ff36600461098b565b6104a3565b34801561020f575f80fd5b5061012261054e565b348015610223575f80fd5b505f546040516001600160a01b03909116815260200161019a565b348015610249575f80fd5b506101226102583660046109a6565b610561565b348015610268575f80fd5b50610122610277366004610961565b6106ad565b348015610287575f80fd5b5061029b610296366004610a17565b610759565b60405167ffffffffffffffff909116815260200161019a565b3480156102bf575f80fd5b506101226102ce36600461098b565b6107b1565b5f80826040516020016102e69190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150806103805760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b9392505050565b5f808260405160200161039a9190610af9565b60408051601f1981840301815291815281516020928301205f818152600190935291205490915080158015906103d05750428111155b949350505050565b5f341180156103e657508034145b6104585760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e67204574686572000000000000000000000000000000006064820152608401610168565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104ab610807565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146104f4576040519150601f19603f3d011682016040523d82523d5f602084013e6104f9565b606091505b505090508061054a5760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b5050565b610556610807565b61055f5f61084c565b565b610569610807565b5f6105748242610bf4565b90505f836040516020016105889190610af9565b60408051601f1981840301815291815281516020928301205f8181526001909352912054909150156106225760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610168565b5f8181526001602090815260408220849055600291906106449087018761098b565b6001600160a01b0316815260208101919091526040015f9081209061066f6080870160608801610c0d565b63ffffffff1681526020808201929092526040015f90812080546001810182559082529190208591600402016106a58282610dd1565b505050505050565b6106b5610807565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146106fe576040519150601f19603f3d011682016040523d82523d5f602084013e610703565b606091505b50509050806107545760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c75650000000000000000000000006044820152606401610168565b505050565b5f610763336108a8565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107a09796959493929190610eeb565b60405180910390a195945050505050565b6107b9610807565b6001600160a01b0381166107fb576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610168565b6108048161084c565b50565b5f546001600160a01b0316331461055f576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610168565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381165f908152600360205260408120805467ffffffffffffffff1691600191906108da8385610f4a565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b5f60c08284031215610915575f80fd5b50919050565b5f6020828403121561092b575f80fd5b813567ffffffffffffffff811115610941575f80fd5b6103d084828501610905565b6001600160a01b0381168114610804575f80fd5b5f8060408385031215610972575f80fd5b823561097d8161094d565b946020939093013593505050565b5f6020828403121561099b575f80fd5b81356103808161094d565b5f80604083850312156109b7575f80fd5b823567ffffffffffffffff8111156109cd575f80fd5b6109d985828601610905565b95602094909401359450505050565b63ffffffff81168114610804575f80fd5b60ff81168114610804575f80fd5b8035610a12816109f9565b919050565b5f805f805f60808688031215610a2b575f80fd5b8535610a36816109e8565b94506020860135610a46816109e8565b9350604086013567ffffffffffffffff80821115610a62575f80fd5b818801915088601f830112610a75575f80fd5b813581811115610a83575f80fd5b896020828501011115610a94575f80fd5b6020830195508094505050506060860135610aae816109f9565b809150509295509295909350565b67ffffffffffffffff81168114610804575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235610b098161094d565b6001600160a01b0381166020840152506020830135610b2781610abc565b67ffffffffffffffff808216604085015260408501359150610b48826109e8565b63ffffffff808316606086015260608601359250610b65836109e8565b80831660808601525060808501359150601e19853603018212610b86575f80fd5b6020918501918201913581811115610b9c575f80fd5b803603831315610baa575f80fd5b60c060a0860152610bbf60e086018285610ad1565b92505050610bcf60a08501610a07565b60ff811660c0850152509392505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c0757610c07610be0565b92915050565b5f60208284031215610c1d575f80fd5b8135610380816109e8565b5f8135610c07816109e8565b5f808335601e19843603018112610c49575f80fd5b83018035915067ffffffffffffffff821115610c63575f80fd5b602001915036819003821315610c77575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610ca657607f821691505b60208210810361091557634e487b7160e01b5f52602260045260245ffd5b601f821115610754575f81815260208120601f850160051c81016020861015610cea5750805b601f850160051c820191505b818110156106a557828155600101610cf6565b67ffffffffffffffff831115610d2157610d21610c7e565b610d3583610d2f8354610c92565b83610cc4565b5f601f841160018114610d66575f8515610d4f5750838201355b5f19600387901b1c1916600186901b178355610dbe565b5f83815260209020601f19861690835b82811015610d965786850135825560209485019460019092019101610d76565b5086821015610db2575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f8135610c07816109f9565b8135610ddc8161094d565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e1481610abc565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610e72836109e8565b921760e09190911b909116178155610eaa610e8f60608401610c28565b6001830163ffffffff821663ffffffff198254161781555050565b610eb76080830183610c34565b610ec5818360028601610d09565b505061054a610ed660a08401610dc5565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff871660208201525f63ffffffff808816604084015280871660608401525060c06080830152610f3360c083018587610ad1565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610f6b57610f6b610be0565b509291505056fea264697066735822122076ee989163cafe9af5816a8fe978aae61590b2374fa3eb153e06140a1bba2f1b64736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033", } // MessageBusABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ObsERC20/ObsERC20.go b/contracts/generated/ObsERC20/ObsERC20.go index b33f30c74f..ebd9c97c6e 100644 --- a/contracts/generated/ObsERC20/ObsERC20.go +++ b/contracts/generated/ObsERC20/ObsERC20.go @@ -32,7 +32,7 @@ var ( // ObsERC20MetaData contains all meta data concerning the ObsERC20 contract. var ObsERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b5060405162000c0538038062000c05833981016040819052620000599162000141565b8181600362000069838262000233565b50600462000078828262000233565b5050505050620002fb565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620000a7575f80fd5b81516001600160401b0380821115620000c457620000c462000083565b604051601f8301601f19908116603f01168101908282118183101715620000ef57620000ef62000083565b816040528381526020925086838588010111156200010b575f80fd5b5f91505b838210156200012e57858201830151818301840152908201906200010f565b5f93810190920192909252949350505050565b5f806040838503121562000153575f80fd5b82516001600160401b03808211156200016a575f80fd5b620001788683870162000097565b935060208501519150808211156200018e575f80fd5b506200019d8582860162000097565b9150509250929050565b600181811c90821680620001bc57607f821691505b602082108103620001db57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200022e575f81815260208120601f850160051c81016020861015620002095750805b601f850160051c820191505b818110156200022a5782815560010162000215565b5050505b505050565b81516001600160401b038111156200024f576200024f62000083565b6200026781620002608454620001a7565b84620001e1565b602080601f8311600181146200029d575f8415620002855750858301515b5f19600386901b1c1916600185901b1785556200022a565b5f85815260208120601f198616915b82811015620002cd57888601518255948401946001909101908401620002ac565b5085821015620002eb57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6108fc80620003095f395ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063313ce5671161007257806395d89b411161005857806395d89b411461012b578063a9059cbb14610133578063dd62ed3e14610146575f80fd5b8063313ce5671461010957806370a0823114610118575f80fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6575b5f80fd5b6100ab610159565b6040516100b89190610757565b60405180910390f35b6100d46100cf3660046107bd565b6101e9565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d46101043660046107e5565b610202565b604051601281526020016100b8565b6100e861012636600461081e565b610225565b6100ab6102cd565b6100d46101413660046107bd565b6102dc565b6100e861015436600461083e565b6102e9565b6060600380546101689061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546101949061086f565b80156101df5780601f106101b6576101008083540402835291602001916101df565b820191905f5260205f20905b8154815290600101906020018083116101c257829003601f168201915b5050505050905090565b5f336101f68185856103f7565b60019150505b92915050565b5f3361020f858285610409565b61021a858585610485565b506001949350505050565b5f6001600160a01b0382163203610253576001600160a01b0382165f908152602081905260409020546101fc565b6001600160a01b0382163303610280576001600160a01b0382165f908152602081905260409020546101fc565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064015b60405180910390fd5b6060600480546101689061086f565b5f336101f6818585610485565b5f326001600160a01b03841614806103095750326001600160a01b038316145b1561033b576001600160a01b038084165f908152600160209081526040808320938616835292905220545b90506101fc565b336001600160a01b038416148061035a5750336001600160a01b038316145b15610389576001600160a01b038084165f90815260016020908152604080832093861683529290522054610334565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016102c4565b6104048383836001610514565b505050565b5f61041484846102e9565b90505f19811461047f5781811015610471576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016102c4565b61047f84848484035f610514565b50505050565b6001600160a01b0383166104c7576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038216610509576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b610404838383610618565b6001600160a01b038416610556576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038316610598576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016102c4565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561047f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060a91815260200190565b60405180910390a350505050565b6001600160a01b038316610642578060025f82825461063791906108a7565b909155506106cb9050565b6001600160a01b0383165f90815260208190526040902054818110156106ad576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016102c4565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610705565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074a91815260200190565b60405180910390a3505050565b5f6020808352835180828501525f5b8181101561078257858101830151858201604001528201610766565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b8575f80fd5b919050565b5f80604083850312156107ce575f80fd5b6107d7836107a2565b946020939093013593505050565b5f805f606084860312156107f7575f80fd5b610800846107a2565b925061080e602085016107a2565b9150604084013590509250925092565b5f6020828403121561082e575f80fd5b610837826107a2565b9392505050565b5f806040838503121561084f575f80fd5b610858836107a2565b9150610866602084016107a2565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a157634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156101fc57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ee5ed205aebde9bd99bcfce3cb969833ce42c8b5553fdc7a2c86922f8e738a3964736f6c63430008140033", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b5060405162000c4738038062000c478339810160408190526200005a9162000149565b818160036200006a838262000242565b50600462000079828262000242565b50505050506200030e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000ac57600080fd5b81516001600160401b0380821115620000c957620000c962000084565b604051601f8301601f19908116603f01168101908282118183101715620000f457620000f462000084565b816040528381526020925086838588010111156200011157600080fd5b600091505b8382101562000135578582018301518183018401529082019062000116565b600093810190920192909252949350505050565b600080604083850312156200015d57600080fd5b82516001600160401b03808211156200017557600080fd5b62000183868387016200009a565b935060208501519150808211156200019a57600080fd5b50620001a9858286016200009a565b9150509250929050565b600181811c90821680620001c857607f821691505b602082108103620001e957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023d57600081815260208120601f850160051c81016020861015620002185750805b601f850160051c820191505b81811015620002395782815560010162000224565b5050505b505050565b81516001600160401b038111156200025e576200025e62000084565b62000276816200026f8454620001b3565b84620001ef565b602080601f831160018114620002ae5760008415620002955750858301515b600019600386901b1c1916600185901b17855562000239565b600085815260208120601f198616915b82811015620002df57888601518255948401946001909101908401620002be565b5085821015620002fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610929806200031e6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b4114610130578063a9059cbb14610138578063dd62ed3e1461014b57600080fd5b8063313ce5671461010e57806370a082311461011d57600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e957806323b872dd146100fb575b600080fd5b6100b061015e565b6040516100bd9190610773565b60405180910390f35b6100d96100d43660046107dd565b6101f0565b60405190151581526020016100bd565b6002545b6040519081526020016100bd565b6100d9610109366004610807565b61020a565b604051601281526020016100bd565b6100ed61012b366004610843565b61022e565b6100b06102d9565b6100d96101463660046107dd565b6102e8565b6100ed610159366004610865565b6102f6565b60606003805461016d90610898565b80601f016020809104026020016040519081016040528092919081815260200182805461019990610898565b80156101e65780601f106101bb576101008083540402835291602001916101e6565b820191906000526020600020905b8154815290600101906020018083116101c957829003601f168201915b5050505050905090565b6000336101fe818585610407565b60019150505b92915050565b600033610218858285610419565b610223858585610498565b506001949350505050565b60006001600160a01b038216320361025e576001600160a01b038216600090815260208190526040902054610204565b6001600160a01b038216330361028c576001600160a01b038216600090815260208190526040902054610204565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064015b60405180910390fd5b60606004805461016d90610898565b6000336101fe818585610498565b6000326001600160a01b03841614806103175750326001600160a01b038316145b1561034a576001600160a01b038084166000908152600160209081526040808320938616835292905220545b9050610204565b336001600160a01b03841614806103695750336001600160a01b038316145b15610399576001600160a01b03808416600090815260016020908152604080832093861683529290522054610343565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016102d0565b6104148383836001610529565b505050565b600061042584846102f6565b905060001981146104925781811015610483576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016102d0565b61049284848484036000610529565b50505050565b6001600160a01b0383166104db576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016102d0565b6001600160a01b03821661051e576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016102d0565b610414838383610630565b6001600160a01b03841661056c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016102d0565b6001600160a01b0383166105af576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016102d0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561049257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062291815260200190565b60405180910390a350505050565b6001600160a01b03831661065b57806002600082825461065091906108d2565b909155506106e69050565b6001600160a01b038316600090815260208190526040902054818110156106c7576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016102d0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661070257600280548290039055610721565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161076691815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107a057858101830151858201604001528201610784565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107d857600080fd5b919050565b600080604083850312156107f057600080fd5b6107f9836107c1565b946020939093013593505050565b60008060006060848603121561081c57600080fd5b610825846107c1565b9250610833602085016107c1565b9150604084013590509250925092565b60006020828403121561085557600080fd5b61085e826107c1565b9392505050565b6000806040838503121561087857600080fd5b610881836107c1565b915061088f602084016107c1565b90509250929050565b600181811c908216806108ac57607f821691505b6020821081036108cc57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561020457634e487b7160e01b600052601160045260246000fdfea26469706673582212208662842705313f18d545cbf80eaa76650666e87da6a5ebe4efbe0d4a14c7362a64736f6c63430008140033", } // ObsERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ObscuroBridge/ObscuroBridge.go b/contracts/generated/ObscuroBridge/ObscuroBridge.go index e4b61ac875..02338cd41e 100644 --- a/contracts/generated/ObscuroBridge/ObscuroBridge.go +++ b/contracts/generated/ObscuroBridge/ObscuroBridge.go @@ -32,7 +32,7 @@ var ( // ObscuroBridgeMetaData contains all meta data concerning the ObscuroBridge contract. var ObscuroBridgeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"promoteToAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setRemoteBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526001805463ffffffff60a01b1916905534801561001f575f80fd5b506118cf8061002d5f395ff3fe60806040526004361061013d575f3560e01c806375b238fc116100bb578063a217fddf11610071578063c4d66de811610057578063c4d66de81461039a578063d547741f146103b9578063e4c3ebc7146103d8575f80fd5b8063a217fddf14610368578063a381c8e21461037b575f80fd5b806383bece4d116100a157806383bece4d146102e657806391d148541461030557806393b3744214610349575f80fd5b806375b238fc1461029457806375cb2672146102c7575f80fd5b80632f2ff15d11610110578063498d82ab116100f6578063498d82ab146102235780635d872970146102425780635fa7b58414610275575f80fd5b80632f2ff15d146101e557806336568abe14610204575f80fd5b806301ffc9a71461014157806316ce8149146101755780631888d71214610196578063248a9ca3146101a9575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611504565b61040b565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461153f565b610473565b005b6101946101a436600461153f565b6104cd565b3480156101b4575f80fd5b506101d76101c336600461155a565b5f9081526002602052604090206001015490565b60405190815260200161016c565b3480156101f0575f80fd5b506101946101ff366004611571565b610600565b34801561020f575f80fd5b5061019461021e366004611571565b61062a565b34801561022e575f80fd5b5061019461023d3660046115e4565b61067b565b34801561024d575f80fd5b506101d77f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b348015610280575f80fd5b5061019461028f36600461153f565b61073f565b34801561029f575f80fd5b506101d77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102d2575f80fd5b506101946102e136600461153f565b610793565b3480156102f1575f80fd5b50610194610300366004611661565b61086b565b348015610310575f80fd5b5061016061031f366004611571565b5f9182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610354575f80fd5b5061019461036336600461153f565b610a84565b348015610373575f80fd5b506101d75f81565b348015610386575f80fd5b50610194610395366004611661565b610ad8565b3480156103a5575f80fd5b506101946103b436600461153f565b610c82565b3480156103c4575f80fd5b506101946103d3366004611571565b610e13565b3480156103e3575f80fd5b506101d77fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061046d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561049d81610e37565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f34116105215760405162461bcd60e51b815260206004820152600f60248201527f456d707479207472616e736665722e000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518082018252348082526001600160a01b03848116602093840190815284519384019290925290518116828401528251808303840181526060909201909252600354909161057891168260025b5f80610e44565b6001546001600160a01b03166040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152346024830181905292169163346633fb916044015f604051808303818588803b1580156105e5575f80fd5b505af11580156105f7573d5f803e3d5ffd5b50505050505050565b5f8281526002602052604090206001015461061a81610e37565b6106248383610f4c565b50505050565b6001600160a01b038116331461066c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106768282610ff7565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106a581610e37565b6106cf7f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87610f4c565b505f63458ffd6360e01b87878787876040516024016106f29594939291906116c8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506105f7906001600160a01b0316826001610571565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561076981610e37565b6106767f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83610ff7565b61079b61107c565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa158015610817573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083b9190611709565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003545f546001600160a01b03918216911633146108f15760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e67657221000000000000000000000000000000006064820152608401610518565b806001600160a01b03166109036110e5565b6001600160a01b03161461097f5760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e646572210000000000000000000000000000006064820152608401610518565b6001600160a01b0384165f9081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16156109ce576109c984848461115e565b610624565b6001600160a01b0384165f9081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff1615610a16576109c982611169565b60405162461bcd60e51b815260206004820152602560248201527f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206160448201527f737365742e0000000000000000000000000000000000000000000000000000006064820152608401610518565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610aae81610e37565b6106767fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610f4c565b5f8211610b275760405162461bcd60e51b815260206004820152601a60248201527f417474656d7074696e6720656d707479207472616e736665722e0000000000006044820152606401610518565b6001600160a01b0383165f9081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16610bf95760405162461bcd60e51b815260206004820152604e60248201527f54686973206164647265737320686173206e6f74206265656e20676976656e2060448201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60648201527f742077686974656c69737465642e000000000000000000000000000000000000608482015260a401610518565b610c0583333085611208565b604080516001600160a01b038581166024830152604482018590528381166064808401919091528351808403909101815260849092019092526020810180516001600160e01b03167f83bece4d0000000000000000000000000000000000000000000000000000000017905260035490916106249116825f610571565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610ccc5750825b90505f8267ffffffffffffffff166001148015610ce85750303b155b905081158015610cf6575080155b15610d2d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d6157845468ff00000000000000001916680100000000000000001785555b610d6a86610793565b610d947fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610f4c565b50610dbf7fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105785f610f4c565b508315610e0b57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f82815260026020526040902060010154610e2d81610e37565b6106248383610ff7565b610e41813361126f565b50565b5f6040518060600160405280876001600160a01b0316815260200186815260200184815250604051602001610e799190611771565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff16906014610ecc836117b5565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b8152600401610f0c94939291906117fc565b6020604051808303815f875af1158015610f28573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f79190611838565b5f8281526002602090815260408083206001600160a01b038516845290915281205460ff16610ff0575f8381526002602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610fa83390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161046d565b505f61046d565b5f8281526002602090815260408083206001600160a01b038516845290915281205460ff1615610ff0575f8381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161046d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166110e3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805f9054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611135573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111599190611709565b905090565b6106768382846112dc565b6040515f906001600160a01b038316908281818181865af19150503d805f81146111ae576040519150601f19603f3d011682016040523d82523d5f602084013e6111b3565b606091505b50509050806112045760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e642045746865720000000000000000000000006044820152606401610518565b5050565b6040516001600160a01b0384811660248301528381166044830152606482018390526106249186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061130d565b5f8281526002602090815260408083206001600160a01b038516845290915290205460ff16611204576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610518565b6040516001600160a01b0383811660248301526044820183905261067691859182169063a9059cbb9060640161123d565b5f6113216001600160a01b03841683611387565b905080515f14158015611345575080806020019051810190611343919061185f565b155b15610676576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610518565b606061139483835f61139b565b9392505050565b6060814710156113d9576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610518565b5f80856001600160a01b031684866040516113f4919061187e565b5f6040518083038185875af1925050503d805f811461142e576040519150601f19603f3d011682016040523d82523d5f602084013e611433565b606091505b509150915061144386838361144d565b9695505050505050565b6060826114625761145d826114c2565b611394565b815115801561147957506001600160a01b0384163b155b156114bb576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610518565b5080611394565b8051156114d25780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215611514575f80fd5b81356001600160e01b031981168114611394575f80fd5b6001600160a01b0381168114610e41575f80fd5b5f6020828403121561154f575f80fd5b81356113948161152b565b5f6020828403121561156a575f80fd5b5035919050565b5f8060408385031215611582575f80fd5b8235915060208301356115948161152b565b809150509250929050565b5f8083601f8401126115af575f80fd5b50813567ffffffffffffffff8111156115c6575f80fd5b6020830191508360208285010111156115dd575f80fd5b9250929050565b5f805f805f606086880312156115f8575f80fd5b85356116038161152b565b9450602086013567ffffffffffffffff8082111561161f575f80fd5b61162b89838a0161159f565b90965094506040880135915080821115611643575f80fd5b506116508882890161159f565b969995985093965092949392505050565b5f805f60608486031215611673575f80fd5b833561167e8161152b565b92506020840135915060408401356116958161152b565b809150509250925092565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0386168152606060208201525f6116ea6060830186886116a0565b82810360408401526116fd8185876116a0565b98975050505050505050565b5f60208284031215611719575f80fd5b81516113948161152b565b5f5b8381101561173e578181015183820152602001611726565b50505f910152565b5f815180845261175d816020860160208601611724565b601f01601f19169290920160200192915050565b602081526001600160a01b0382511660208201525f60208301516060604084015261179f6080840182611746565b9050604084015160608401528091505092915050565b5f63ffffffff8083168181036117f2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019392505050565b5f63ffffffff8087168352808616602084015250608060408301526118246080830185611746565b905060ff8316606083015295945050505050565b5f60208284031215611848575f80fd5b815167ffffffffffffffff81168114611394575f80fd5b5f6020828403121561186f575f80fd5b81518015158114611394575f80fd5b5f825161188f818460208701611724565b919091019291505056fea2646970667358221220eb300a1f32731fc01883edb9fd7062b4cbe7d428f2f0a0bc9f4267f6a53a009e64736f6c63430008140033", + Bin: "0x60806040526001805463ffffffff60a01b1916905534801561002057600080fd5b50611944806100306000396000f3fe6080604052600436106101445760003560e01c806375b238fc116100c0578063a217fddf11610074578063c4d66de811610059578063c4d66de8146103b4578063d547741f146103d4578063e4c3ebc7146103f457600080fd5b8063a217fddf1461037f578063a381c8e21461039457600080fd5b806383bece4d116100a557806383bece4d146102f957806391d148541461031957806393b374421461035f57600080fd5b806375b238fc146102a557806375cb2672146102d957600080fd5b80632f2ff15d11610117578063498d82ab116100fc578063498d82ab146102315780635d872970146102515780635fa7b5841461028557600080fd5b80632f2ff15d146101f157806336568abe1461021157600080fd5b806301ffc9a71461014957806316ce81491461017e5780631888d712146101a0578063248a9ca3146101b3575b600080fd5b34801561015557600080fd5b5061016961016436600461154f565b610428565b60405190151581526020015b60405180910390f35b34801561018a57600080fd5b5061019e61019936600461158e565b610491565b005b61019e6101ae36600461158e565b6104eb565b3480156101bf57600080fd5b506101e36101ce3660046115ab565b60009081526002602052604090206001015490565b604051908152602001610175565b3480156101fd57600080fd5b5061019e61020c3660046115c4565b610624565b34801561021d57600080fd5b5061019e61022c3660046115c4565b61064f565b34801561023d57600080fd5b5061019e61024c36600461163d565b6106a0565b34801561025d57600080fd5b506101e37f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b34801561029157600080fd5b5061019e6102a036600461158e565b610765565b3480156102b157600080fd5b506101e37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102e557600080fd5b5061019e6102f436600461158e565b6107b9565b34801561030557600080fd5b5061019e6103143660046116c0565b610894565b34801561032557600080fd5b506101696103343660046115c4565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561036b57600080fd5b5061019e61037a36600461158e565b610ab0565b34801561038b57600080fd5b506101e3600081565b3480156103a057600080fd5b5061019e6103af3660046116c0565b610b04565b3480156103c057600080fd5b5061019e6103cf36600461158e565b610cb1565b3480156103e057600080fd5b5061019e6103ef3660046115c4565b610e45565b34801561040057600080fd5b506101e37fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061048b57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104bb81610e6a565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600034116105405760405162461bcd60e51b815260206004820152600f60248201527f456d707479207472616e736665722e000000000000000000000000000000000060448201526064015b60405180910390fd5b604080518082018252348082526001600160a01b03848116602093840190815284519384019290925290518116828401528251808303840181526060909201909252600354909161059891168260025b600080610e77565b6001546001600160a01b03166040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152346024830181905292169163346633fb916044016000604051808303818588803b15801561060757600080fd5b505af115801561061b573d6000803e3d6000fd5b50505050505050565b60008281526002602052604090206001015461063f81610e6a565b6106498383610f83565b50505050565b6001600160a01b0381163314610691576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069b8282611031565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106ca81610e6a565b6106f47f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87610f83565b50600063458ffd6360e01b878787878760405160240161071895949392919061172b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260035490915061061b906001600160a01b0316826001610590565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561078f81610e6a565b61069b7f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83611031565b6107c16110b8565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa158015610840573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610864919061176d565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003546000546001600160a01b039182169116331461091b5760405162461bcd60e51b815260206004820152603060248201527f436f6e74726163742063616c6c6572206973206e6f742074686520726567697360448201527f7465726564206d657373656e67657221000000000000000000000000000000006064820152608401610537565b806001600160a01b031661092d611121565b6001600160a01b0316146109a95760405162461bcd60e51b815260206004820152603160248201527f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2060448201527f696e636f72726563742073656e646572210000000000000000000000000000006064820152608401610537565b6001600160a01b03841660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16156109f9576109f484848461119e565b610649565b6001600160a01b03841660009081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff1615610a42576109f4826111a9565b60405162461bcd60e51b815260206004820152602560248201527f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206160448201527f737365742e0000000000000000000000000000000000000000000000000000006064820152608401610537565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610ada81610e6a565b61069b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610f83565b60008211610b545760405162461bcd60e51b815260206004820152601a60248201527f417474656d7074696e6720656d707479207472616e736665722e0000000000006044820152606401610537565b6001600160a01b03831660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16610c275760405162461bcd60e51b815260206004820152604e60248201527f54686973206164647265737320686173206e6f74206265656e20676976656e2060448201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60648201527f742077686974656c69737465642e000000000000000000000000000000000000608482015260a401610537565b610c338333308561124b565b604080516001600160a01b038581166024830152604482018590528381166064808401919091528351808403909101815260849092019092526020810180516001600160e01b03167f83bece4d0000000000000000000000000000000000000000000000000000000017905260035490916106499116826000610590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cfc5750825b905060008267ffffffffffffffff166001148015610d195750303b155b905081158015610d27575080155b15610d5e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d9257845468ff00000000000000001916680100000000000000001785555b610d9b866107b9565b610dc57fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610f83565b50610df17fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105786000610f83565b508315610e3d57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b600082815260026020526040902060010154610e6081610e6a565b6106498383611031565b610e7481336112b2565b50565b60006040518060600160405280876001600160a01b0316815260200186815260200184815250604051602001610ead91906117da565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa917401000000000000000000000000000000000000000090910463ffffffff16906014610f008361181f565b91906101000a81548163ffffffff021916908363ffffffff1602179055508684866040518563ffffffff1660e01b8152600401610f409493929190611869565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b91906118a6565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff166110295760008381526002602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610fe13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161048b565b50600061048b565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff16156110295760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161048b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661111f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611199919061176d565b905090565b61069b838284611320565b6040516000906001600160a01b038316908281818181865af19150503d80600081146111f1576040519150601f19603f3d011682016040523d82523d6000602084013e6111f6565b606091505b50509050806112475760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e642045746865720000000000000000000000006044820152606401610537565b5050565b6040516001600160a01b0384811660248301528381166044830152606482018390526106499186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611351565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16611247576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610537565b6040516001600160a01b0383811660248301526044820183905261069b91859182169063a9059cbb90606401611280565b60006113666001600160a01b038416836113cd565b9050805160001415801561138b57508080602001905181019061138991906118d0565b155b1561069b576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610537565b60606113db838360006113e2565b9392505050565b606081471015611420576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610537565b600080856001600160a01b0316848660405161143c91906118f2565b60006040518083038185875af1925050503d8060008114611479576040519150601f19603f3d011682016040523d82523d6000602084013e61147e565b606091505b509150915061148e868383611498565b9695505050505050565b6060826114ad576114a88261150d565b6113db565b81511580156114c457506001600160a01b0384163b155b15611506576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610537565b50806113db565b80511561151d5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561156157600080fd5b81356001600160e01b0319811681146113db57600080fd5b6001600160a01b0381168114610e7457600080fd5b6000602082840312156115a057600080fd5b81356113db81611579565b6000602082840312156115bd57600080fd5b5035919050565b600080604083850312156115d757600080fd5b8235915060208301356115e981611579565b809150509250929050565b60008083601f84011261160657600080fd5b50813567ffffffffffffffff81111561161e57600080fd5b60208301915083602082850101111561163657600080fd5b9250929050565b60008060008060006060868803121561165557600080fd5b853561166081611579565b9450602086013567ffffffffffffffff8082111561167d57600080fd5b61168989838a016115f4565b909650945060408801359150808211156116a257600080fd5b506116af888289016115f4565b969995985093965092949392505050565b6000806000606084860312156116d557600080fd5b83356116e081611579565b92506020840135915060408401356116f781611579565b809150509250925092565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038616815260606020820152600061174e606083018688611702565b8281036040840152611761818587611702565b98975050505050505050565b60006020828403121561177f57600080fd5b81516113db81611579565b60005b838110156117a557818101518382015260200161178d565b50506000910152565b600081518084526117c681602086016020860161178a565b601f01601f19169290920160200192915050565b602081526001600160a01b038251166020820152600060208301516060604084015261180960808401826117ae565b9050604084015160608401528091505092915050565b600063ffffffff80831681810361185f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b600063ffffffff80871683528086166020840152506080604083015261189260808301856117ae565b905060ff8316606083015295945050505050565b6000602082840312156118b857600080fd5b815167ffffffffffffffff811681146113db57600080fd5b6000602082840312156118e257600080fd5b815180151581146113db57600080fd5b6000825161190481846020870161178a565b919091019291505056fea2646970667358221220b6da03d923071fdb64d4c34500251f0e4c8373e99c7304b82e92aad962239c9b64736f6c63430008140033", } // ObscuroBridgeABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/WrappedERC20/WrappedERC20.go b/contracts/generated/WrappedERC20/WrappedERC20.go index b74ae34fc5..4fef35b29c 100644 --- a/contracts/generated/WrappedERC20/WrappedERC20.go +++ b/contracts/generated/WrappedERC20/WrappedERC20.go @@ -32,7 +32,7 @@ var ( // WrappedERC20MetaData contains all meta data concerning the WrappedERC20 contract. var WrappedERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"giver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issueFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801562000036575f80fd5b50604051620012d3380380620012d3833981016040819052620000599162000228565b8181818160036200006b83826200031a565b5060046200007a82826200031a565b5050505050620000b17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000ba60201b60201c565b505050620003e2565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1662000161575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000164565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126200018e575f80fd5b81516001600160401b0380821115620001ab57620001ab6200016a565b604051601f8301601f19908116603f01168101908282118183101715620001d657620001d66200016a565b81604052838152602092508683858801011115620001f2575f80fd5b5f91505b83821015620002155785820183015181830184015290820190620001f6565b5f93810190920192909252949350505050565b5f80604083850312156200023a575f80fd5b82516001600160401b038082111562000251575f80fd5b6200025f868387016200017e565b9350602085015191508082111562000275575f80fd5b5062000284858286016200017e565b9150509250929050565b600181811c90821680620002a357607f821691505b602082108103620002c257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000315575f81815260208120601f850160051c81016020861015620002f05750805b601f850160051c820191505b818110156200031157828155600101620002fc565b5050505b505050565b81516001600160401b038111156200033657620003366200016a565b6200034e816200034784546200028e565b84620002c8565b602080601f83116001811462000384575f84156200036c5750858301515b5f19600386901b1c1916600185901b17855562000311565b5f85815260208120601f198616915b82811015620003b45788860151825594840194600190910190840162000393565b5085821015620003d257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b610ee380620003f05f395ff3fe608060405234801561000f575f80fd5b5060043610610149575f3560e01c806336568abe116100c7578063979005ad1161007d578063a9059cbb11610063578063a9059cbb146102c2578063d547741f146102d5578063dd62ed3e146102e8575f80fd5b8063979005ad146102a8578063a217fddf146102bb575f80fd5b806375b238fc116100ad57806375b238fc1461024157806391d148541461026857806395d89b41146102a0575f80fd5b806336568abe1461021b57806370a082311461022e575f80fd5b80631dd319cb1161011c578063248a9ca311610102578063248a9ca3146101d75780632f2ff15d146101f9578063313ce5671461020c575f80fd5b80631dd319cb146101af57806323b872dd146101c4575f80fd5b806301ffc9a71461014d57806306fdde0314610175578063095ea7b31461018a57806318160ddd1461019d575b5f80fd5b61016061015b366004610cc7565b6102fb565b60405190151581526020015b60405180910390f35b61017d610393565b60405161016c9190610d0d565b610160610198366004610d73565b610423565b6002545b60405190815260200161016c565b6101c26101bd366004610d73565b61043a565b005b6101606101d2366004610d9b565b6104d0565b6101a16101e5366004610dd4565b5f9081526007602052604090206001015490565b6101c2610207366004610deb565b6104f3565b6040516012815260200161016c565b6101c2610229366004610deb565b61051d565b6101a161023c366004610e15565b610569565b6101a17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610160610276366004610deb565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61017d61060c565b6101c26102b6366004610d73565b61061b565b6101a15f81565b6101606102d0366004610d73565b61064f565b6101c26102e3366004610deb565b61065c565b6101a16102f6366004610e2e565b610680565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061038d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103a290610e56565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610e56565b80156104195780601f106103f057610100808354040283529160200191610419565b820191905f5260205f20905b8154815290600101906020018083116103fc57829003601f168201915b5050505050905090565b5f3361043081858561078e565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104648161079b565b8161046e84610569565b10156104c15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104cb83836107a8565b505050565b5f336104dd8582856107e0565b6104e8858585610856565b506001949350505050565b5f8281526007602052604090206001015461050d8161079b565b61051783836108b3565b50505050565b6001600160a01b038116331461055f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cb828261095e565b5f6001600160a01b0382163203610597576001600160a01b0382165f9081526020819052604090205461038d565b6001600160a01b03821633036105c4576001600160a01b0382165f9081526020819052604090205461038d565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104b8565b6060600480546103a290610e56565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106458161079b565b6104cb83836109e3565b5f33610430818585610856565b5f828152600760205260409020600101546106768161079b565b610517838361095e565b5f326001600160a01b03841614806106a05750326001600160a01b038316145b156106d2576001600160a01b038084165f908152600160209081526040808320938616835292905220545b905061038d565b336001600160a01b03841614806106f15750336001600160a01b038316145b15610720576001600160a01b038084165f908152600160209081526040808320938616835292905220546106cb565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104b8565b6104cb8383836001610a17565b6107a58133610b1b565b50565b6001600160a01b0382166107d157604051634b637e8f60e11b81525f60048201526024016104b8565b6107dc825f83610b88565b5050565b5f6107eb8484610680565b90505f1981146105175781811015610848576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104b8565b61051784848484035f610a17565b6001600160a01b03831661087f57604051634b637e8f60e11b81525f60048201526024016104b8565b6001600160a01b0382166108a85760405163ec442f0560e01b81525f60048201526024016104b8565b6104cb838383610b88565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff16610957575f8381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561090f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038d565b505f61038d565b5f8281526007602090815260408083206001600160a01b038516845290915281205460ff1615610957575f8381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038d565b6001600160a01b038216610a0c5760405163ec442f0560e01b81525f60048201526024016104b8565b6107dc5f8383610b88565b6001600160a01b038416610a59576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038316610a9b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016104b8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561051757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b0d91815260200190565b60405180910390a350505050565b5f8281526007602090815260408083206001600160a01b038516845290915290205460ff166107dc576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104b8565b6001600160a01b038316610bb2578060025f828254610ba79190610e8e565b90915550610c3b9050565b6001600160a01b0383165f9081526020819052604090205481811015610c1d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104b8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c5757600280548290039055610c75565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cba91815260200190565b60405180910390a3505050565b5f60208284031215610cd7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610d3857858101830151858201604001528201610d1c565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d6e575f80fd5b919050565b5f8060408385031215610d84575f80fd5b610d8d83610d58565b946020939093013593505050565b5f805f60608486031215610dad575f80fd5b610db684610d58565b9250610dc460208501610d58565b9150604084013590509250925092565b5f60208284031215610de4575f80fd5b5035919050565b5f8060408385031215610dfc575f80fd5b82359150610e0c60208401610d58565b90509250929050565b5f60208284031215610e25575f80fd5b610d0682610d58565b5f8060408385031215610e3f575f80fd5b610e4883610d58565b9150610e0c60208401610d58565b600181811c90821680610e6a57607f821691505b602082108103610e8857634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561038d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220d78cf2dd9ecf4da03679034ab54dbc38a0748a2a50f13ee501925e8df4738b1264736f6c63430008140033", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f31790553480156200003757600080fd5b5060405162001333380380620013338339810160408190526200005a9162000233565b8181818160036200006c83826200032c565b5060046200007b82826200032c565b5050505050620000b27fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533620000bb60201b60201c565b505050620003f8565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16620001645760008381526007602090815260408083206001600160a01b03861684529091529020805460ff191660011790556200011b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000168565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019657600080fd5b81516001600160401b0380821115620001b357620001b36200016e565b604051601f8301601f19908116603f01168101908282118183101715620001de57620001de6200016e565b81604052838152602092508683858801011115620001fb57600080fd5b600091505b838210156200021f578582018301518183018401529082019062000200565b600093810190920192909252949350505050565b600080604083850312156200024757600080fd5b82516001600160401b03808211156200025f57600080fd5b6200026d8683870162000184565b935060208501519150808211156200028457600080fd5b50620002938582860162000184565b9150509250929050565b600181811c90821680620002b257607f821691505b602082108103620002d357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032757600081815260208120601f850160051c81016020861015620003025750805b601f850160051c820191505b8181101562000323578281556001016200030e565b5050505b505050565b81516001600160401b038111156200034857620003486200016e565b62000360816200035984546200029d565b84620002d9565b602080601f8311600181146200039857600084156200037f5750858301515b600019600386901b1c1916600185901b17855562000323565b600085815260208120601f198616915b82811015620003c957888601518255948401946001909101908401620003a8565b5085821015620003e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610f2b80620004086000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017e578063095ea7b31461019357806318160ddd146101a6575b600080fd5b610169610164366004610cf7565b610307565b60405190151581526020015b60405180910390f35b6101866103a0565b6040516101759190610d40565b6101696101a1366004610daa565b610432565b6002545b604051908152602001610175565b6101cb6101c6366004610daa565b61044a565b005b6101696101db366004610dd4565b6104e0565b6101aa6101ee366004610e10565b60009081526007602052604090206001015490565b6101cb610211366004610e29565b610504565b60405160128152602001610175565b6101cb610233366004610e29565b61052f565b6101aa610246366004610e55565b61057b565b6101aa7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610e29565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610186610621565b6101cb6102c1366004610daa565b610630565b6101aa600081565b6101696102dc366004610daa565b610664565b6101cb6102ef366004610e29565b610672565b6101aa610302366004610e70565b610697565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e9a565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e9a565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856107a8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610474816107b5565b8161047e8461057b565b10156104d15760405162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742062616c616e63652e000000000000000000000060448201526064015b60405180910390fd5b6104db83836107c2565b505050565b6000336104ee8582856107fc565b6104f9858585610875565b506001949350505050565b60008281526007602052604090206001015461051f816107b5565b61052983836108d4565b50505050565b6001600160a01b0381163314610571576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104db8282610982565b60006001600160a01b03821632036105ab576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105d9576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260206004820152601f60248201527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650060448201526064016104c8565b6060600480546103af90610e9a565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561065a816107b5565b6104db8383610a09565b600033610440818585610875565b60008281526007602052604090206001015461068d816107b5565b6105298383610982565b6000326001600160a01b03841614806106b85750326001600160a01b038316145b156106eb576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b038416148061070a5750336001600160a01b038316145b1561073a576001600160a01b038084166000908152600160209081526040808320938616835292905220546106e4565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016104c8565b6104db8383836001610a3f565b6107bf8133610b46565b50565b6001600160a01b0382166107ec57604051634b637e8f60e11b8152600060048201526024016104c8565b6107f882600083610bb4565b5050565b60006108088484610697565b905060001981146105295781811015610866576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016104c8565b61052984848484036000610a3f565b6001600160a01b03831661089f57604051634b637e8f60e11b8152600060048201526024016104c8565b6001600160a01b0382166108c95760405163ec442f0560e01b8152600060048201526024016104c8565b6104db838383610bb4565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff1661097a5760008381526007602090815260408083206001600160a01b03861684529091529020805460ff191660011790556109323390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff161561097a5760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b038216610a335760405163ec442f0560e01b8152600060048201526024016104c8565b6107f860008383610bb4565b6001600160a01b038416610a82576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016104c8565b6001600160a01b038316610ac5576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016104c8565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561052957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b3891815260200190565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107f8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016104c8565b6001600160a01b038316610bdf578060026000828254610bd49190610ed4565b90915550610c6a9050565b6001600160a01b03831660009081526020819052604090205481811015610c4b576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016104c8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610c8657600280548290039055610ca5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cea91815260200190565b60405180910390a3505050565b600060208284031215610d0957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d3957600080fd5b9392505050565b600060208083528351808285015260005b81811015610d6d57858101830151858201604001528201610d51565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610da557600080fd5b919050565b60008060408385031215610dbd57600080fd5b610dc683610d8e565b946020939093013593505050565b600080600060608486031215610de957600080fd5b610df284610d8e565b9250610e0060208501610d8e565b9150604084013590509250925092565b600060208284031215610e2257600080fd5b5035919050565b60008060408385031215610e3c57600080fd5b82359150610e4c60208401610d8e565b90509250929050565b600060208284031215610e6757600080fd5b610d3982610d8e565b60008060408385031215610e8357600080fd5b610e8c83610d8e565b9150610e4c60208401610d8e565b600181811c90821680610eae57607f821691505b602082108103610ece57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561039a57634e487b7160e01b600052601160045260246000fdfea264697066735822122073c661078daaaa94cd6d2de1a875ac8163912d81e7f2083db0bfdaf8c67f3fe564736f6c63430008140033", } // WrappedERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/package.json b/contracts/package.json index ebe6d77049..3d6c7bd2c3 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -13,7 +13,7 @@ "@nomicfoundation/hardhat-toolbox": "~2.0.0", "@openzeppelin/hardhat-upgrades": "^1.21.0", "@solidstate/hardhat-bytecode-exporter": "^1.1.1", - "hardhat": "~2.12.4", + "hardhat": "~2.19.3", "hardhat-abi-exporter": "^2.10.1", "hardhat-deploy": "0.11.42", "node-docker-api": "^1.1.22", diff --git a/contracts/src/common/ConstantSupplyERC20.sol b/contracts/src/common/ConstantSupplyERC20.sol index 6d0bf7548e..0329165268 100644 --- a/contracts/src/common/ConstantSupplyERC20.sol +++ b/contracts/src/common/ConstantSupplyERC20.sol @@ -1,11 +1,13 @@ // SPDX-License-Identifier: Apache 2 pragma solidity >=0.7.0 <0.9.0; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -contract ConstantSupplyERC20 is ERC20 { - constructor(string memory name, string memory symbol, uint256 initialSupply) ERC20(name, symbol) { +contract ConstantSupplyERC20 is ERC20 { + constructor(string memory name, string memory symbol, uint256 initialSupply) + ERC20(name, symbol) + { _mint(msg.sender, initialSupply); } } diff --git a/contracts/test/bridge-test.ts b/contracts/test/bridge-test.ts index acb1ebb126..31cc2d930f 100644 --- a/contracts/test/bridge-test.ts +++ b/contracts/test/bridge-test.ts @@ -32,10 +32,20 @@ describe("Bridge", function () { const L1Bridge = await hre.ethers.getContractFactory("ObscuroBridge"); const L2Bridge = await hre.ethers.getContractFactory("EthereumBridge"); - const ERC20 = await hre.ethers.getContractFactory("ERC20"); + const [owner] = await ethers.getSigners(); + + const ERC20 = await hre.ethers.getContractFactory("ConstantSupplyERC20", owner); + + console.log(`Deploying erc20`); + try { + const erc20 = await ERC20.deploy("XXX", "XXX", 100000); + erc20address = erc20.address; + } catch(err) { + console.error(err); + } + - const erc20 = await ERC20.deploy("XXX", "XXX"); - erc20address = erc20.address; + console.log(`Deployed erc20`); busL1 = await MessageBus.deploy(); busL2 = await MessageBus.deploy(); From 2214997eb658bd46b88710cd95d10aba0133312b Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Thu, 8 Feb 2024 14:16:39 +0200 Subject: [PATCH 4/6] Dump progress. --- .../ManagementContract/ManagementContract.go | 2 +- contracts/src/management/ManagementContract.sol | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 8cc256dcf3..3aaff4093c 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -54,7 +54,7 @@ type StructsMetaRollup 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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"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\":\"crossChainData\",\"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\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"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\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"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\":\"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\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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: "0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612cd8806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638129fc1c116100cd578063a1a227fa11610081578063bbd79e1511610066578063bbd79e151461035d578063e34fbfc814610370578063f2fde38b1461038357600080fd5b8063a1a227fa1461033a578063a52f433c1461034d57600080fd5b80638da5cb5b116100b25780638da5cb5b146102f65780638fa0d0531461030757806398077e861461031a57600080fd5b80638129fc1c146102535780638236a7ba1461025b57600080fd5b8063440c953b116101245780636a30d26c116101095780636a30d26c1461023b578063715018a614610243578063728109961461024b57600080fd5b8063440c953b1461021157806359a900711461022857600080fd5b806303e72e4814610156578063324ff8661461016b5780633e60a22f1461018957806343348b2f146101d5575b600080fd5b610169610164366004611296565b610396565b005b61017361049e565b6040516101809190611338565b60405180910390f35b6101bd61019736600461139a565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610180565b6102016101e33660046113d7565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610180565b61021a60075481565b604051908152602001610180565b610169610236366004611444565b610577565b6101736105fa565b6101696106ca565b6101696106de565b61016961075e565b6102c36102693660046114eb565b6040805160608082018352600080835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610180565b6000546001600160a01b03166101bd565b610169610315366004611504565b61091e565b61032d6103283660046114eb565b6109b2565b604051610180919061158b565b6009546101bd906001600160a01b031681565b600654610100900460ff16610201565b61016961036b36600461159e565b610a5e565b61016961037e366004611664565b610bbc565b6101696103913660046113d7565b610bdb565b61039e610c32565b60006001600160a01b03166005836040516103b991906116a6565b908152604051908190036020019020546001600160a01b03160361041557600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610413838261174a565b505b8060058360405161042691906116a6565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590610492908490849061180a565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561056e5783829060005260206000200180546104e1906116c2565b80601f016020809104026020016040519081016040528092919081815260200182805461050d906116c2565b801561055a5780601f1061052f5761010080835404028352916020019161055a565b820191906000526020600020905b81548152906001019060200180831161053d57829003601f168201915b5050505050815260200190600101906104c2565b50505050905090565b60065460ff161561058757600080fd5b60068054600160ff1991821681179092556001600160a01b03881660009081526002602052604081208054909216831790915560038054928301815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016105f1848261174a565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561056e57838290600052602060002001805461063d906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610669906116c2565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b50505050508152602001906001019061061e565b6106d2610c32565b6106dc6000610c78565b565b6106e6610c32565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107a95750825b905060008267ffffffffffffffff1660011480156107c65750303b155b9050811580156107d4575080155b1561080b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561083f57845468ff00000000000000001916680100000000000000001785555b6000600755604051610850906111d0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a1831561091757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6002600061093260408701602088016113d7565b6001600160a01b0316815260208101919091526040016000205460ff166109a05760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b6109a984610cd5565b61075881610d0a565b600481815481106109c257600080fd5b9060005260206000200160009150905080546109dd906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a09906116c2565b8015610a565780601f10610a2b57610100808354040283529160200191610a56565b820191906000526020600020905b815481529060010190602001808311610a3957829003601f168201915b505050505081565b6001600160a01b03861660009081526002602052604090205460ff1680610a8457600080fd5b8115610b54576000610aba88888688604051602001610aa69493929190611835565b604051602081830303815290604052610dc4565b90506000610ac88288610dff565b9050886001600160a01b0316816001600160a01b031614610b515760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d6174636800000000000000000000000000000000000000006064820152608401610997565b50505b6001600160a01b0386166000908152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01610bb2848261174a565b5050505050505050565b336000908152600160205260409020610bd6828483611891565b505050565b610be3610c32565b6001600160a01b038116610c26576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610997565b610c2f81610c78565b50565b6000546001600160a01b031633146106dc576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610997565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803560009081526008602052604090208190610cf18282611951565b505060075460408201351115610c2f5760400135600755565b6000610d16828061199d565b9050905060005b81811015610bd6576009546001600160a01b0316639730886d610d40858061199d565b84818110610d5057610d506119e7565b9050602002810190610d6291906119fd565b60016040518363ffffffff1660e01b8152600401610d81929190611aac565b600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b5050505080610dbd90611b63565b9050610d1d565b6000610dd08251610e29565b82604051602001610de2929190611b8a565b604051602081830303815290604052805190602001209050919050565b600080600080610e0f8686610ec9565b925092509250610e1f8282610f16565b5090949350505050565b60606000610e368361101e565b600101905060008167ffffffffffffffff811115610e5657610e566111de565b6040519080825280601f01601f191660200182016040528015610e80576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e8a57509392505050565b60008060008351604103610f035760208401516040850151606086015160001a610ef588828585611101565b955095509550505050610f0f565b50508151600091506002905b9250925092565b6000826003811115610f2a57610f2a611be5565b03610f33575050565b6001826003811115610f4757610f47611be5565b03610f7e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f9257610f92611be5565b03610fcc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b6003826003811115610fe057610fe0611be5565b0361101a576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611067577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611093576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106110b157662386f26fc10000830492506010015b6305f5e10083106110c9576305f5e100830492506008015b61271083106110dd57612710830492506004015b606483106110ef576064830492506002015b600a83106110fb576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561113c57506000915060039050826111c6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611190573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111bc575060009250600191508290506111c6565b9250600091508190505b9450945094915050565b6110a78062001bfc83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120557600080fd5b813567ffffffffffffffff80821115611220576112206111de565b604051601f8301601f19908116603f01168101908282118183101715611248576112486111de565b8160405283815286602085880101111561126157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610c2f57600080fd5b600080604083850312156112a957600080fd5b823567ffffffffffffffff8111156112c057600080fd5b6112cc858286016111f4565b92505060208301356112dd81611281565b809150509250929050565b60005b838110156113035781810151838201526020016112eb565b50506000910152565b600081518084526113248160208601602086016112e8565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561138d57603f1988860301845261137b85835161130c565b9450928501929085019060010161135f565b5092979650505050505050565b6000602082840312156113ac57600080fd5b813567ffffffffffffffff8111156113c357600080fd5b6113cf848285016111f4565b949350505050565b6000602082840312156113e957600080fd5b81356113f481611281565b9392505050565b60008083601f84011261140d57600080fd5b50813567ffffffffffffffff81111561142557600080fd5b60208301915083602082850101111561143d57600080fd5b9250929050565b6000806000806000806080878903121561145d57600080fd5b863561146881611281565b9550602087013567ffffffffffffffff8082111561148557600080fd5b6114918a838b016113fb565b909750955060408901359150808211156114aa57600080fd5b6114b68a838b016111f4565b945060608901359150808211156114cc57600080fd5b506114d989828a016113fb565b979a9699509497509295939492505050565b6000602082840312156114fd57600080fd5b5035919050565b60008060008084860360a081121561151b57600080fd5b606081121561152957600080fd5b50849350606085013567ffffffffffffffff8082111561154857600080fd5b611554888389016113fb565b9095509350608087013591508082111561156d57600080fd5b5085016020818803121561158057600080fd5b939692955090935050565b6020815260006113f4602083018461130c565b60008060008060008060c087890312156115b757600080fd5b86356115c281611281565b955060208701356115d281611281565b9450604087013567ffffffffffffffff808211156115ef57600080fd5b6115fb8a838b016111f4565b9550606089013591508082111561161157600080fd5b61161d8a838b016111f4565b9450608089013591508082111561163357600080fd5b5061164089828a016111f4565b92505060a0870135801515811461165657600080fd5b809150509295509295509295565b6000806020838503121561167757600080fd5b823567ffffffffffffffff81111561168e57600080fd5b61169a858286016113fb565b90969095509350505050565b600082516116b88184602087016112e8565b9190910192915050565b600181811c908216806116d657607f821691505b6020821081036116f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610bd657600081815260208120601f850160051c810160208610156117235750805b601f850160051c820191505b818110156117425782815560010161172f565b505050505050565b815167ffffffffffffffff811115611764576117646111de565b6117788161177284546116c2565b846116fc565b602080601f8311600181146117ad57600084156117955750858301515b600019600386901b1c1916600185901b178555611742565b600085815260208120601f198616915b828110156117dc578886015182559484019460019091019084016117bd565b50858210156117fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061181d604083018561130c565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835161186c8160288501602088016112e8565b8351908301906118838160288401602088016112e8565b016028019695505050505050565b67ffffffffffffffff8311156118a9576118a96111de565b6118bd836118b783546116c2565b836116fc565b6000601f8411600181146118f157600085156118d95750838201355b600019600387901b1c1916600186901b178355610917565b600083815260209020601f19861690835b828110156119225786850135825560209485019460019092019101611902565b508682101561193f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013561196781611281565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e198436030181126119b457600080fd5b83018035915067ffffffffffffffff8211156119cf57600080fd5b6020019150600581901b360382131561143d57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be198336030181126116b857600080fd5b803563ffffffff81168114611a2757600080fd5b919050565b6000808335601e19843603018112611a4357600080fd5b830160208101925035905067ffffffffffffffff811115611a6357600080fd5b80360382131561143d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff81168114611a2757600080fd5b6040815260008335611abd81611281565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611ae757600080fd5b606084015250611af960408501611a13565b63ffffffff166080830152611b1060608501611a13565b63ffffffff1660a0830152611b286080850185611a2c565b60c080850152611b3d61010085018284611a72565b915050611b4c60a08601611a9b565b60ff1660e084015260209092019290925292915050565b600060018201611b8357634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611bc281601a8501602088016112e8565b835190830190611bd981601a8401602088016112e8565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a2646970667358221220f9990321c02b27ff6d9e9764a4533e0649409c086361d42137fc2d2df1d7363064736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612f5a8061009f6000396000f3fe60806040523480156200001157600080fd5b50600436106200016c5760003560e01c80638129fc1c11620000dd578063a1a227fa116200008b578063bbd79e15116200006e578063bbd79e1514620003c6578063e34fbfc814620003dd578063f2fde38b14620003f457600080fd5b8063a1a227fa14620003a1578063a52f433c14620003b557600080fd5b80638da5cb5b11620000c05780638da5cb5b14620003335780638fa0d053146200036457806398077e86146200037b57600080fd5b80638129fc1c146200028a5780638236a7ba146200029457600080fd5b8063440c953b116200013b5780636a30d26c116200011e5780636a30d26c146200026c578063715018a6146200027657806372810996146200028057600080fd5b8063440c953b146200023c57806359a90071146200025557600080fd5b806303e72e481462000171578063324ff866146200018a5780633e60a22f14620001ac57806343348b2f14620001fc575b600080fd5b620001886200018236600462001492565b6200040b565b005b620001946200051e565b604051620001a391906200153e565b60405180910390f35b620001e3620001bd366004620015a4565b80516020818301810180516004825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001a3565b6200022b6200020d366004620015e5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040519015158152602001620001a3565b6200024660065481565b604051908152602001620001a3565b620001886200026636600462001658565b62000601565b6200019462000687565b6200018862000761565b6200018862000779565b62000188620007fd565b620002ff620002a53660046200170b565b6040805160608082018352600080835260208084018290529284018190528481526007835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001620001a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316620001e3565b620001886200037536600462001725565b620009d1565b620003926200038c3660046200170b565b62000a6c565b604051620001a39190620017b3565b600854620001e3906001600160a01b031681565b600554610100900460ff166200022b565b62000188620003d7366004620017c8565b62000b21565b62000188620003ee3660046200189d565b62000c89565b6200018862000405366004620015e5565b62000caa565b6200041562000d07565b60006001600160a01b0316600483604051620004329190620018e3565b908152604051908190036020019020546001600160a01b0316036200049157600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016200048f83826200198f565b505b80600483604051620004a49190620018e3565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb59062000512908490849062001a5c565b60405180910390a15050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620005649062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620005929062001901565b8015620005e35780601f10620005b757610100808354040283529160200191620005e3565b820191906000526020600020905b815481529060010190602001808311620005c557829003601f168201915b50505050508152602001906001019062000542565b50505050905090565b60055460ff16156200061257600080fd5b60058054600160ff1991821681179092556001600160a01b03881660009081526020839052604081208054909216831790915560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace016200067e84826200198f565b50505050505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620006cd9062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620006fb9062001901565b80156200074c5780601f1062000720576101008083540402835291602001916200074c565b820191906000526020600020905b8154815290600101906020018083116200072e57829003601f168201915b505050505081526020019060010190620006ab565b6200076b62000d07565b62000777600062000d7e565b565b6200078362000d07565b6008546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620008495750825b905060008267ffffffffffffffff166001148015620008675750303b155b90508115801562000876575080155b15620008ae576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620008e357845468ff00000000000000001916680100000000000000001785555b620008ee3362000dfc565b60006006556040516200090190620013c3565b604051809103906000f0801580156200091e573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18315620009ca57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60016000620009e76040870160208801620015e5565b6001600160a01b0316815260208101919091526040016000205460ff1662000a565760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b62000a618462000e11565b620007f78162000e49565b6003818154811062000a7d57600080fd5b90600052602060002001600091509050805462000a9a9062001901565b80601f016020809104026020016040519081016040528092919081815260200182805462000ac89062001901565b801562000b195780601f1062000aed5761010080835404028352916020019162000b19565b820191906000526020600020905b81548152906001019060200180831162000afb57829003601f168201915b505050505081565b6001600160a01b03861660009081526001602052604090205460ff168062000b4857600080fd5b811562000c2157600062000b838888868860405160200162000b6e949392919062001a89565b60405160208183030381529060405262000f14565b9050600062000b93828862000f53565b9050886001600160a01b0316816001600160a01b03161462000c1e5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000a4d565b50505b6001600160a01b03861660009081526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0162000c7f84826200198f565b5050505050505050565b33600090815260208190526040902062000ca582848362001ae9565b505050565b62000cb462000d07565b6001600160a01b03811662000cf9576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000a4d565b62000d048162000d7e565b50565b3362000d3a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000777576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000a4d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b62000e0662000f81565b62000d048162000fe9565b80356000908152600760205260409020819062000e2f828262001bb6565b50506006546040820135111562000d045760400135600655565b600062000e57828062001c04565b9050905060005b8181101562000ca5576008546001600160a01b0316639730886d62000e84858062001c04565b8481811062000e975762000e9762001c51565b905060200281019062000eab919062001c67565b60016040518363ffffffff1660e01b815260040162000ecc92919062001d1c565b600060405180830381600087803b15801562000ee757600080fd5b505af115801562000efc573d6000803e3d6000fd5b505050508062000f0c9062001de0565b905062000e5e565b600062000f22825162000ff3565b8260405160200162000f3692919062001e08565b604051602081830303815290604052805190602001209050919050565b60008060008062000f6586866200109a565b92509250925062000f778282620010eb565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000777576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000cb462000f81565b60606000620010028362001205565b600101905060008167ffffffffffffffff811115620010255762001025620013d1565b6040519080825280601f01601f19166020018201604052801562001050576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200105a57509392505050565b60008060008351604103620010d85760208401516040850151606086015160001a620010c988828585620012ef565b955095509550505050620010e4565b50508151600091506002905b9250925092565b600082600381111562001102576200110262001e67565b036200110c575050565b600182600381111562001123576200112362001e67565b036200115b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562001172576200117262001e67565b03620011ae576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b6003826003811115620011c557620011c562001e67565b0362001201576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200124f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200127c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200129b57662386f26fc10000830492506010015b6305f5e1008310620012b4576305f5e100830492506008015b6127108310620012c957612710830492506004015b60648310620012dc576064830492506002015b600a8310620012e9576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156200132c5750600091506003905082620013b9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001381573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620013af57506000925060019150829050620013b9565b9250600091508190505b9450945094915050565b6110a78062001e7e83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620013f957600080fd5b813567ffffffffffffffff80821115620014175762001417620013d1565b604051601f8301601f19908116603f01168101908282118183101715620014425762001442620013d1565b816040528381528660208588010111156200145c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b038116811462000d0457600080fd5b60008060408385031215620014a657600080fd5b823567ffffffffffffffff811115620014be57600080fd5b620014cc85828601620013e7565b9250506020830135620014df816200147c565b809150509250929050565b60005b8381101562001507578181015183820152602001620014ed565b50506000910152565b600081518084526200152a816020860160208601620014ea565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200159757603f198886030184526200158485835162001510565b9450928501929085019060010162001565565b5092979650505050505050565b600060208284031215620015b757600080fd5b813567ffffffffffffffff811115620015cf57600080fd5b620015dd84828501620013e7565b949350505050565b600060208284031215620015f857600080fd5b813562001605816200147c565b9392505050565b60008083601f8401126200161f57600080fd5b50813567ffffffffffffffff8111156200163857600080fd5b6020830191508360208285010111156200165157600080fd5b9250929050565b600080600080600080608087890312156200167257600080fd5b86356200167f816200147c565b9550602087013567ffffffffffffffff808211156200169d57600080fd5b620016ab8a838b016200160c565b90975095506040890135915080821115620016c557600080fd5b620016d38a838b01620013e7565b94506060890135915080821115620016ea57600080fd5b50620016f989828a016200160c565b979a9699509497509295939492505050565b6000602082840312156200171e57600080fd5b5035919050565b60008060008084860360a08112156200173d57600080fd5b60608112156200174c57600080fd5b50849350606085013567ffffffffffffffff808211156200176c57600080fd5b6200177a888389016200160c565b909550935060808701359150808211156200179457600080fd5b50850160208188031215620017a857600080fd5b939692955090935050565b60208152600062001605602083018462001510565b60008060008060008060c08789031215620017e257600080fd5b8635620017ef816200147c565b9550602087013562001801816200147c565b9450604087013567ffffffffffffffff808211156200181f57600080fd5b6200182d8a838b01620013e7565b955060608901359150808211156200184457600080fd5b620018528a838b01620013e7565b945060808901359150808211156200186957600080fd5b506200187889828a01620013e7565b92505060a087013580151581146200188f57600080fd5b809150509295509295509295565b60008060208385031215620018b157600080fd5b823567ffffffffffffffff811115620018c957600080fd5b620018d7858286016200160c565b90969095509350505050565b60008251620018f7818460208701620014ea565b9190910192915050565b600181811c908216806200191657607f821691505b6020821081036200193757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ca557600081815260208120601f850160051c81016020861015620019665750805b601f850160051c820191505b81811015620019875782815560010162001972565b505050505050565b815167ffffffffffffffff811115620019ac57620019ac620013d1565b620019c481620019bd845462001901565b846200193d565b602080601f831160018114620019fc5760008415620019e35750858301515b600019600386901b1c1916600185901b17855562001987565b600085815260208120601f198616915b8281101562001a2d5788860151825594840194600190910190840162001a0c565b508582101562001a4c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062001a71604083018562001510565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835162001ac2816028850160208801620014ea565b83519083019062001adb816028840160208801620014ea565b016028019695505050505050565b67ffffffffffffffff83111562001b045762001b04620013d1565b62001b1c8362001b15835462001901565b836200193d565b6000601f84116001811462001b53576000851562001b3a5750838201355b600019600387901b1c1916600186901b178355620009ca565b600083815260209020601f19861690835b8281101562001b86578685013582556020948501946001909201910162001b64565b508682101562001ba45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013562001bce816200147c565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e1984360301811262001c1c57600080fd5b83018035915067ffffffffffffffff82111562001c3857600080fd5b6020019150600581901b36038213156200165157600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be19833603018112620018f757600080fd5b803563ffffffff8116811462001c9357600080fd5b919050565b6000808335601e1984360301811262001cb057600080fd5b830160208101925035905067ffffffffffffffff81111562001cd157600080fd5b8036038213156200165157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811462001c9357600080fd5b604081526000833562001d2f816200147c565b6001600160a01b03166040830152602084013567ffffffffffffffff811680821462001d5a57600080fd5b60608401525062001d6e6040850162001c7e565b63ffffffff16608083015262001d876060850162001c7e565b63ffffffff1660a083015262001da1608085018562001c98565b60c08085015262001db86101008501828462001ce1565b91505062001dc960a0860162001d0a565b60ff1660e084015260209092019290925292915050565b60006001820162001e0157634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835162001e4281601a850160208801620014ea565b83519083019062001e5b81601a840160208801620014ea565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a26469706673582212202a6230abae8a4863d19d5102e9df3e0677fa0631267f92d3dfcb257cfdac41f764736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index 5eb800650a..c7256eec7d 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -2,21 +2,21 @@ pragma solidity >=0.7.0 <0.9.0; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import "./Structs.sol"; import * as MessageBus from "../messaging/MessageBus.sol"; -contract ManagementContract is Ownable, Initializable { +contract ManagementContract is Initializable, OwnableUpgradeable { using MessageHashUtils for bytes32; using MessageHashUtils for bytes; - constructor() Ownable(msg.sender) { - // _disableInitializers(); //todo @siliev - figure out why the solidity compiler cant find this. Perhaps OZ needs a version upgrade? + constructor() { + // _disableInitializers(); + _transferOwnership(msg.sender); } event LogManagementContractCreated(address messageBusAddress); @@ -46,6 +46,7 @@ contract ManagementContract is Ownable, Initializable { //The messageBus where messages can be sent to Obscuro MessageBus.IMessageBus public messageBus; function initialize() public initializer { + __Ownable_init(msg.sender); lastBatchSeqNo = 0; messageBus = new MessageBus.MessageBus(); emit LogManagementContractCreated(address(messageBus)); From 1c8f91d00cfe865065d61de5fbae1663ec294dda Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Fri, 9 Feb 2024 21:27:35 +0200 Subject: [PATCH 5/6] Fixed recovery id for ECDSA signatures in secret generation. --- .../ManagementContract/ManagementContract.go | 2 +- .../src/management/ManagementContract.sol | 3 +- go/ethadapter/l1_transaction.go | 17 ++++++---- integration/simulation/network/geth_utils.go | 34 +++++++++++++++++++ .../smartcontract/smartcontracts_test.go | 19 +++++++++++ 5 files changed, 66 insertions(+), 9 deletions(-) diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 3aaff4093c..523a7ff848 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -54,7 +54,7 @@ type StructsMetaRollup 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\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"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\":\"crossChainData\",\"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\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"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\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"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\":\"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\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612f5a8061009f6000396000f3fe60806040523480156200001157600080fd5b50600436106200016c5760003560e01c80638129fc1c11620000dd578063a1a227fa116200008b578063bbd79e15116200006e578063bbd79e1514620003c6578063e34fbfc814620003dd578063f2fde38b14620003f457600080fd5b8063a1a227fa14620003a1578063a52f433c14620003b557600080fd5b80638da5cb5b11620000c05780638da5cb5b14620003335780638fa0d053146200036457806398077e86146200037b57600080fd5b80638129fc1c146200028a5780638236a7ba146200029457600080fd5b8063440c953b116200013b5780636a30d26c116200011e5780636a30d26c146200026c578063715018a6146200027657806372810996146200028057600080fd5b8063440c953b146200023c57806359a90071146200025557600080fd5b806303e72e481462000171578063324ff866146200018a5780633e60a22f14620001ac57806343348b2f14620001fc575b600080fd5b620001886200018236600462001492565b6200040b565b005b620001946200051e565b604051620001a391906200153e565b60405180910390f35b620001e3620001bd366004620015a4565b80516020818301810180516004825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001a3565b6200022b6200020d366004620015e5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040519015158152602001620001a3565b6200024660065481565b604051908152602001620001a3565b620001886200026636600462001658565b62000601565b6200019462000687565b6200018862000761565b6200018862000779565b62000188620007fd565b620002ff620002a53660046200170b565b6040805160608082018352600080835260208084018290529284018190528481526007835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001620001a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316620001e3565b620001886200037536600462001725565b620009d1565b620003926200038c3660046200170b565b62000a6c565b604051620001a39190620017b3565b600854620001e3906001600160a01b031681565b600554610100900460ff166200022b565b62000188620003d7366004620017c8565b62000b21565b62000188620003ee3660046200189d565b62000c89565b6200018862000405366004620015e5565b62000caa565b6200041562000d07565b60006001600160a01b0316600483604051620004329190620018e3565b908152604051908190036020019020546001600160a01b0316036200049157600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016200048f83826200198f565b505b80600483604051620004a49190620018e3565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb59062000512908490849062001a5c565b60405180910390a15050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620005649062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620005929062001901565b8015620005e35780601f10620005b757610100808354040283529160200191620005e3565b820191906000526020600020905b815481529060010190602001808311620005c557829003601f168201915b50505050508152602001906001019062000542565b50505050905090565b60055460ff16156200061257600080fd5b60058054600160ff1991821681179092556001600160a01b03881660009081526020839052604081208054909216831790915560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace016200067e84826200198f565b50505050505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620006cd9062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620006fb9062001901565b80156200074c5780601f1062000720576101008083540402835291602001916200074c565b820191906000526020600020905b8154815290600101906020018083116200072e57829003601f168201915b505050505081526020019060010190620006ab565b6200076b62000d07565b62000777600062000d7e565b565b6200078362000d07565b6008546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620008495750825b905060008267ffffffffffffffff166001148015620008675750303b155b90508115801562000876575080155b15620008ae576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620008e357845468ff00000000000000001916680100000000000000001785555b620008ee3362000dfc565b60006006556040516200090190620013c3565b604051809103906000f0801580156200091e573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18315620009ca57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60016000620009e76040870160208801620015e5565b6001600160a01b0316815260208101919091526040016000205460ff1662000a565760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b62000a618462000e11565b620007f78162000e49565b6003818154811062000a7d57600080fd5b90600052602060002001600091509050805462000a9a9062001901565b80601f016020809104026020016040519081016040528092919081815260200182805462000ac89062001901565b801562000b195780601f1062000aed5761010080835404028352916020019162000b19565b820191906000526020600020905b81548152906001019060200180831162000afb57829003601f168201915b505050505081565b6001600160a01b03861660009081526001602052604090205460ff168062000b4857600080fd5b811562000c2157600062000b838888868860405160200162000b6e949392919062001a89565b60405160208183030381529060405262000f14565b9050600062000b93828862000f53565b9050886001600160a01b0316816001600160a01b03161462000c1e5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000a4d565b50505b6001600160a01b03861660009081526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0162000c7f84826200198f565b5050505050505050565b33600090815260208190526040902062000ca582848362001ae9565b505050565b62000cb462000d07565b6001600160a01b03811662000cf9576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000a4d565b62000d048162000d7e565b50565b3362000d3a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000777576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000a4d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b62000e0662000f81565b62000d048162000fe9565b80356000908152600760205260409020819062000e2f828262001bb6565b50506006546040820135111562000d045760400135600655565b600062000e57828062001c04565b9050905060005b8181101562000ca5576008546001600160a01b0316639730886d62000e84858062001c04565b8481811062000e975762000e9762001c51565b905060200281019062000eab919062001c67565b60016040518363ffffffff1660e01b815260040162000ecc92919062001d1c565b600060405180830381600087803b15801562000ee757600080fd5b505af115801562000efc573d6000803e3d6000fd5b505050508062000f0c9062001de0565b905062000e5e565b600062000f22825162000ff3565b8260405160200162000f3692919062001e08565b604051602081830303815290604052805190602001209050919050565b60008060008062000f6586866200109a565b92509250925062000f778282620010eb565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000777576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000cb462000f81565b60606000620010028362001205565b600101905060008167ffffffffffffffff811115620010255762001025620013d1565b6040519080825280601f01601f19166020018201604052801562001050576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200105a57509392505050565b60008060008351604103620010d85760208401516040850151606086015160001a620010c988828585620012ef565b955095509550505050620010e4565b50508151600091506002905b9250925092565b600082600381111562001102576200110262001e67565b036200110c575050565b600182600381111562001123576200112362001e67565b036200115b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562001172576200117262001e67565b03620011ae576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b6003826003811115620011c557620011c562001e67565b0362001201576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200124f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200127c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200129b57662386f26fc10000830492506010015b6305f5e1008310620012b4576305f5e100830492506008015b6127108310620012c957612710830492506004015b60648310620012dc576064830492506002015b600a8310620012e9576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156200132c5750600091506003905082620013b9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001381573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620013af57506000925060019150829050620013b9565b9250600091508190505b9450945094915050565b6110a78062001e7e83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620013f957600080fd5b813567ffffffffffffffff80821115620014175762001417620013d1565b604051601f8301601f19908116603f01168101908282118183101715620014425762001442620013d1565b816040528381528660208588010111156200145c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b038116811462000d0457600080fd5b60008060408385031215620014a657600080fd5b823567ffffffffffffffff811115620014be57600080fd5b620014cc85828601620013e7565b9250506020830135620014df816200147c565b809150509250929050565b60005b8381101562001507578181015183820152602001620014ed565b50506000910152565b600081518084526200152a816020860160208601620014ea565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200159757603f198886030184526200158485835162001510565b9450928501929085019060010162001565565b5092979650505050505050565b600060208284031215620015b757600080fd5b813567ffffffffffffffff811115620015cf57600080fd5b620015dd84828501620013e7565b949350505050565b600060208284031215620015f857600080fd5b813562001605816200147c565b9392505050565b60008083601f8401126200161f57600080fd5b50813567ffffffffffffffff8111156200163857600080fd5b6020830191508360208285010111156200165157600080fd5b9250929050565b600080600080600080608087890312156200167257600080fd5b86356200167f816200147c565b9550602087013567ffffffffffffffff808211156200169d57600080fd5b620016ab8a838b016200160c565b90975095506040890135915080821115620016c557600080fd5b620016d38a838b01620013e7565b94506060890135915080821115620016ea57600080fd5b50620016f989828a016200160c565b979a9699509497509295939492505050565b6000602082840312156200171e57600080fd5b5035919050565b60008060008084860360a08112156200173d57600080fd5b60608112156200174c57600080fd5b50849350606085013567ffffffffffffffff808211156200176c57600080fd5b6200177a888389016200160c565b909550935060808701359150808211156200179457600080fd5b50850160208188031215620017a857600080fd5b939692955090935050565b60208152600062001605602083018462001510565b60008060008060008060c08789031215620017e257600080fd5b8635620017ef816200147c565b9550602087013562001801816200147c565b9450604087013567ffffffffffffffff808211156200181f57600080fd5b6200182d8a838b01620013e7565b955060608901359150808211156200184457600080fd5b620018528a838b01620013e7565b945060808901359150808211156200186957600080fd5b506200187889828a01620013e7565b92505060a087013580151581146200188f57600080fd5b809150509295509295509295565b60008060208385031215620018b157600080fd5b823567ffffffffffffffff811115620018c957600080fd5b620018d7858286016200160c565b90969095509350505050565b60008251620018f7818460208701620014ea565b9190910192915050565b600181811c908216806200191657607f821691505b6020821081036200193757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ca557600081815260208120601f850160051c81016020861015620019665750805b601f850160051c820191505b81811015620019875782815560010162001972565b505050505050565b815167ffffffffffffffff811115620019ac57620019ac620013d1565b620019c481620019bd845462001901565b846200193d565b602080601f831160018114620019fc5760008415620019e35750858301515b600019600386901b1c1916600185901b17855562001987565b600085815260208120601f198616915b8281101562001a2d5788860151825594840194600190910190840162001a0c565b508582101562001a4c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062001a71604083018562001510565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835162001ac2816028850160208801620014ea565b83519083019062001adb816028840160208801620014ea565b016028019695505050505050565b67ffffffffffffffff83111562001b045762001b04620013d1565b62001b1c8362001b15835462001901565b836200193d565b6000601f84116001811462001b53576000851562001b3a5750838201355b600019600387901b1c1916600186901b178355620009ca565b600083815260209020601f19861690835b8281101562001b86578685013582556020948501946001909201910162001b64565b508682101562001ba45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013562001bce816200147c565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e1984360301811262001c1c57600080fd5b83018035915067ffffffffffffffff82111562001c3857600080fd5b6020019150600581901b36038213156200165157600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be19833603018112620018f757600080fd5b803563ffffffff8116811462001c9357600080fd5b919050565b6000808335601e1984360301811262001cb057600080fd5b830160208101925035905067ffffffffffffffff81111562001cd157600080fd5b8036038213156200165157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811462001c9357600080fd5b604081526000833562001d2f816200147c565b6001600160a01b03166040830152602084013567ffffffffffffffff811680821462001d5a57600080fd5b60608401525062001d6e6040850162001c7e565b63ffffffff16608083015262001d876060850162001c7e565b63ffffffff1660a083015262001da1608085018562001c98565b60c08085015262001db86101008501828462001ce1565b91505062001dc960a0860162001d0a565b60ff1660e084015260209092019290925292915050565b60006001820162001e0157634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835162001e4281601a850160208801620014ea565b83519083019062001e5b81601a840160208801620014ea565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a26469706673582212202a6230abae8a4863d19d5102e9df3e0677fa0631267f92d3dfcb257cfdac41f764736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612f5a8061009f6000396000f3fe60806040523480156200001157600080fd5b50600436106200016c5760003560e01c80638129fc1c11620000dd578063a1a227fa116200008b578063bbd79e15116200006e578063bbd79e1514620003c6578063e34fbfc814620003dd578063f2fde38b14620003f457600080fd5b8063a1a227fa14620003a1578063a52f433c14620003b557600080fd5b80638da5cb5b11620000c05780638da5cb5b14620003335780638fa0d053146200036457806398077e86146200037b57600080fd5b80638129fc1c146200028a5780638236a7ba146200029457600080fd5b8063440c953b116200013b5780636a30d26c116200011e5780636a30d26c146200026c578063715018a6146200027657806372810996146200028057600080fd5b8063440c953b146200023c57806359a90071146200025557600080fd5b806303e72e481462000171578063324ff866146200018a5780633e60a22f14620001ac57806343348b2f14620001fc575b600080fd5b620001886200018236600462001492565b6200040b565b005b620001946200051e565b604051620001a391906200153e565b60405180910390f35b620001e3620001bd366004620015a4565b80516020818301810180516004825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001a3565b6200022b6200020d366004620015e5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040519015158152602001620001a3565b6200024660065481565b604051908152602001620001a3565b620001886200026636600462001658565b62000601565b6200019462000687565b6200018862000761565b6200018862000779565b62000188620007fd565b620002ff620002a53660046200170b565b6040805160608082018352600080835260208084018290529284018190528481526007835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001620001a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316620001e3565b620001886200037536600462001725565b620009d1565b620003926200038c3660046200170b565b62000a6c565b604051620001a39190620017b3565b600854620001e3906001600160a01b031681565b600554610100900460ff166200022b565b62000188620003d7366004620017c8565b62000b21565b62000188620003ee3660046200189d565b62000c89565b6200018862000405366004620015e5565b62000caa565b6200041562000d07565b60006001600160a01b0316600483604051620004329190620018e3565b908152604051908190036020019020546001600160a01b0316036200049157600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016200048f83826200198f565b505b80600483604051620004a49190620018e3565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb59062000512908490849062001a5c565b60405180910390a15050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620005649062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620005929062001901565b8015620005e35780601f10620005b757610100808354040283529160200191620005e3565b820191906000526020600020905b815481529060010190602001808311620005c557829003601f168201915b50505050508152602001906001019062000542565b50505050905090565b60055460ff16156200061257600080fd5b60058054600160ff1991821681179092556001600160a01b03881660009081526020839052604081208054909216831790915560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace016200067e84826200198f565b50505050505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620006cd9062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620006fb9062001901565b80156200074c5780601f1062000720576101008083540402835291602001916200074c565b820191906000526020600020905b8154815290600101906020018083116200072e57829003601f168201915b505050505081526020019060010190620006ab565b6200076b62000d07565b62000777600062000d7e565b565b6200078362000d07565b6008546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620008495750825b905060008267ffffffffffffffff166001148015620008675750303b155b90508115801562000876575080155b15620008ae576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620008e357845468ff00000000000000001916680100000000000000001785555b620008ee3362000dfc565b60006006556040516200090190620013c3565b604051809103906000f0801580156200091e573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18315620009ca57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60016000620009e76040870160208801620015e5565b6001600160a01b0316815260208101919091526040016000205460ff1662000a565760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b62000a618462000e11565b620007f78162000e49565b6003818154811062000a7d57600080fd5b90600052602060002001600091509050805462000a9a9062001901565b80601f016020809104026020016040519081016040528092919081815260200182805462000ac89062001901565b801562000b195780601f1062000aed5761010080835404028352916020019162000b19565b820191906000526020600020905b81548152906001019060200180831162000afb57829003601f168201915b505050505081565b6001600160a01b03861660009081526001602052604090205460ff168062000b4857600080fd5b811562000c2157600062000b838888868860405160200162000b6e949392919062001a89565b60405160208183030381529060405262000f14565b9050600062000b93828862000f53565b9050886001600160a01b0316816001600160a01b03161462000c1e5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000a4d565b50505b6001600160a01b03861660009081526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0162000c7f84826200198f565b5050505050505050565b33600090815260208190526040902062000ca582848362001ae9565b505050565b62000cb462000d07565b6001600160a01b03811662000cf9576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000a4d565b62000d048162000d7e565b50565b3362000d3a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000777576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000a4d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b62000e0662000f81565b62000d048162000fe9565b80356000908152600760205260409020819062000e2f828262001bb6565b50506006546040820135111562000d045760400135600655565b600062000e57828062001c04565b9050905060005b8181101562000ca5576008546001600160a01b0316639730886d62000e84858062001c04565b8481811062000e975762000e9762001c51565b905060200281019062000eab919062001c67565b60016040518363ffffffff1660e01b815260040162000ecc92919062001d1c565b600060405180830381600087803b15801562000ee757600080fd5b505af115801562000efc573d6000803e3d6000fd5b505050508062000f0c9062001de0565b905062000e5e565b600062000f22825162000ff3565b8260405160200162000f3692919062001e08565b604051602081830303815290604052805190602001209050919050565b60008060008062000f6586866200109a565b92509250925062000f778282620010eb565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000777576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000cb462000f81565b60606000620010028362001205565b600101905060008167ffffffffffffffff811115620010255762001025620013d1565b6040519080825280601f01601f19166020018201604052801562001050576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200105a57509392505050565b60008060008351604103620010d85760208401516040850151606086015160001a620010c988828585620012ef565b955095509550505050620010e4565b50508151600091506002905b9250925092565b600082600381111562001102576200110262001e67565b036200110c575050565b600182600381111562001123576200112362001e67565b036200115b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562001172576200117262001e67565b03620011ae576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b6003826003811115620011c557620011c562001e67565b0362001201576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200124f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200127c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200129b57662386f26fc10000830492506010015b6305f5e1008310620012b4576305f5e100830492506008015b6127108310620012c957612710830492506004015b60648310620012dc576064830492506002015b600a8310620012e9576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156200132c5750600091506003905082620013b9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001381573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620013af57506000925060019150829050620013b9565b9250600091508190505b9450945094915050565b6110a78062001e7e83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620013f957600080fd5b813567ffffffffffffffff80821115620014175762001417620013d1565b604051601f8301601f19908116603f01168101908282118183101715620014425762001442620013d1565b816040528381528660208588010111156200145c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b038116811462000d0457600080fd5b60008060408385031215620014a657600080fd5b823567ffffffffffffffff811115620014be57600080fd5b620014cc85828601620013e7565b9250506020830135620014df816200147c565b809150509250929050565b60005b8381101562001507578181015183820152602001620014ed565b50506000910152565b600081518084526200152a816020860160208601620014ea565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200159757603f198886030184526200158485835162001510565b9450928501929085019060010162001565565b5092979650505050505050565b600060208284031215620015b757600080fd5b813567ffffffffffffffff811115620015cf57600080fd5b620015dd84828501620013e7565b949350505050565b600060208284031215620015f857600080fd5b813562001605816200147c565b9392505050565b60008083601f8401126200161f57600080fd5b50813567ffffffffffffffff8111156200163857600080fd5b6020830191508360208285010111156200165157600080fd5b9250929050565b600080600080600080608087890312156200167257600080fd5b86356200167f816200147c565b9550602087013567ffffffffffffffff808211156200169d57600080fd5b620016ab8a838b016200160c565b90975095506040890135915080821115620016c557600080fd5b620016d38a838b01620013e7565b94506060890135915080821115620016ea57600080fd5b50620016f989828a016200160c565b979a9699509497509295939492505050565b6000602082840312156200171e57600080fd5b5035919050565b60008060008084860360a08112156200173d57600080fd5b60608112156200174c57600080fd5b50849350606085013567ffffffffffffffff808211156200176c57600080fd5b6200177a888389016200160c565b909550935060808701359150808211156200179457600080fd5b50850160208188031215620017a857600080fd5b939692955090935050565b60208152600062001605602083018462001510565b60008060008060008060c08789031215620017e257600080fd5b8635620017ef816200147c565b9550602087013562001801816200147c565b9450604087013567ffffffffffffffff808211156200181f57600080fd5b6200182d8a838b01620013e7565b955060608901359150808211156200184457600080fd5b620018528a838b01620013e7565b945060808901359150808211156200186957600080fd5b506200187889828a01620013e7565b92505060a087013580151581146200188f57600080fd5b809150509295509295509295565b60008060208385031215620018b157600080fd5b823567ffffffffffffffff811115620018c957600080fd5b620018d7858286016200160c565b90969095509350505050565b60008251620018f7818460208701620014ea565b9190910192915050565b600181811c908216806200191657607f821691505b6020821081036200193757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ca557600081815260208120601f850160051c81016020861015620019665750805b601f850160051c820191505b81811015620019875782815560010162001972565b505050505050565b815167ffffffffffffffff811115620019ac57620019ac620013d1565b620019c481620019bd845462001901565b846200193d565b602080601f831160018114620019fc5760008415620019e35750858301515b600019600386901b1c1916600185901b17855562001987565b600085815260208120601f198616915b8281101562001a2d5788860151825594840194600190910190840162001a0c565b508582101562001a4c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062001a71604083018562001510565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835162001ac2816028850160208801620014ea565b83519083019062001adb816028840160208801620014ea565b016028019695505050505050565b67ffffffffffffffff83111562001b045762001b04620013d1565b62001b1c8362001b15835462001901565b836200193d565b6000601f84116001811462001b53576000851562001b3a5750838201355b600019600387901b1c1916600186901b178355620009ca565b600083815260209020601f19861690835b8281101562001b86578685013582556020948501946001909201910162001b64565b508682101562001ba45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013562001bce816200147c565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e1984360301811262001c1c57600080fd5b83018035915067ffffffffffffffff82111562001c3857600080fd5b6020019150600581901b36038213156200165157600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be19833603018112620018f757600080fd5b803563ffffffff8116811462001c9357600080fd5b919050565b6000808335601e1984360301811262001cb057600080fd5b830160208101925035905067ffffffffffffffff81111562001cd157600080fd5b8036038213156200165157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811462001c9357600080fd5b604081526000833562001d2f816200147c565b6001600160a01b03166040830152602084013567ffffffffffffffff811680821462001d5a57600080fd5b60608401525062001d6e6040850162001c7e565b63ffffffff16608083015262001d876060850162001c7e565b63ffffffff1660a083015262001da1608085018562001c98565b60c08085015262001db86101008501828462001ce1565b91505062001dc960a0860162001d0a565b60ff1660e084015260209092019290925292915050565b60006001820162001e0157634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835162001e4281601a850160208801620014ea565b83519083019062001e5b81601a840160208801620014ea565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a264697066735822122031705602ad34c743f470614bc54afa249cab7c14dd6b0483fd74ddd21e5a06a164736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index c7256eec7d..ff0cbc4570 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -118,6 +118,7 @@ contract ManagementContract is Initializable, OwnableUpgradeable { require(isAggAttested); if (verifyAttester) { + // the data must be signed with by the correct private key // signature = f(PubKey, PrivateKey, message) // address = f(signature, message) @@ -126,7 +127,7 @@ contract ManagementContract is Initializable, OwnableUpgradeable { address recoveredAddrSignedCalculated = ECDSA.recover(calculatedHashSigned, attesterSig); require(recoveredAddrSignedCalculated == attesterID, "calculated address and attesterID dont match"); - } + } // mark the requesterID aggregator as an attested aggregator and store its host address attested[requesterID] = true; diff --git a/go/ethadapter/l1_transaction.go b/go/ethadapter/l1_transaction.go index b13d2bf004..61b226deaf 100644 --- a/go/ethadapter/l1_transaction.go +++ b/go/ethadapter/l1_transaction.go @@ -46,17 +46,20 @@ func (l *L1RespondSecretTx) Sign(privateKey *ecdsa.PrivateKey) *L1RespondSecretT data = append(data, l.HostAddress...) data = append(data, string(l.Secret)...) - // form the data - msg := fmt.Sprintf("\x19Ethereum Signed Message:\n%d%s", len(data), string(data)) - // hash the data - hashedData := crypto.Keccak256Hash([]byte(msg)) + ethereumMessageHash := func(data []byte) []byte { + prefix := fmt.Sprintf("\x19Ethereum Signed Message:\n%d", len(data)) + return crypto.Keccak256([]byte(prefix), data) + } + + hashedData := ethereumMessageHash(data) // sign the hash - signedHash, err := crypto.Sign(hashedData.Bytes(), privateKey) + signedHash, err := crypto.Sign(hashedData, privateKey) if err != nil { return nil } - // remove ECDSA recovery id - signedHash = signedHash[:len(signedHash)-1] + + //set recovery id to 27; prevent malleable signatures + signedHash[64] += 27 l.AttesterSig = signedHash return l } diff --git a/integration/simulation/network/geth_utils.go b/integration/simulation/network/geth_utils.go index 42030e02f2..d71b616dc9 100644 --- a/integration/simulation/network/geth_utils.go +++ b/integration/simulation/network/geth_utils.go @@ -177,6 +177,40 @@ func StopEth2Network(clients []ethadapter.EthClient, netw eth2network.Eth2Networ } } +func InitializeContract(workerClient ethadapter.EthClient, w wallet.Wallet, contractAddress common.Address) (*types.Receipt, error) { + ctr, err := ManagementContract.NewManagementContract(contractAddress, workerClient.EthClient()) + if err != nil { + return nil, err + } + + opts, err := bind.NewKeyedTransactorWithChainID(w.PrivateKey(), w.ChainID()) + if err != nil { + return nil, err + } + + tx, err := ctr.Initialize(opts) + if err != nil { + return nil, err + } + w.SetNonce(w.GetNonce()) + + var start time.Time + var receipt *types.Receipt + // todo (@matt) these timings should be driven by the L2 batch times and L1 block times + for start = time.Now(); time.Since(start) < 80*time.Second; time.Sleep(2 * time.Second) { + receipt, err = workerClient.TransactionReceipt(tx.Hash()) + if err == nil && receipt != nil { + if receipt.Status != types.ReceiptStatusSuccessful { + return nil, errors.New("unable to initialize contract") + } + testlog.Logger().Info(fmt.Sprintf("Contract initialized")) + return receipt, nil + } + } + + return receipt, nil +} + // DeployContract returns receipt of deployment // todo (@matt) - this should live somewhere else func DeployContract(workerClient ethadapter.EthClient, w wallet.Wallet, contractBytes []byte) (*types.Receipt, error) { diff --git a/integration/smartcontract/smartcontracts_test.go b/integration/smartcontract/smartcontracts_test.go index 16b99183fc..f3f8519ff5 100644 --- a/integration/smartcontract/smartcontracts_test.go +++ b/integration/smartcontract/smartcontracts_test.go @@ -113,12 +113,31 @@ func TestManagementContract(t *testing.T) { if err != nil { panic(err) } + + nonce, err := client.Nonce(w.Address()) + if err != nil { + t.Error(err) + } + + w.SetNonce(nonce) // deploy the same contract to a new address receipt, err := network.DeployContract(client, w, bytecode) if err != nil { t.Error(err) } + _, err = network.InitializeContract(client, w, receipt.ContractAddress) + if err != nil { + t.Error(err) + } + + nonce, err = client.Nonce(w.Address()) + if err != nil { + t.Error(err) + } + + w.SetNonce(nonce) + // run the test using the new contract, but same wallet test(t, newDebugMgmtContractLib(receipt.ContractAddress, client.EthClient(), From 1dd9db5ac0a3130f1602a20c4f44d1a8472f5c42 Mon Sep 17 00:00:00 2001 From: StefanIliev545 Date: Fri, 9 Feb 2024 21:34:38 +0200 Subject: [PATCH 6/6] Fix for linter issues. --- go/ethadapter/l1_transaction.go | 2 +- integration/simulation/network/geth_utils.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go/ethadapter/l1_transaction.go b/go/ethadapter/l1_transaction.go index 61b226deaf..581d90523e 100644 --- a/go/ethadapter/l1_transaction.go +++ b/go/ethadapter/l1_transaction.go @@ -58,7 +58,7 @@ func (l *L1RespondSecretTx) Sign(privateKey *ecdsa.PrivateKey) *L1RespondSecretT return nil } - //set recovery id to 27; prevent malleable signatures + // set recovery id to 27; prevent malleable signatures signedHash[64] += 27 l.AttesterSig = signedHash return l diff --git a/integration/simulation/network/geth_utils.go b/integration/simulation/network/geth_utils.go index d71b616dc9..22696d7d6e 100644 --- a/integration/simulation/network/geth_utils.go +++ b/integration/simulation/network/geth_utils.go @@ -203,7 +203,7 @@ func InitializeContract(workerClient ethadapter.EthClient, w wallet.Wallet, cont if receipt.Status != types.ReceiptStatusSuccessful { return nil, errors.New("unable to initialize contract") } - testlog.Logger().Info(fmt.Sprintf("Contract initialized")) + testlog.Logger().Info("Contract initialized") return receipt, nil } }