diff --git a/.gitmodules b/.gitmodules index e3453dd72..193c66ed7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,9 +5,7 @@ branch = v1.3.0 [submodule "contracts/lib/openzeppelin-contracts"] path = contracts/lib/openzeppelin-contracts - url = https://github.com/openzeppelin/openzeppelin-contracts -[submodule "lib/openzeppelin-contracts"] - branch = v4.8.1 + url = https://github.com/OpenZeppelin/openzeppelin-contracts [submodule "contracts/lib/subnet-evm"] path = contracts/lib/subnet-evm url = https://github.com/ava-labs/subnet-evm diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d82aefb74..af91827dd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## Setup -To start developing on Teleporter, you'll need Solidity >= v0.8.18. [Foundry](https://book.getfoundry.sh/getting-started/installation) is the recommended development toolkit for working with Teleporter, and it comes bundled with the required Solidity version. To run the tests and linter locally, you'll need the dependencies described in [Setup](./README.md#setup), as well as [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +To start developing on Teleporter, you'll need Solidity >= v0.8.20. [Foundry](https://book.getfoundry.sh/getting-started/installation) is the recommended development toolkit for working with Teleporter, and it comes bundled with the required Solidity version. To run the tests and linter locally, you'll need the dependencies described in [Setup](./README.md#setup), as well as [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) ## Issues @@ -13,7 +13,7 @@ To start developing on Teleporter, you'll need Solidity >= v0.8.18. [Foundry](ht ### Making an Issue - Check that the issue you're filing doesn't already exist by searching under [issues](https://github.com/ava-labs/teleporter/issues). -- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/ava-labs/teleporter/issues/new/choose). Be sure to include a *title and clear description* with as much relevant information as possible. +- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/ava-labs/teleporter/issues/new/choose). Be sure to include a _title and clear description_ with as much relevant information as possible. ## Features diff --git a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go index 261918b17..f70ca3e3e 100644 --- a/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go +++ b/abi-bindings/go/governance/ValidatorSetSig/ValidatorSetSig.go @@ -40,8 +40,8 @@ type ValidatorSetSigMessage struct { // ValidatorSetSigMetaData contains all meta data concerning the ValidatorSetSig contract. var ValidatorSetSigMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c060405234801561001057600080fd5b50604051610b79380380610b7983398101604081905261002f916100b6565b600160005560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ad91906100b6565b60a052506100cf565b6000602082840312156100c857600080fd5b5051919050565b60805160a051610a7761010260003960008181610137015261047e015260008181610102015261023e0152610a776000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ecebe001161005b5780637ecebe00146100cf5780638d6e579d146100fd578063b771b3bc14610124578063d127dc9b1461013257600080fd5b80630731775d146100825780635433da42146100a75780635f659d8d146100bc575b600080fd5b61008a600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ba6100b5366004610638565b610159565b005b6100ba6100ca36600461078b565b61047a565b6100ef6100dd366004610832565b60016020526000908152604090205481565b60405190815260200161009e565b6100ef7f000000000000000000000000000000000000000000000000000000000000000081565b61008a6005600160991b0181565b6100ef7f000000000000000000000000000000000000000000000000000000000000000081565b6101616105df565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101d691908101906108c0565b915091508061023a5760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102b95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b6064820152608401610231565b60208201516001600160a01b03161561032a5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b6064820152608401610231565b600082604001518060200190518101906103449190610966565b905061034f8161047a565b606081015161035f9060016109fe565b604080830180516001600160a01b03908116600090815260016020528381209490945590516080850151925191169161039791610a25565b6000604051808303816000865af19150503d80600081146103d4576040519150601f19603f3d011682016040523d82523d6000602084013e6103d9565b606091505b505090508061042a5760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c6564000000006044820152606401610231565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104776001600055565b50565b80517f0000000000000000000000000000000000000000000000000000000000000000146104fe5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b6064820152608401610231565b60208101516001600160a01b031630146105725760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b6064820152608401610231565b60608101516040808301516001600160a01b0316600090815260016020522054146104775760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e636500006044820152606401610231565b6002600054036106315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610231565b6002600055565b60006020828403121561064a57600080fd5b813563ffffffff8116811461065e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561069e5761069e610665565b60405290565b6040516060810167ffffffffffffffff8111828210171561069e5761069e610665565b604051601f8201601f1916810167ffffffffffffffff811182821017156106f0576106f0610665565b604052919050565b6001600160a01b038116811461047757600080fd5b600067ffffffffffffffff82111561072757610727610665565b50601f01601f191660200190565b600082601f83011261074657600080fd5b81356107596107548261070d565b6106c7565b81815284602083860101111561076e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561079d57600080fd5b813567ffffffffffffffff808211156107b557600080fd5b9083019060a082860312156107c957600080fd5b6107d161067b565b8235815260208301356107e3816106f8565b602082015260408301356107f6816106f8565b60408201526060838101359082015260808301358281111561081757600080fd5b61082387828601610735565b60808301525095945050505050565b60006020828403121561084457600080fd5b813561065e816106f8565b60005b8381101561086a578181015183820152602001610852565b50506000910152565b600082601f83011261088457600080fd5b81516108926107548261070d565b8181528460208386010111156108a757600080fd5b6108b882602083016020870161084f565b949350505050565b600080604083850312156108d357600080fd5b825167ffffffffffffffff808211156108eb57600080fd5b90840190606082870312156108ff57600080fd5b6109076106a4565b825181526020830151610919816106f8565b602082015260408301518281111561093057600080fd5b61093c88828601610873565b6040830152508094505050506020830151801515811461095b57600080fd5b809150509250929050565b60006020828403121561097857600080fd5b815167ffffffffffffffff8082111561099057600080fd5b9083019060a082860312156109a457600080fd5b6109ac61067b565b8251815260208301516109be816106f8565b602082015260408301516109d1816106f8565b6040820152606083810151908201526080830151828111156109f257600080fd5b61082387828601610873565b80820180821115610a1f57634e487b7160e01b600052601160045260246000fd5b92915050565b60008251610a3781846020870161084f565b919091019291505056fea2646970667358221220d502ee804feca959ef3978e511a3620a701567cb50ef6408efcdd56c6713996d64736f6c63430008120033", + ABI: "[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorBlockchainID_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Delivered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"executeCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"targetBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorSetSigAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"structValidatorSetSigMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"validateMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100b6565b600160005560808190526040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa158015610089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ad91906100b6565b60a052506100cf565b6000602082840312156100c857600080fd5b5051919050565b60805160a051610a4861010260003960008181610137015261047e015260008181610102015261023e0152610a486000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637ecebe001161005b5780637ecebe00146100cf5780638d6e579d146100fd578063b771b3bc14610124578063d127dc9b1461013257600080fd5b80630731775d146100825780635433da42146100a75780635f659d8d146100bc575b600080fd5b61008a600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ba6100b5366004610609565b610159565b005b6100ba6100ca36600461075c565b61047a565b6100ef6100dd366004610803565b60016020526000908152604090205481565b60405190815260200161009e565b6100ef7f000000000000000000000000000000000000000000000000000000000000000081565b61008a6005600160991b0181565b6100ef7f000000000000000000000000000000000000000000000000000000000000000081565b6101616105df565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101d69190810190610891565b915091508061023a5760405162461bcd60e51b815260206004820152602560248201527f56616c696461746f725365745369673a20696e76616c69642077617270206d65604482015264737361676560d81b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102b95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f725365745369673a20696e76616c696420736f75726365436044820152651a185a5b925160d21b6064820152608401610231565b60208201516001600160a01b03161561032a5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f725365745369673a206e6f6e2d7a65726f206f726967696e60448201526c53656e6465724164647265737360981b6064820152608401610231565b600082604001518060200190518101906103449190610937565b905061034f8161047a565b606081015161035f9060016109cf565b604080830180516001600160a01b039081166000908152600160205283812094909455905160808501519251911691610397916109f6565b6000604051808303816000865af19150503d80600081146103d4576040519150601f19603f3d011682016040523d82523d6000602084013e6103d9565b606091505b505090508061042a5760405162461bcd60e51b815260206004820152601c60248201527f56616c696461746f725365745369673a2063616c6c206661696c6564000000006044820152606401610231565b816060015182604001516001600160a01b03167f5942a9a3968c7d49fc51c027041544ea295f5c1e395d6d8aa35c4369959f8ed960405160405180910390a3505050506104776001600055565b50565b80517f0000000000000000000000000000000000000000000000000000000000000000146104fe5760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f725365745369673a20696e76616c6964207461726765744260448201526a1b1bd8dad8da185a5b925160aa1b6064820152608401610231565b60208101516001600160a01b031630146105725760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f725365745369673a20696e76616c69642076616c6964617460448201526e6f725365745369674164647265737360881b6064820152608401610231565b60608101516040808301516001600160a01b0316600090815260016020522054146104775760405162461bcd60e51b815260206004820152601e60248201527f56616c696461746f725365745369673a20696e76616c6964206e6f6e636500006044820152606401610231565b60026000540361060257604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60006020828403121561061b57600080fd5b813563ffffffff8116811461062f57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561066f5761066f610636565b60405290565b6040516060810167ffffffffffffffff8111828210171561066f5761066f610636565b604051601f8201601f1916810167ffffffffffffffff811182821017156106c1576106c1610636565b604052919050565b6001600160a01b038116811461047757600080fd5b600067ffffffffffffffff8211156106f8576106f8610636565b50601f01601f191660200190565b600082601f83011261071757600080fd5b813561072a610725826106de565b610698565b81815284602083860101111561073f57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561076e57600080fd5b813567ffffffffffffffff8082111561078657600080fd5b9083019060a0828603121561079a57600080fd5b6107a261064c565b8235815260208301356107b4816106c9565b602082015260408301356107c7816106c9565b6040820152606083810135908201526080830135828111156107e857600080fd5b6107f487828601610706565b60808301525095945050505050565b60006020828403121561081557600080fd5b813561062f816106c9565b60005b8381101561083b578181015183820152602001610823565b50506000910152565b600082601f83011261085557600080fd5b8151610863610725826106de565b81815284602083860101111561087857600080fd5b610889826020830160208701610820565b949350505050565b600080604083850312156108a457600080fd5b825167ffffffffffffffff808211156108bc57600080fd5b90840190606082870312156108d057600080fd5b6108d8610675565b8251815260208301516108ea816106c9565b602082015260408301518281111561090157600080fd5b61090d88828601610844565b6040830152508094505050506020830151801515811461092c57600080fd5b809150509250929050565b60006020828403121561094957600080fd5b815167ffffffffffffffff8082111561096157600080fd5b9083019060a0828603121561097557600080fd5b61097d61064c565b82518152602083015161098f816106c9565b602082015260408301516109a2816106c9565b6040820152606083810151908201526080830151828111156109c357600080fd5b6107f487828601610844565b808201808211156109f057634e487b7160e01b600052601160045260246000fd5b92915050565b60008251610a08818460208701610820565b919091019291505056fea2646970667358221220853544e2b59fd233c9018918b6d67f1d2acf762a5d5b736951108377d5929a4264736f6c63430008140033", } // ValidatorSetSigABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go index 19997422d..edbc4be6b 100644 --- a/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go +++ b/abi-bindings/go/mocks/ExampleERC20/ExampleERC20.go @@ -31,8 +31,8 @@ var ( // ExampleERC20MetaData contains all meta data concerning the ExampleERC20 contract. var ExampleERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"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\":\"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\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"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: "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b815250816003908162000063919062000208565b50600462000072828262000208565b50505062000093336b204fce5e3e250261100000006200009960201b60201c565b620002fc565b6001600160a01b038216620000f45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001089190620002d4565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018f57607f821691505b602082108103620001b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015f57600081815260208120601f850160051c81016020861015620001df5750805b601f850160051c820191505b818110156200020057828155600101620001eb565b505050505050565b81516001600160401b0381111562000224576200022462000164565b6200023c816200023584546200017a565b84620001b6565b602080601f8311600181146200027457600084156200025b5750858301515b600019600386901b1c1916600185901b17855562000200565b600085815260208120601f198616915b82811015620002a55788860151825594840194600190910190840162000284565b5085821015620002c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620002f657634e487b7160e01b600052601160045260246000fd5b92915050565b610b58806200030c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d68146101d0578063a457c2d7146101e3578063a9059cbb146101f6578063dd62ed3e1461020957600080fd5b806370a082311461018c57806379cc6790146101b557806395d89b41146101c857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016457806342966c681461017757600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761021c565b6040516101049190610989565b60405180910390f35b61012061011b3660046109f3565b6102ae565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a1d565b6102c8565b60405160128152602001610104565b6101206101723660046109f3565b6102ec565b61018a610185366004610a59565b61030e565b005b61013461019a366004610a72565b6001600160a01b031660009081526020819052604090205490565b61018a6101c33660046109f3565b61031b565b6100f7610334565b61018a6101de366004610a59565b610343565b6101206101f13660046109f3565b6103a9565b6101206102043660046109f3565b610424565b610134610217366004610a94565b610432565b60606003805461022b90610ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461025790610ac7565b80156102a45780601f10610279576101008083540402835291602001916102a4565b820191906000526020600020905b81548152906001019060200180831161028757829003601f168201915b5050505050905090565b6000336102bc81858561045d565b60019150505b92915050565b6000336102d6858285610582565b6102e18585856105fc565b506001949350505050565b6000336102bc8185856102ff8383610432565b6103099190610b01565b61045d565b61031833826107a0565b50565b610326823383610582565b61033082826107a0565b5050565b60606004805461022b90610ac7565b662386f26fc1000081111561039f5760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b61031833826108ca565b600033816103b78286610432565b9050838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610396565b6102e1828686840361045d565b6000336102bc8185856105fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104bf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610396565b6001600160a01b0382166105205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610396565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061058e8484610432565b905060001981146105f657818110156105e95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610396565b6105f6848484840361045d565b50505050565b6001600160a01b0383166106605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610396565b6001600160a01b0382166106c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610396565b6001600160a01b0383166000908152602081905260409020548181101561073a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610396565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f6565b6001600160a01b0382166108005760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610396565b6001600160a01b038216600090815260208190526040902054818110156108745760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610396565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610575565b6001600160a01b0382166109205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610396565b80600260008282546109329190610b01565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156109b65785810183015185820160400152820161099a565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109ee57600080fd5b919050565b60008060408385031215610a0657600080fd5b610a0f836109d7565b946020939093013593505050565b600080600060608486031215610a3257600080fd5b610a3b846109d7565b9250610a49602085016109d7565b9150604084013590509250925092565b600060208284031215610a6b57600080fd5b5035919050565b600060208284031215610a8457600080fd5b610a8d826109d7565b9392505050565b60008060408385031215610aa757600080fd5b610ab0836109d7565b9150610abe602084016109d7565b90509250929050565b600181811c90821680610adb57607f821691505b602082108103610afb57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102c257634e487b7160e01b600052601160045260246000fdfea2646970667358221220b75645ce4334d6c4c701d5e4e62a73066625ed017cebe7d75815587098dd6ca464736f6c63430008120033", + ABI: "[{\"inputs\":[],\"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\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"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\":\"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: "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020016926b7b1b5902a37b5b2b760b11b81525060405180604001604052806004815260200163045584d560e41b8152508160039081620000639190620002b3565b506004620000728282620002b3565b50505062000093336b204fce5e3e250261100000006200009960201b60201c565b620003a7565b6001600160a01b038216620000c95760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000d760008383620000db565b5050565b6001600160a01b0383166200010a578060026000828254620000fe91906200037f565b909155506200017e9050565b6001600160a01b038316600090815260208190526040902054818110156200015f5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200019c57600280548290039055620001bb565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200020191815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023957607f821691505b6020821081036200025a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ae57600081815260208120601f850160051c81016020861015620002895750805b601f850160051c820191505b81811015620002aa5782815560010162000295565b5050505b505050565b81516001600160401b03811115620002cf57620002cf6200020e565b620002e781620002e0845462000224565b8462000260565b602080601f8311600181146200031f5760008415620003065750858301515b600019600386901b1c1916600185901b178555620002aa565b600085815260208120601f198616915b8281101562000350578886015182559484019460019091019084016200032f565b50858210156200036f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003a157634e487b7160e01b600052601160045260246000fd5b92915050565b61088880620003b76000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014357806379cc67901461016c57806395d89b411461017f578063a0712d6814610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f57806342966c681461012e575b600080fd5b6100c16101e6565b6040516100ce91906106b9565b60405180910390f35b6100ea6100e5366004610723565b610278565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a36600461074d565b610292565b604051601281526020016100ce565b61014161013c366004610789565b6102b6565b005b6100fe6101513660046107a2565b6001600160a01b031660009081526020819052604090205490565b61014161017a366004610723565b6102c3565b6100c16102dc565b610141610195366004610789565b6102eb565b6100ea6101a8366004610723565b610351565b6100fe6101bb3660046107c4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f5906107f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610221906107f7565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b60003361028681858561035f565b60019150505b92915050565b6000336102a0858285610371565b6102ab8585856103ef565b506001949350505050565b6102c0338261044e565b50565b6102ce823383610371565b6102d8828261044e565b5050565b6060600480546101f5906107f7565b662386f26fc100008111156103475760405162461bcd60e51b815260206004820152601f60248201527f4578616d706c6545524332303a206d6178206d696e742065786365656465640060448201526064015b60405180910390fd5b6102c03382610484565b6000336102868185856103ef565b61036c83838360016104ba565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103e957818110156103da57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161033e565b6103e9848484840360006104ba565b50505050565b6001600160a01b03831661041957604051634b637e8f60e11b81526000600482015260240161033e565b6001600160a01b0382166104435760405163ec442f0560e01b81526000600482015260240161033e565b61036c83838361058f565b6001600160a01b03821661047857604051634b637e8f60e11b81526000600482015260240161033e565b6102d88260008361058f565b6001600160a01b0382166104ae5760405163ec442f0560e01b81526000600482015260240161033e565b6102d86000838361058f565b6001600160a01b0384166104e45760405163e602df0560e01b81526000600482015260240161033e565b6001600160a01b03831661050e57604051634a1406b160e11b81526000600482015260240161033e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103e957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161058191815260200190565b60405180910390a350505050565b6001600160a01b0383166105ba5780600260008282546105af9190610831565b9091555061062c9050565b6001600160a01b0383166000908152602081905260409020548181101561060d5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161033e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661064857600280548290039055610667565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106ac91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156106e6578581018301518582016040015282016106ca565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461071e57600080fd5b919050565b6000806040838503121561073657600080fd5b61073f83610707565b946020939093013593505050565b60008060006060848603121561076257600080fd5b61076b84610707565b925061077960208501610707565b9150604084013590509250925092565b60006020828403121561079b57600080fd5b5035919050565b6000602082840312156107b457600080fd5b6107bd82610707565b9392505050565b600080604083850312156107d757600080fd5b6107e083610707565b91506107ee60208401610707565b90509250929050565b600181811c9082168061080b57607f821691505b60208210810361082b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea2646970667358221220fa550430971b2707edffd1f60d6c80e4778fd894cc0ba692a02822eb8cd7f8d664736f6c63430008140033", } // ExampleERC20ABI is the input ABI used to generate the binding from. @@ -390,107 +390,65 @@ func (_ExampleERC20 *ExampleERC20CallerSession) 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 (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "approve", spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.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 (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Approve(&_ExampleERC20.TransactOpts, spender, value) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function burn(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burn", amount) +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) Burn(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burn", value) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function burn(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) Burn(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, amount) +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) } // Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function burn(uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, amount) +// Solidity: function burn(uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) Burn(value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Burn(&_ExampleERC20.TransactOpts, value) } // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "burnFrom", account, amount) +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Transactor) BurnFrom(opts *bind.TransactOpts, account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.contract.Transact(opts, "burnFrom", account, value) } // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, amount) +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20Session) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) } // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // -// Solidity: function burnFrom(address account, uint256 amount) returns() -func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.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 (_ExampleERC20 *ExampleERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.DecreaseAllowance(&_ExampleERC20.TransactOpts, spender, subtractedValue) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.DecreaseAllowance(&_ExampleERC20.TransactOpts, spender, subtractedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.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 (_ExampleERC20 *ExampleERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.IncreaseAllowance(&_ExampleERC20.TransactOpts, spender, addedValue) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.IncreaseAllowance(&_ExampleERC20.TransactOpts, spender, addedValue) +// Solidity: function burnFrom(address account, uint256 value) returns() +func (_ExampleERC20 *ExampleERC20TransactorSession) BurnFrom(account common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.BurnFrom(&_ExampleERC20.TransactOpts, account, value) } // Mint is a paid mutator transaction binding the contract method 0xa0712d68. @@ -516,44 +474,44 @@ func (_ExampleERC20 *ExampleERC20TransactorSession) Mint(amount *big.Int) (*type // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transfer", to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.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 (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address to, uint256 amount) returns(bool) -func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.Transfer(&_ExampleERC20.TransactOpts, to, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.Transfer(&_ExampleERC20.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 (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.contract.Transact(opts, "transferFrom", from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.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 (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.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 (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ExampleERC20 *ExampleERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ExampleERC20.Contract.TransferFrom(&_ExampleERC20.TransactOpts, from, to, value) } // ExampleERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ExampleERC20 contract. diff --git a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go index 8ae47edae..9d6e3bf9e 100644 --- a/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -65,8 +65,8 @@ type TeleporterMessageReceipt struct { // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506001600081905580556132d5806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612251565b610503565b005b61015a61019036600461226e565b6105f8565b6101e06101a336600461226e565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b604051610164929190612287565b6102016101fc36600461226e565b610615565b6040516001600160a01b039091168152602001610164565b61015a61022736600461226e565b60009081526005602052604090205490565b61015a6102473660046122ae565b61069e565b61018061025a366004612301565b6106fc565b61015a61026d36600461226e565b60066020526000908152604090205481565b61029261028d366004612335565b6108a7565b6040516101649190612357565b6101806102ad366004612377565b6108da565b61015a6102c03660046123af565b610b19565b61015a6102d3366004612426565b610b5c565b6102016005600160991b0181565b61015a6102f43660046124be565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124f7565b610e03565b61015a60025481565b61015a61034936600461226e565b61123d565b61039761035c36600461226e565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c436600461226e565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b61040561040036600461226e565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c36600461251e565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190612564565b9050806104cd5760405162461bcd60e51b81526004016104c49061257d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155f565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c4906125c4565b60026000556106f16106d383612804565b833560009081526004602052604090206106ec90611572565b61167c565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c4906125c4565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128a7565b6000836040516020016107b29190612b42565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612b55565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b9e565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c23565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612564565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118bc565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c4906125c4565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c36565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612c7b565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128a7565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611981565b600085815260056020526040812060020180549293508392909190610aa1908490612ce5565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c4906125c4565b60026000818155905490866001600160401b03811115610ba257610ba2612607565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612cf8565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612cf8565b602002602001018190525050505080610d6590612d0e565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d27565b8152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505060408051928352602080840190915290920152508361167c565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c36565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612da3565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f40565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae9565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b61565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612cf8565b6020026020010151611bd3565b61118b81612d0e565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cfb565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d929190613150565b60405180910390a460e0840151511561122f5761122f82876000015186611d57565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c49061257d565b600060035460016112719190612ce5565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612c36565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c4906128a7565b80836040516020016113169190612b42565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612b55565b600061135b6080850160608601612251565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a360008281526006602090815260408083208390558691611420918701908701612251565b61142d60e0870187613174565b60405160240161144094939291906131ba565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052905060006114886114816080870160608801612251565b5a84611e8a565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261155a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea4565b505050565b8054600182015460009161060f916131e5565b6060600061158960056115848561155f565b611f76565b9050806000036115d85760408051600080825260208201909252906115d0565b60408051808201909152600080825260208201528152602001906001900390816115a95790505b509392505050565b6000816001600160401b038111156115f2576115f2612607565b60405190808252806020026020018201604052801561163757816020015b60408051808201909152600080825260208201528152602001906001900390816116105790505b50905060005b828110156115d05761164e85611f8c565b82828151811061166057611660612cf8565b60200260200101819052508061167590612d0e565b905061163d565b600080611687610431565b9050600060036000815461169a90612d0e565b919050819055905060006116b383876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a00151815250905060008160405160200161172c91906131f8565b60405160208183030381529060405290506000808960400151602001511115611794576040890151516001600160a01b031661177a5760405162461bcd60e51b81526004016104c490612c7b565b604089015180516020909101516117919190611981565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df890611838908890869061320b565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061186a908690600401612c23565b6020604051808303816000875af1158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190612564565b50939998505050505050505050565b60408051808201909152600080825260208201526118d98361155f565b82106119315760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119479190612ce5565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612564565b9050611a056001600160a01b038516333086612058565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190612564565b9050818111611ad65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ae082826131e5565b95945050505050565b60008151600003611afc5750600161060f565b815160005b81811015611b5657846001600160a01b0316848281518110611b2557611b25612cf8565b60200260200101516001600160a01b031603611b465760019250505061060f565b611b4f81612d0e565b9050611b01565b506000949350505050565b80600003611bc15760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be484848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c3b575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611ca2908490612ce5565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cec919061321e565b60405180910390a45050505050565b6001820180548291600285019160009182611d1583612d0e565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db95760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dda5761155a838383612096565b602081015160e0820151604051600092611df892869260240161323e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e3d919084611e8a565b905080611e5657611e4f858585612096565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ef9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661210b9092919063ffffffff16565b80519091501561155a5780806020019051810190611f179190613268565b61155a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f8557816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611ff65760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559061204e908390612ce5565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120909085906323b872dd60e01b90608401611523565b50505050565b806040516020016120a791906131f8565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120fe9085906131f8565b60405180910390a3505050565b606061127e848460008585600080866001600160a01b031685876040516121329190613283565b60006040518083038185875af1925050503d806000811461216f576040519150601f19603f3d011682016040523d82523d6000602084013e612174565b606091505b509150915061218587838387612190565b979650505050505050565b606083156121ff5782516000036121f8576001600160a01b0385163b6121f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b508161127e565b61127e83838151156122145781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c23565b6001600160a01b038116811461224357600080fd5b50565b80356104fe8161222e565b60006020828403121561226357600080fd5b81356108d38161222e565b60006020828403121561228057600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b6000602082840312156122c057600080fd5b81356001600160401b038111156122d657600080fd5b820160e081850312156108d357600080fd5b600061010082840312156122fb57600080fd5b50919050565b60006020828403121561231357600080fd5b81356001600160401b0381111561232957600080fd5b61127e848285016122e8565b6000806040838503121561234857600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b60008060006060848603121561238c57600080fd5b83359250602084013561239e8161222e565b929592945050506040919091013590565b6000806000606084860312156123c457600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123ed57600080fd5b5081356001600160401b0381111561240457600080fd5b6020830191508360208260051b850101111561241f57600080fd5b9250929050565b60008060008060008086880360a081121561244057600080fd5b8735965060208801356001600160401b038082111561245e57600080fd5b61246a8b838c016123db565b90985096508691506040603f198401121561248457600080fd5b60408a01955060808a013592508083111561249e57600080fd5b50506124ac89828a016123db565b979a9699509497509295939492505050565b600080604083850312156124d157600080fd5b82356124dc8161222e565b915060208301356124ec8161222e565b809150509250929050565b6000806040838503121561250a57600080fd5b823563ffffffff811681146124dc57600080fd5b6000806040838503121561253157600080fd5b8235915060208301356001600160401b0381111561254e57600080fd5b61255a858286016122e8565b9150509250929050565b60006020828403121561257657600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561263f5761263f612607565b60405290565b60405160c081016001600160401b038111828210171561263f5761263f612607565b60405161010081016001600160401b038111828210171561263f5761263f612607565b604051601f8201601f191681016001600160401b03811182821017156126b2576126b2612607565b604052919050565b6000604082840312156126cc57600080fd5b6126d461261d565b905081356126e18161222e565b808252506020820135602082015292915050565b60006001600160401b0382111561270e5761270e612607565b5060051b60200190565b600082601f83011261272957600080fd5b8135602061273e612739836126f5565b61268a565b82815260059290921b8401810191818101908684111561275d57600080fd5b8286015b848110156127815780356127748161222e565b8352918301918301612761565b509695505050505050565b60006001600160401b038211156127a5576127a5612607565b50601f01601f191660200190565b600082601f8301126127c457600080fd5b81356127d26127398261278c565b8181528460208386010111156127e757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561281657600080fd5b61281e612645565b8235815261282e60208401612246565b602082015261284036604085016126ba565b60408201526080830135606082015260a08301356001600160401b038082111561286957600080fd5b61287536838701612718565b608084015260c085013591508082111561288e57600080fd5b5061289b368286016127b3565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261290457600080fd5b83016020810192503590506001600160401b0381111561292357600080fd5b8060051b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781356129588161222e565b6001600160a01b031687529582019590820190600101612945565b509495945050505050565b6000808335601e1984360301811261299557600080fd5b83016020810192503590506001600160401b038111156129b457600080fd5b8060061b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781358752828201356129ef8161222e565b6001600160a01b03168784015260409687019691909101906001016129d6565b6000808335601e19843603018112612a2657600080fd5b83016020810192503590506001600160401b03811115612a4557600080fd5b80360382131561241f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a948161222e565b6001600160a01b0316602085015260408381013590850152612ab860608401612246565b6001600160a01b0316606085015260808381013590850152612add60a08401846128ed565b8260a0870152612af08387018284612935565b92505050612b0160c084018461297e565b85830360c0870152612b148382846129c6565b92505050612b2560e0840184612a0f565b85830360e0870152612b38838284612a54565b9695505050505050565b6020815260006108d36020830184612a7d565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612bb16060830185612a7d565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612bee578181015183820152602001612bd6565b50506000910152565b60008151808452612c0f816020860160208601612bd3565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612bf7565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612ccf565b634e487b7160e01b600052603260045260246000fd5b600060018201612d2057612d20612ccf565b5060010190565b600060408284031215612d3957600080fd5b6108d383836126ba565b80516104fe8161222e565b600082601f830112612d5f57600080fd5b8151612d6d6127398261278c565b818152846020838601011115612d8257600080fd5b61127e826020830160208701612bd3565b805180151581146104fe57600080fd5b60008060408385031215612db657600080fd5b82516001600160401b0380821115612dcd57600080fd5b9084019060608287031215612de157600080fd5b604051606081018181108382111715612dfc57612dfc612607565b604052825181526020830151612e118161222e565b6020820152604083015182811115612e2857600080fd5b612e3488828601612d4e565b6040830152509350612e4b91505060208401612d93565b90509250929050565b600082601f830112612e6557600080fd5b81516020612e75612739836126f5565b82815260059290921b84018101918181019086841115612e9457600080fd5b8286015b84811015612781578051612eab8161222e565b8352918301918301612e98565b600082601f830112612ec957600080fd5b81516020612ed9612739836126f5565b82815260069290921b84018101918181019086841115612ef857600080fd5b8286015b848110156127815760408189031215612f155760008081fd5b612f1d61261d565b8151815284820151612f2e8161222e565b81860152835291830191604001612efc565b600060208284031215612f5257600080fd5b81516001600160401b0380821115612f6957600080fd5b908301906101008286031215612f7e57600080fd5b612f86612667565b82518152612f9660208401612d43565b602082015260408301516040820152612fb160608401612d43565b60608201526080830151608082015260a083015182811115612fd257600080fd5b612fde87828601612e54565b60a08301525060c083015182811115612ff657600080fd5b61300287828601612eb8565b60c08301525060e08301518281111561301a57600080fd5b61302687828601612d4e565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129735781516001600160a01b031687529582019590820190600101613049565b600081518084526020808501945080840160005b83811015612973576130a8878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613082565b60006101008251845260018060a01b0360208401511660208501526040830151604085015260608301516130fa60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261311c82860182613035565b91505060c083015184820360c0860152613136828261306e565b91505060e083015184820360e0860152611ae08282612bf7565b6001600160a01b038316815260406020820181905260009061127e908301846130bb565b6000808335601e1984360301811261318b57600080fd5b8301803591506001600160401b038211156131a557600080fd5b60200191503681900382131561241f57600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b389083018486612a54565b8181038181111561060f5761060f612ccf565b6020815260006108d360208301846130bb565b606081526000612bb160608301856130bb565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ae090830184612bf7565b60006020828403121561327a57600080fd5b6108d382612d93565b60008251613295818460208701612bd3565b919091019291505056fea2646970667358221220226d71e539b243cf57fd9fea71ec679bcc78e0fedcafb5c5de6c0e40a9de7ed364736f6c63430008120033", + ABI: "[{\"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\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"BlockchainIDInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"ReceiptReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b5060016000819055805561323d806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b3660046121c3565b610503565b005b61015a6101903660046121e0565b6105f8565b6101e06101a33660046121e0565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b6040516101649291906121f9565b6102016101fc3660046121e0565b610615565b6040516001600160a01b039091168152602001610164565b61015a6102273660046121e0565b60009081526005602052604090205490565b61015a610247366004612220565b61069e565b61018061025a366004612273565b6106fc565b61015a61026d3660046121e0565b60066020526000908152604090205481565b61029261028d3660046122a7565b6108a7565b60405161016491906122c9565b6101806102ad3660046122e9565b6108da565b61015a6102c0366004612321565b610b19565b61015a6102d3366004612398565b610b5c565b6102016005600160991b0181565b61015a6102f4366004612430565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d366004612469565b610e03565b61015a60025481565b61015a6103493660046121e0565b61123d565b61039761035c3660046121e0565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c43660046121e0565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b6104056104003660046121e0565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c366004612490565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a591906124d6565b9050806104cd5760405162461bcd60e51b81526004016104c4906124ef565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155b565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c490612536565b60026000556106f16106d383612776565b833560009081526004602052604090206106ec9061156e565b611678565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c490612536565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c490612819565b6000836040516020016107b29190612aaa565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612abd565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b06565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612b8b565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b91906124d6565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118b8565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c490612536565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612b9e565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612be3565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c490612819565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b838361197d565b600085815260056020526040812060020180549293508392909190610aa1908490612c4d565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c490612536565b60026000818155905490866001600160401b03811115610ba257610ba2612579565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612c60565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612c60565b602002602001018190525050505080610d6590612c76565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612c8f565b81526020016000815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604080519283526020808401909152909201525083611678565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612b9e565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612d0b565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612ea8565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae5565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b5d565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612c60565b6020026020010151611bcf565b61118b81612c76565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cf7565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d9291906130b8565b60405180910390a460e0840151511561122f5761122f82876000015186611d53565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c4906124ef565b600060035460016112719190612c4d565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612b9e565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c490612819565b80836040516020016113169190612aaa565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612abd565b600061135b60808501606086016121c3565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a3600082815260066020908152604080832083905586916114209187019087016121c3565b61142d60e08701876130dc565b6040516024016114409493929190613122565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b1790529050600061148861148160808701606088016121c3565b5a84611e86565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b0383811660248301526044820183905261155691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611ea0565b505050565b8054600182015460009161060f9161314d565b6060600061158560056115808561155b565b611f03565b9050806000036115d45760408051600080825260208201909252906115cc565b60408051808201909152600080825260208201528152602001906001900390816115a55790505b509392505050565b6000816001600160401b038111156115ee576115ee612579565b60405190808252806020026020018201604052801561163357816020015b604080518082019091526000808252602082015281526020019060019003908161160c5790505b50905060005b828110156115cc5761164a85611f19565b82828151811061165c5761165c612c60565b60200260200101819052508061167190612c76565b9050611639565b600080611683610431565b9050600060036000815461169690612c76565b919050819055905060006116af83876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090506000816040516020016117289190613160565b60405160208183030381529060405290506000808960400151602001511115611790576040890151516001600160a01b03166117765760405162461bcd60e51b81526004016104c490612be3565b6040890151805160209091015161178d919061197d565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906118349088908690613173565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90611866908690600401612b8b565b6020604051808303816000875af1158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a991906124d6565b50939998505050505050505050565b60408051808201909152600080825260208201526118d58361155b565b821061192d5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119439190612c4d565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ea91906124d6565b9050611a016001600160a01b038516333086611fe5565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c91906124d6565b9050818111611ad25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611adc828261314d565b95945050505050565b60008151600003611af85750600161060f565b815160005b81811015611b5257846001600160a01b0316848281518110611b2157611b21612c60565b60200260200101516001600160a01b031603611b425760019250505061060f565b611b4b81612c76565b9050611afd565b506000949350505050565b80600003611bbd5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be084848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c37575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c9e908490612c4d565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611ce89190613186565b60405180910390a45050505050565b6001820180548291600285019160009182611d1183612c76565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db55760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dd657611556838383612024565b602081015160e0820151604051600092611df49286926024016131a6565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e39919084611e86565b905080611e5257611e4b858585612024565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611eb56001600160a01b03841683612099565b90508051600014158015611eda575080806020019051810190611ed891906131d0565b155b1561155657604051635274afe760e01b81526001600160a01b03841660048201526024016104c4565b6000818310611f1257816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611f835760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611fdb908390612c4d565b9093555090919050565b6040516001600160a01b03848116602483015283811660448301526064820183905261201e9186918216906323b872dd90608401611524565b50505050565b806040516020016120359190613160565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c9859061208c908590613160565b60405180910390a3505050565b60606108d38383600084600080856001600160a01b031684866040516120bf91906131eb565b60006040518083038185875af1925050503d80600081146120fc576040519150601f19603f3d011682016040523d82523d6000602084013e612101565b606091505b509150915061211186838361211b565b9695505050505050565b6060826121305761212b82612177565b6108d3565b815115801561214757506001600160a01b0384163b155b1561217057604051639996b31560e01b81526001600160a01b03851660048201526024016104c4565b50806108d3565b8051156121875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146121a057600080fd5b80356104fe816121a3565b6000602082840312156121d557600080fd5b81356108d3816121a3565b6000602082840312156121f257600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b60006020828403121561223257600080fd5b81356001600160401b0381111561224857600080fd5b820160e081850312156108d357600080fd5b6000610100828403121561226d57600080fd5b50919050565b60006020828403121561228557600080fd5b81356001600160401b0381111561229b57600080fd5b61127e8482850161225a565b600080604083850312156122ba57600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b6000806000606084860312156122fe57600080fd5b833592506020840135612310816121a3565b929592945050506040919091013590565b60008060006060848603121561233657600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261235f57600080fd5b5081356001600160401b0381111561237657600080fd5b6020830191508360208260051b850101111561239157600080fd5b9250929050565b60008060008060008086880360a08112156123b257600080fd5b8735965060208801356001600160401b03808211156123d057600080fd5b6123dc8b838c0161234d565b90985096508691506040603f19840112156123f657600080fd5b60408a01955060808a013592508083111561241057600080fd5b505061241e89828a0161234d565b979a9699509497509295939492505050565b6000806040838503121561244357600080fd5b823561244e816121a3565b9150602083013561245e816121a3565b809150509250929050565b6000806040838503121561247c57600080fd5b823563ffffffff8116811461244e57600080fd5b600080604083850312156124a357600080fd5b8235915060208301356001600160401b038111156124c057600080fd5b6124cc8582860161225a565b9150509250929050565b6000602082840312156124e857600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156125b1576125b1612579565b60405290565b60405160c081016001600160401b03811182821017156125b1576125b1612579565b60405161010081016001600160401b03811182821017156125b1576125b1612579565b604051601f8201601f191681016001600160401b038111828210171561262457612624612579565b604052919050565b60006040828403121561263e57600080fd5b61264661258f565b90508135612653816121a3565b808252506020820135602082015292915050565b60006001600160401b0382111561268057612680612579565b5060051b60200190565b600082601f83011261269b57600080fd5b813560206126b06126ab83612667565b6125fc565b82815260059290921b840181019181810190868411156126cf57600080fd5b8286015b848110156126f35780356126e6816121a3565b83529183019183016126d3565b509695505050505050565b60006001600160401b0382111561271757612717612579565b50601f01601f191660200190565b600082601f83011261273657600080fd5b81356127446126ab826126fe565b81815284602083860101111561275957600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561278857600080fd5b6127906125b7565b823581526127a0602084016121b8565b60208201526127b2366040850161262c565b60408201526080830135606082015260a08301356001600160401b03808211156127db57600080fd5b6127e73683870161268a565b608084015260c085013591508082111561280057600080fd5b5061280d36828601612725565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261287657600080fd5b83016020810192503590506001600160401b0381111561289557600080fd5b8060051b360382131561239157600080fd5b8183526000602080850194508260005b858110156128e55781356128ca816121a3565b6001600160a01b0316875295820195908201906001016128b7565b509495945050505050565b6000808335601e1984360301811261290757600080fd5b83016020810192503590506001600160401b0381111561292657600080fd5b8060061b360382131561239157600080fd5b8183526000602080850194508260005b858110156128e5578135875282820135612961816121a3565b6001600160a01b0316878401526040968701969190910190600101612948565b6000808335601e1984360301811261299857600080fd5b83016020810192503590506001600160401b038111156129b757600080fd5b80360382131561239157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a06816121a3565b6001600160a01b0316602085015260408381013590850152612a2a606084016121b8565b6001600160a01b0316606085015260808381013590850152612a4f60a084018461285f565b8260a0870152612a6283870182846128a7565b92505050612a7360c08401846128f0565b85830360c0870152612a86838284612938565b92505050612a9760e0840184612981565b85830360e08701526121118382846129c6565b6020815260006108d360208301846129ef565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612b1960608301856129ef565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612b56578181015183820152602001612b3e565b50506000910152565b60008151808452612b77816020860160208601612b3b565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612b5f565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612c37565b634e487b7160e01b600052603260045260246000fd5b600060018201612c8857612c88612c37565b5060010190565b600060408284031215612ca157600080fd5b6108d3838361262c565b80516104fe816121a3565b600082601f830112612cc757600080fd5b8151612cd56126ab826126fe565b818152846020838601011115612cea57600080fd5b61127e826020830160208701612b3b565b805180151581146104fe57600080fd5b60008060408385031215612d1e57600080fd5b82516001600160401b0380821115612d3557600080fd5b9084019060608287031215612d4957600080fd5b604051606081018181108382111715612d6457612d64612579565b604052825181526020830151612d79816121a3565b6020820152604083015182811115612d9057600080fd5b612d9c88828601612cb6565b6040830152509350612db391505060208401612cfb565b90509250929050565b600082601f830112612dcd57600080fd5b81516020612ddd6126ab83612667565b82815260059290921b84018101918181019086841115612dfc57600080fd5b8286015b848110156126f3578051612e13816121a3565b8352918301918301612e00565b600082601f830112612e3157600080fd5b81516020612e416126ab83612667565b82815260069290921b84018101918181019086841115612e6057600080fd5b8286015b848110156126f35760408189031215612e7d5760008081fd5b612e8561258f565b8151815284820151612e96816121a3565b81860152835291830191604001612e64565b600060208284031215612eba57600080fd5b81516001600160401b0380821115612ed157600080fd5b908301906101008286031215612ee657600080fd5b612eee6125d9565b82518152612efe60208401612cab565b602082015260408301516040820152612f1960608401612cab565b60608201526080830151608082015260a083015182811115612f3a57600080fd5b612f4687828601612dbc565b60a08301525060c083015182811115612f5e57600080fd5b612f6a87828601612e20565b60c08301525060e083015182811115612f8257600080fd5b612f8e87828601612cb6565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156128e55781516001600160a01b031687529582019590820190600101612fb1565b600081518084526020808501945080840160005b838110156128e557613010878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612fea565b60006101008251845260018060a01b03602084015116602085015260408301516040850152606083015161306260608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261308482860182612f9d565b91505060c083015184820360c086015261309e8282612fd6565b91505060e083015184820360e0860152611adc8282612b5f565b6001600160a01b038316815260406020820181905260009061127e90830184613023565b6000808335601e198436030181126130f357600080fd5b8301803591506001600160401b0382111561310d57600080fd5b60200191503681900382131561239157600080fd5b8481526001600160a01b038416602082015260606040820181905260009061211190830184866129c6565b8181038181111561060f5761060f612c37565b6020815260006108d36020830184613023565b606081526000612b196060830185613023565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611adc90830184612b5f565b6000602082840312156131e257600080fd5b6108d382612cfb565b600082516131fd818460208701612b3b565b919091019291505056fea26469706673582212202958c50e201a6cedafef09351f8cfe6586745b3f00b9d590c323a285cfac9e1464736f6c63430008140033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go index e8963a067..0caca62dc 100644 --- a/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/teleporter/registry/TeleporterRegistry/TeleporterRegistry.go @@ -38,7 +38,7 @@ type ProtocolRegistryEntry struct { // TeleporterRegistryMetaData contains all meta data concerning the TeleporterRegistry contract. var TeleporterRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"internalType\":\"structProtocolRegistryEntry[]\",\"name\":\"initialEntries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"AddProtocolVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newVersion\",\"type\":\"uint256\"}],\"name\":\"LatestVersionUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_VERSION_INCREMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_SOURCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"addProtocolVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getAddressFromVersion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestTeleporter\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"getTeleporterFromVersion\",\"outputs\":[{\"internalType\":\"contractITeleporterMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"protocolAddress\",\"type\":\"address\"}],\"name\":\"getVersionFromAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea2646970667358221220aba4a81500dfde36007aea5a20759d0d9bf13a49a01487812053a7f9faaae6c064736f6c63430008120033", + Bin: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea26469706673582212203a609a6a1a650ac4f36a8ebe10a103ca2fafb8b64d269803b72b9e34cb8541a964736f6c63430008140033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go index abd6bbbfc..c5f8cb7ea 100644 --- a/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go +++ b/abi-bindings/go/teleporter/tests/TestMessenger/TestMessenger.go @@ -31,8 +31,8 @@ var ( // TestMessengerMetaData contains all meta data concerning the TestMessenger contract. var TestMessengerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001fe438038062001fe4833981016040819052620000349162000653565b600054610100900460ff1615808015620000555750600054600160ff909116105b8062000085575062000072306200017860201b620008461760201c565b15801562000085575060005460ff166001145b620000ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000112576000805461ff0019166101001790555b6200011c62000187565b620001288383620001ef565b80156200016f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050620006a5565b6001600160a01b03163b151590565b600054610100900460ff16620001e35760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001ed6200026f565b565b600054610100900460ff166200024b5760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b6200025682620002d2565b620002606200043c565b6200026b81620004a2565b5050565b600054610100900460ff16620002cb5760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b6001603355565b600054610100900460ff166200032e5760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b6200033862000187565b6001600160a01b038116620003b65760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f7274657220726567697374727920616464726573730000000000000000006064820152608401620000e5565b606580546001600160a01b0319166001600160a01b0383169081179091556040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043691906200068b565b60675550565b600054610100900460ff16620004985760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001ed62000521565b620004ac62000588565b6001600160a01b038116620005135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000e5565b6200051e81620005e4565b50565b600054610100900460ff166200057d5760405162461bcd60e51b815260206004820152602b602482015260008051602062001fc483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001ed33620005e4565b6068546001600160a01b03163314620001ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000e5565b606880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200064e57600080fd5b919050565b600080604083850312156200066757600080fd5b620006728362000636565b9150620006826020840162000636565b90509250929050565b6000602082840312156200069e57600080fd5b5051919050565b61190f80620006b56000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639731429711610071578063973142971461013d578063b33fead414610179578063c868efaa1461019a578063d2cc7a70146101ad578063f2fde38b146101bf578063f63d09d7146101d257600080fd5b80631a7f5bec146100b95780632b0d8f18146100e95780634511243e146100fe5780635eb9951414610111578063715018a6146101245780638da5cb5b1461012c575b600080fd5b6065546100cc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fc6100f73660046112c6565b6101e5565b005b6100fc61010c3660046112c6565b6102e7565b6100fc61011f3660046112e3565b6103e4565b6100fc6103f8565b6068546001600160a01b03166100cc565b61016961014b3660046112c6565b6001600160a01b031660009081526066602052604090205460ff1690565b60405190151581526020016100e0565b61018c6101873660046112e3565b61040c565b6040516100e092919061134c565b6100fc6101a83660046113b9565b6104e4565b6067545b6040519081526020016100e0565b6100fc6101cd3660046112c6565b610690565b6101b16101e0366004611415565b610706565b6101ed610855565b6001600160a01b03811661021c5760405162461bcd60e51b81526004016102139061149b565b60405180910390fd5b6001600160a01b03811660009081526066602052604090205460ff161561029b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610213565b6001600160a01b038116600081815260666020526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6102ef610855565b6001600160a01b0381166103155760405162461bcd60e51b81526004016102139061149b565b6001600160a01b03811660009081526066602052604090205460ff1661038f5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610213565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152606660205260409020805460ff19169055565b6103ec610855565b6103f58161085d565b50565b6104006109e7565b61040a6000610a41565b565b6000818152609a60209081526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161044c906114e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906114e9565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b6104ec610a93565b6067546065546001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190611523565b10156105d05760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610213565b6105d93361014b565b1561063f5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610213565b610680848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610aec92505050565b61068a6001603355565b50505050565b6106986109e7565b6001600160a01b0381166106fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610213565b6103f581610a41565b6000610710610a93565b60008515610725576107228787610ba4565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8984898989604051610767959493929190611565565b60405180910390a361082e6040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001858152508152602001878152602001600067ffffffffffffffff8111156107d5576107d5611593565b6040519080825280602002602001820160405280156107fe578160200160208202803683370190505b50815260200186866040516020016108179291906115a9565b604051602081830303815290604052815250610d0e565b91505061083b6001603355565b979650505050505050565b6001600160a01b03163b151590565b61040a6109e7565b6065546040805163301fd1f560e21b815290516000926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa1580156108a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cb9190611523565b6067549091508183111561093b5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610213565b8083116109b05760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610213565b6067839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6068546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610213565b606880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260335403610ae55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610213565b6002603355565b600081806020019051810190610b0291906115bd565b6040805180820182526001600160a01b038681168252602080830185815260008a8152609a909252939020825181546001600160a01b03191692169190911781559151929350916001820190610b5890826116ad565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610b96919061176d565b60405180910390a350505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c119190611523565b9050610c286001600160a01b038516333086610e34565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c939190611523565b9050818111610cf95760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610213565b610d038282611796565b925050505b92915050565b600080610d19610e9f565b60408401516020015190915015610dbe576040830151516001600160a01b0316610d9b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610213565b604083015160208101519051610dbe916001600160a01b03909116908390610fa8565b604051630624488560e41b81526001600160a01b03821690636244885090610dea9086906004016117ed565b6020604051808303816000875af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190611523565b9392505050565b6040516001600160a01b038085166024830152831660448201526064810182905261068a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261105a565b600080606560009054906101000a90046001600160a01b03166001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061186b565b9050610f3d816001600160a01b031660009081526066602052604090205460ff1690565b15610fa35760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610213565b919050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190611523565b6110279190611888565b6040516001600160a01b03851660248201526044810182905290915061068a90859063095ea7b360e01b90606401610e68565b60006110af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111319092919063ffffffff16565b80519091501561112c57808060200190518101906110cd919061189b565b61112c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610213565b505050565b60606111408484600085611148565b949350505050565b6060824710156111a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610213565b600080866001600160a01b031685876040516111c591906118bd565b60006040518083038185875af1925050503d8060008114611202576040519150601f19603f3d011682016040523d82523d6000602084013e611207565b606091505b509150915061083b878383876060831561128257825160000361127b576001600160a01b0385163b61127b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610213565b5081611140565b61114083838151156112975781518083602001fd5b8060405162461bcd60e51b8152600401610213919061176d565b6001600160a01b03811681146103f557600080fd5b6000602082840312156112d857600080fd5b8135610e2d816112b1565b6000602082840312156112f557600080fd5b5035919050565b60005b838110156113175781810151838201526020016112ff565b50506000910152565b600081518084526113388160208601602086016112fc565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061114090830184611320565b60008083601f84011261138257600080fd5b50813567ffffffffffffffff81111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080606085870312156113cf57600080fd5b8435935060208501356113e1816112b1565b9250604085013567ffffffffffffffff8111156113fd57600080fd5b61140987828801611370565b95989497509550505050565b600080600080600080600060c0888a03121561143057600080fd5b873596506020880135611442816112b1565b95506040880135611452816112b1565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561147c57600080fd5b6114888a828b01611370565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c908216806114fd57607f821691505b60208210810361151d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561153557600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038616815284602082015283604082015260806060820152600061083b60808301848661153c565b634e487b7160e01b600052604160045260246000fd5b60208152600061114060208301848661153c565b6000602082840312156115cf57600080fd5b815167ffffffffffffffff808211156115e757600080fd5b818401915084601f8301126115fb57600080fd5b81518181111561160d5761160d611593565b604051601f8201601f19908116603f0116810190838211818310171561163557611635611593565b8160405282815287602084870101111561164e57600080fd5b61083b8360208301602088016112fc565b601f82111561112c57600081815260208120601f850160051c810160208610156116865750805b601f850160051c820191505b818110156116a557828155600101611692565b505050505050565b815167ffffffffffffffff8111156116c7576116c7611593565b6116db816116d584546114e9565b8461165f565b602080601f83116001811461171057600084156116f85750858301515b600019600386901b1c1916600185901b1785556116a5565b600085815260208120601f198616915b8281101561173f57888601518255948401946001909101908401611720565b508582101561175d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000610e2d6020830184611320565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d0857610d08611780565b600081518084526020808501945080840160005b838110156117e25781516001600160a01b0316875295820195908201906001016117bd565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261184e6101008401826117a9565b905060a0840151601f198483030160e0850152610d038282611320565b60006020828403121561187d57600080fd5b8151610e2d816112b1565b80820180821115610d0857610d08611780565b6000602082840312156118ad57600080fd5b81518015158114610e2d57600080fd5b600082516118cf8184602087016112fc565b919091019291505056fea2646970667358221220b514dec6a55f589e1cbd58ec316e0fcf075068919617e703a4c77bf6a6afce6364736f6c63430008120033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"teleporterManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"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\":\"uint256\",\"name\":\"oldMinTeleporterVersion\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newMinTeleporterVersion\",\"type\":\"uint256\"}],\"name\":\"MinTeleporterVersionUpdated\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ReceiveMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"SendMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getCurrentMessage\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"isTeleporterAddressPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"receiveTeleporterMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"unpauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateMinTeleporterVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001ea138038062001ea1833981016040819052620000349162000446565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03166000811580156200007f5750825b90506000826001600160401b031660011480156200009c5750303b155b905081158015620000ab575080155b15620000ca5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315620000f957845460ff60401b1916680100000000000000001785555b6200010362000163565b6200010f878762000179565b83156200015657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505062000498565b6200016d6200019d565b62000177620001ec565b565b620001836200019d565b6200018e826200021c565b62000199816200023e565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166200017757604051631afcd79f60e31b815260040160405180910390fd5b620001f66200019d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b620002266200019d565b62000230620001ec565b6200023b8162000283565b50565b620002486200019d565b6001600160a01b0381166200027857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200023b81620003b8565b6200028d6200019d565b6001600160a01b0381166200030b5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084016200026f565b7fc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff916160080546001600160a01b0319166001600160a01b03831690811782556040805163301fd1f560e21b8152905184929163c07f47d49160048083019260209291908290030181865afa15801562000385573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ab91906200047e565b8260020181905550505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b80516001600160a01b03811681146200044157600080fd5b919050565b600080604083850312156200045a57600080fd5b620004658362000429565b9150620004756020840162000429565b90509250929050565b6000602082840312156200049157600080fd5b5051919050565b6119f980620004a86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397314297116100715780639731429714610130578063b33fead414610153578063c868efaa14610174578063d2cc7a7014610187578063f2fde38b146101b8578063f63d09d7146101cb57600080fd5b80632b0d8f18146100ae5780634511243e146100c35780635eb99514146100d6578063715018a6146100e95780638da5cb5b146100f1575b600080fd5b6100c16100bc366004611388565b6101de565b005b6100c16100d1366004611388565b6102fd565b6100c16100e43660046113a5565b61040b565b6100c161041f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020015b60405180910390f35b61014361013e366004611388565b610433565b6040519015158152602001610127565b6101666101613660046113a5565b610470565b60405161012792919061140e565b6100c1610182366004611483565b610546565b7fc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff9161602545b604051908152602001610127565b6100c16101c6366004611388565b610728565b6101aa6101d93660046114df565b610763565b6101e66108c2565b6001600160a01b0381166102155760405162461bcd60e51b815260040161020c90611565565b60405180910390fd5b61021e81610433565b156102815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161020c565b6001600160a01b03811660008181527fc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff91616016020526040808220805460ff19166001179055516000805160206119a483398151915292917f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c91a25050565b6103056108c2565b6001600160a01b03811661032b5760405162461bcd60e51b815260040161020c90611565565b61033481610433565b6103925760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161020c565b6001600160a01b03811660008181527fc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff91616016020526040808220805460ff19169055516000805160206119a483398151915292917f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c391a25050565b6104136108c2565b61041c816108ca565b50565b610427610a67565b6104316000610ac2565b565b6001600160a01b031660009081527fc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff9161601602052604090205460ff1690565b600081815260208181526040808320815180830190925280546001600160a01b0316825260018101805460609486949392908401916104ae906115b3565b80601f01602080910402602001604051908101604052809291908181526020018280546104da906115b3565b80156105275780601f106104fc57610100808354040283529160200191610527565b820191906000526020600020905b81548152906001019060200180831161050a57829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b61054e610b33565b60006000805160206119a483398151915260028101548154919250906001600160a01b0316634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e191906115ed565b10156106485760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161020c565b61065133610433565b156106b75760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161020c565b6106f8858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b7d92505050565b5061072260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610730610a67565b6001600160a01b03811661075a57604051631e4fbdf760e01b81526000600482015260240161020c565b61041c81610ac2565b600061076d610b33565b600085156107825761077f8787610c34565b90505b876001600160a01b0316897fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca89848989896040516107c495949392919061162f565b60405180910390a361088b6040518060c001604052808b81526020018a6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001858152508152602001878152602001600067ffffffffffffffff8111156108325761083261165d565b60405190808252806020026020018201604052801561085b578160200160208202803683370190505b5081526020018686604051602001610874929190611673565b604051602081830303815290604052815250610d9e565b9150506108b760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b610431610a67565b6000805160206119a483398151915280546040805163301fd1f560e21b815290516000926001600160a01b03169163c07f47d49160048083019260209291908290030181865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094691906115ed565b6002830154909150818411156109b85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161020c565b808411610a2d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161020c565b60028301849055604051849082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a350505050565b33610a997f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104315760405163118cdaa760e01b815233600482015260240161020c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610b7757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600081806020019051810190610b939190611687565b6040805180820182526001600160a01b038681168252602080830185815260008a815291829052939020825181546001600160a01b03191692169190911781559151929350916001820190610be89082611777565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610c269190611837565b60405180910390a350505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca191906115ed565b9050610cb86001600160a01b038516333086610ec4565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2391906115ed565b9050818111610d895760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161020c565b610d938282611860565b925050505b92915050565b600080610da9610f2b565b60408401516020015190915015610e4e576040830151516001600160a01b0316610e2b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a207a65726f206665652060448201526c746f6b656e206164647265737360981b606482015260840161020c565b604083015160208101519051610e4e916001600160a01b0390911690839061101e565b604051630624488560e41b81526001600160a01b03821690636244885090610e7a9086906004016118b7565b6020604051808303816000875af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd91906115ed565b9392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526107229186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110a8565b6000805160206119a483398151915280546040805163d820e64f60e01b815290516000939284926001600160a01b039091169163d820e64f916004808201926020929091908290030181865afa158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad9190611935565b9050610fb881610433565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161020c565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109291906115ed565b905061072284846110a38585611952565b611110565b60006110bd6001600160a01b038416836111a0565b905080516000141580156110e25750808060200190518101906110e09190611965565b155b1561110b57604051635274afe760e01b81526001600160a01b038416600482015260240161020c565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261116184826111ae565b610722576040516001600160a01b0384811660248301526000604483015261119691869182169063095ea7b390606401610ef9565b61072284826110a8565b6060610ebd83836000611251565b6000806000846001600160a01b0316846040516111cb9190611987565b6000604051808303816000865af19150503d8060008114611208576040519150601f19603f3d011682016040523d82523d6000602084013e61120d565b606091505b50915091508180156112375750805115806112375750808060200190518101906112379190611965565b8015610d935750505050506001600160a01b03163b151590565b6060814710156112765760405163cd78605960e01b815230600482015260240161020c565b600080856001600160a01b031684866040516112929190611987565b60006040518083038185875af1925050503d80600081146112cf576040519150601f19603f3d011682016040523d82523d6000602084013e6112d4565b606091505b50915091506112e48683836112ee565b9695505050505050565b606082611303576112fe8261134a565b610ebd565b815115801561131a57506001600160a01b0384163b155b1561134357604051639996b31560e01b81526001600160a01b038516600482015260240161020c565b5080610ebd565b80511561135a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461041c57600080fd5b60006020828403121561139a57600080fd5b8135610ebd81611373565b6000602082840312156113b757600080fd5b5035919050565b60005b838110156113d95781810151838201526020016113c1565b50506000910152565b600081518084526113fa8160208601602086016113be565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090611432908301846113e2565b949350505050565b60008083601f84011261144c57600080fd5b50813567ffffffffffffffff81111561146457600080fd5b60208301915083602082850101111561147c57600080fd5b9250929050565b6000806000806060858703121561149957600080fd5b8435935060208501356114ab81611373565b9250604085013567ffffffffffffffff8111156114c757600080fd5b6114d38782880161143a565b95989497509550505050565b600080600080600080600060c0888a0312156114fa57600080fd5b87359650602088013561150c81611373565b9550604088013561151c81611373565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561154657600080fd5b6115528a828b0161143a565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c908216806115c757607f821691505b6020821081036115e757634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156115ff57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03861681528460208201528360408201526080606082015260006108b7608083018486611606565b634e487b7160e01b600052604160045260246000fd5b602081526000611432602083018486611606565b60006020828403121561169957600080fd5b815167ffffffffffffffff808211156116b157600080fd5b818401915084601f8301126116c557600080fd5b8151818111156116d7576116d761165d565b604051601f8201601f19908116603f011681019083821181831017156116ff576116ff61165d565b8160405282815287602084870101111561171857600080fd5b6108b78360208301602088016113be565b601f82111561110b57600081815260208120601f850160051c810160208610156117505750805b601f850160051c820191505b8181101561176f5782815560010161175c565b505050505050565b815167ffffffffffffffff8111156117915761179161165d565b6117a58161179f84546115b3565b84611729565b602080601f8311600181146117da57600084156117c25750858301515b600019600386901b1c1916600185901b17855561176f565b600085815260208120601f198616915b82811015611809578886015182559484019460019091019084016117ea565b50858210156118275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000610ebd60208301846113e2565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d9857610d9861184a565b600081518084526020808501945080840160005b838110156118ac5781516001600160a01b031687529582019590820190600101611887565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611918610100840182611873565b905060a0840151601f198483030160e0850152610d9382826113e2565b60006020828403121561194757600080fd5b8151610ebd81611373565b80820180821115610d9857610d9861184a565b60006020828403121561197757600080fd5b81518015158114610ebd57600080fd5b600082516119998184602087016113be565b919091019291505056fec73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff9161600a26469706673582212208d5adeb1fd8973a7fcd09edfd29a31173348f8ebbc5fa7275582bb7553fc3f4c64736f6c63430008140033", } // TestMessengerABI is the input ABI used to generate the binding from. @@ -327,37 +327,6 @@ func (_TestMessenger *TestMessengerCallerSession) Owner() (common.Address, error return _TestMessenger.Contract.Owner(&_TestMessenger.CallOpts) } -// TeleporterRegistry is a free data retrieval call binding the contract method 0x1a7f5bec. -// -// Solidity: function teleporterRegistry() view returns(address) -func (_TestMessenger *TestMessengerCaller) TeleporterRegistry(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TestMessenger.contract.Call(opts, &out, "teleporterRegistry") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TeleporterRegistry is a free data retrieval call binding the contract method 0x1a7f5bec. -// -// Solidity: function teleporterRegistry() view returns(address) -func (_TestMessenger *TestMessengerSession) TeleporterRegistry() (common.Address, error) { - return _TestMessenger.Contract.TeleporterRegistry(&_TestMessenger.CallOpts) -} - -// TeleporterRegistry is a free data retrieval call binding the contract method 0x1a7f5bec. -// -// Solidity: function teleporterRegistry() view returns(address) -func (_TestMessenger *TestMessengerCallerSession) TeleporterRegistry() (common.Address, error) { - return _TestMessenger.Contract.TeleporterRegistry(&_TestMessenger.CallOpts) -} - // PauseTeleporterAddress is a paid mutator transaction binding the contract method 0x2b0d8f18. // // Solidity: function pauseTeleporterAddress(address teleporterAddress) returns() @@ -574,13 +543,13 @@ func (it *TestMessengerInitializedIterator) Close() error { // TestMessengerInitialized represents a Initialized event raised by the TestMessenger contract. type TestMessengerInitialized struct { - Version uint8 + Version uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event Initialized(uint8 version) +// Solidity: event Initialized(uint64 version) func (_TestMessenger *TestMessengerFilterer) FilterInitialized(opts *bind.FilterOpts) (*TestMessengerInitializedIterator, error) { logs, sub, err := _TestMessenger.contract.FilterLogs(opts, "Initialized") @@ -590,9 +559,9 @@ func (_TestMessenger *TestMessengerFilterer) FilterInitialized(opts *bind.Filter return &TestMessengerInitializedIterator{contract: _TestMessenger.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event Initialized(uint8 version) +// Solidity: event Initialized(uint64 version) func (_TestMessenger *TestMessengerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TestMessengerInitialized) (event.Subscription, error) { logs, sub, err := _TestMessenger.contract.WatchLogs(opts, "Initialized") @@ -627,9 +596,9 @@ func (_TestMessenger *TestMessengerFilterer) WatchInitialized(opts *bind.WatchOp }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. // -// Solidity: event Initialized(uint8 version) +// Solidity: event Initialized(uint64 version) func (_TestMessenger *TestMessengerFilterer) ParseInitialized(log types.Log) (*TestMessengerInitialized, error) { event := new(TestMessengerInitialized) if err := _TestMessenger.contract.UnpackLog(event, "Initialized", log); err != nil { diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 5607c03a7..c14aaedee 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -2,7 +2,7 @@ src = 'src' out = 'out' libs = ['lib'] -solc_version = '0.8.18' +solc_version = '0.8.20' test = 'tests' [fmt] diff --git a/contracts/lib/openzeppelin-contracts b/contracts/lib/openzeppelin-contracts index 0457042d9..dbb6104ce 160000 --- a/contracts/lib/openzeppelin-contracts +++ b/contracts/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 0457042d93d9dfd760dbaa06a4d2f1216fdbe297 +Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 diff --git a/contracts/lib/openzeppelin-contracts-upgradeable b/contracts/lib/openzeppelin-contracts-upgradeable index 2d081f24c..723f8cab0 160000 --- a/contracts/lib/openzeppelin-contracts-upgradeable +++ b/contracts/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 2d081f24cac1a867f6f73d512f2022e1fa987854 +Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 diff --git a/contracts/remappings.txt b/contracts/remappings.txt index d55f4be13..5538e1f68 100644 --- a/contracts/remappings.txt +++ b/contracts/remappings.txt @@ -1,6 +1,6 @@ @avalabs/subnet-evm-contracts@1.2.0/=lib/subnet-evm/contracts/ -@openzeppelin/contracts@4.8.1=lib/openzeppelin-contracts/contracts/ -@openzeppelin/contracts-upgradeable@4.9.6=lib/openzeppelin-contracts-upgradeable/contracts/ +@openzeppelin/contracts@5.0.2=lib/openzeppelin-contracts/contracts/ +@openzeppelin/contracts-upgradeable@5.0.2=lib/openzeppelin-contracts-upgradeable/contracts/ @teleporter/=src/teleporter/ @mocks/=src/mocks/ @utilities/=src/utilities/ diff --git a/contracts/src/.solhint.json b/contracts/src/.solhint.json index 08cd91360..e904607bb 100644 --- a/contracts/src/.solhint.json +++ b/contracts/src/.solhint.json @@ -1,41 +1,35 @@ { - "extends": "solhint:recommended", - "rules": { - "compiler-version": [ - "error", - "0.8.18" - ], - "no-unused-vars": "error", - "func-visibility": [ - "error", - { - "ignoreConstructors": true - } - ], - "private-vars-leading-underscore": [ - "warn", - { - "strict": true - } - ], - "reason-string": [ - "warn", - { - "maxLength": 75 - } - ], - "gas-custom-errors": "off", - "ordering": "error", - "immutable-vars-naming": [ - "warn", - { - "immutablesAsConstants": false - } - ], - "func-named-parameters": [ - "error", - 5 - ], - "one-contract-per-file": "off" - } + "extends": "solhint:recommended", + "rules": { + "compiler-version": ["error", "0.8.20"], + "no-unused-vars": "error", + "func-visibility": [ + "error", + { + "ignoreConstructors": true + } + ], + "private-vars-leading-underscore": [ + "warn", + { + "strict": true + } + ], + "reason-string": [ + "warn", + { + "maxLength": 75 + } + ], + "gas-custom-errors": "off", + "ordering": "error", + "immutable-vars-naming": [ + "warn", + { + "immutablesAsConstants": false + } + ], + "func-named-parameters": ["error", 5], + "one-contract-per-file": "off" + } } diff --git a/contracts/src/governance/ValidatorSetSig.sol b/contracts/src/governance/ValidatorSetSig.sol index ca5fcc5a3..fb49759e4 100644 --- a/contracts/src/governance/ValidatorSetSig.sol +++ b/contracts/src/governance/ValidatorSetSig.sol @@ -3,13 +3,13 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { WarpMessage, IWarpMessenger } from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; -import {ReentrancyGuard} from "@openzeppelin/contracts@4.8.1/security/ReentrancyGuard.sol"; +import {ReentrancyGuard} from "@openzeppelin/contracts@5.0.2/utils/ReentrancyGuard.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. diff --git a/contracts/src/governance/tests/ValidatorSetSigTests.t.sol b/contracts/src/governance/tests/ValidatorSetSigTests.t.sol index 7add22470..d0ccb0495 100644 --- a/contracts/src/governance/tests/ValidatorSetSigTests.t.sol +++ b/contracts/src/governance/tests/ValidatorSetSigTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import { diff --git a/contracts/src/mocks/ExampleERC20.sol b/contracts/src/mocks/ExampleERC20.sol index 83853a1d8..7af3f81d4 100644 --- a/contracts/src/mocks/ExampleERC20.sol +++ b/contracts/src/mocks/ExampleERC20.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. @@ -13,7 +13,7 @@ pragma solidity 0.8.18; import { ERC20Burnable, ERC20 -} from "@openzeppelin/contracts@4.8.1/token/ERC20/extensions/ERC20Burnable.sol"; +} from "@openzeppelin/contracts@5.0.2/token/ERC20/extensions/ERC20Burnable.sol"; contract ExampleERC20 is ERC20Burnable { string private constant _TOKEN_NAME = "Mock Token"; diff --git a/contracts/src/mocks/UnitTestMockERC20.sol b/contracts/src/mocks/UnitTestMockERC20.sol index 62734f0c8..2a72861dd 100644 --- a/contracts/src/mocks/UnitTestMockERC20.sol +++ b/contracts/src/mocks/UnitTestMockERC20.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. diff --git a/contracts/src/teleporter/ITeleporterMessenger.sol b/contracts/src/teleporter/ITeleporterMessenger.sol index bc5afe8a5..3657f547c 100644 --- a/contracts/src/teleporter/ITeleporterMessenger.sol +++ b/contracts/src/teleporter/ITeleporterMessenger.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; // A message receipt identifies the message that was delivered by its nonce, // and the address that can redeem the reward for that message. diff --git a/contracts/src/teleporter/ITeleporterReceiver.sol b/contracts/src/teleporter/ITeleporterReceiver.sol index 3e9859723..891732a4d 100644 --- a/contracts/src/teleporter/ITeleporterReceiver.sol +++ b/contracts/src/teleporter/ITeleporterReceiver.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; /** * @dev Interface that cross-chain applications must implement to receive messages from Teleporter. diff --git a/contracts/src/teleporter/ReceiptQueue.sol b/contracts/src/teleporter/ReceiptQueue.sol index 788286c75..a4b29ed23 100644 --- a/contracts/src/teleporter/ReceiptQueue.sol +++ b/contracts/src/teleporter/ReceiptQueue.sol @@ -3,9 +3,9 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; -import {Math} from "@openzeppelin/contracts@4.8.1/utils/math/Math.sol"; +import {Math} from "@openzeppelin/contracts@5.0.2/utils/math/Math.sol"; import {TeleporterMessageReceipt} from "./ITeleporterMessenger.sol"; /** diff --git a/contracts/src/teleporter/TeleporterMessenger.sol b/contracts/src/teleporter/TeleporterMessenger.sol index cc1e3b08f..8624899ab 100644 --- a/contracts/src/teleporter/TeleporterMessenger.sol +++ b/contracts/src/teleporter/TeleporterMessenger.sol @@ -3,10 +3,10 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; -import {SafeERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; import { WarpMessage, IWarpMessenger @@ -424,9 +424,8 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { bytes32 blockchainID_ = blockchainID; // Iterate through the specified message IDs and create teleporter receipts to send back. - TeleporterMessageReceipt[] memory receiptsToSend = new TeleporterMessageReceipt[]( - messageIDs.length - ); + TeleporterMessageReceipt[] memory receiptsToSend = + new TeleporterMessageReceipt[](messageIDs.length); uint256 length = messageIDs.length; for (uint256 i; i < length; ++i) { bytes32 receivedMessageID = messageIDs[i]; diff --git a/contracts/src/teleporter/registry/TeleporterOwnerUpgradeable.sol b/contracts/src/teleporter/registry/TeleporterOwnerUpgradeable.sol index 4a6a913af..727ed1306 100644 --- a/contracts/src/teleporter/registry/TeleporterOwnerUpgradeable.sol +++ b/contracts/src/teleporter/registry/TeleporterOwnerUpgradeable.sol @@ -3,11 +3,11 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeable} from "./TeleporterUpgradeable.sol"; import {OwnableUpgradeable} from - "@openzeppelin/contracts-upgradeable@4.9.6/access/OwnableUpgradeable.sol"; + "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; /** * @dev Contract that inherits {TeleporterUpgradeable} and allows @@ -22,10 +22,12 @@ abstract contract TeleporterOwnerUpgradeable is TeleporterUpgradeable, OwnableUp address initialOwner ) internal onlyInitializing { __TeleporterUpgradeable_init(teleporterRegistryAddress); - __Ownable_init(); - transferOwnership(initialOwner); + __Ownable_init_unchained(initialOwner); } + // solhint-disable-next-line func-name-mixedcase, no-empty-blocks, func-name-mixedcase + function _TeleporterOwnerUpgradeable_init_unchained() internal onlyInitializing {} + /** * @dev See {TeleporterUpgradeable-_checkTeleporterUpgradeAccess} * diff --git a/contracts/src/teleporter/registry/TeleporterRegistry.sol b/contracts/src/teleporter/registry/TeleporterRegistry.sol index cb98c26b6..fbff98382 100644 --- a/contracts/src/teleporter/registry/TeleporterRegistry.sol +++ b/contracts/src/teleporter/registry/TeleporterRegistry.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {ITeleporterMessenger} from "@teleporter/ITeleporterMessenger.sol"; import { diff --git a/contracts/src/teleporter/registry/TeleporterUpgradeable.sol b/contracts/src/teleporter/registry/TeleporterUpgradeable.sol index 17987b531..1efa03dce 100644 --- a/contracts/src/teleporter/registry/TeleporterUpgradeable.sol +++ b/contracts/src/teleporter/registry/TeleporterUpgradeable.sol @@ -3,19 +3,19 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterRegistry} from "./TeleporterRegistry.sol"; import {ITeleporterReceiver} from "@teleporter/ITeleporterReceiver.sol"; import {ITeleporterMessenger, TeleporterMessageInput} from "@teleporter/ITeleporterMessenger.sol"; import {ContextUpgradeable} from - "@openzeppelin/contracts-upgradeable@4.9.6/utils/ContextUpgradeable.sol"; + "@openzeppelin/contracts-upgradeable@5.0.2/utils/ContextUpgradeable.sol"; import {ReentrancyGuardUpgradeable} from - "@openzeppelin/contracts-upgradeable@4.9.6/security/ReentrancyGuardUpgradeable.sol"; -import {SafeERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/utils/SafeERC20.sol"; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; + "@openzeppelin/contracts-upgradeable@5.0.2/utils/ReentrancyGuardUpgradeable.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; import {Initializable} from - "@openzeppelin/contracts-upgradeable@4.9.6/proxy/utils/Initializable.sol"; + "@openzeppelin/contracts-upgradeable@5.0.2/proxy/utils/Initializable.sol"; /** * @dev TeleporterUpgradeable provides upgrade utility for applications built on top @@ -35,18 +35,26 @@ abstract contract TeleporterUpgradeable is { using SafeERC20 for IERC20; - // The Teleporter registry contract manages different Teleporter contract versions. - TeleporterRegistry public teleporterRegistry; - /** - * @dev A mapping that keeps track of paused Teleporter addresses. - */ - mapping(address teleporterAddress => bool paused) private _pausedTeleporterAddresses; + // solhint-disable private-vars-leading-underscore + /// @custom:storage-location erc7201:teleporter.storage.TeleporterUpgradeable + struct TeleporterUpgradeableStorage { + // The Teleporter registry contract manages different Teleporter contract versions. + TeleporterRegistry _teleporterRegistry; + /** + * @dev A mapping that keeps track of paused Teleporter addresses. + */ + mapping(address teleporterAddress => bool paused) _pausedTeleporterAddresses; + /** + * @dev The minimum required Teleporter version that the contract is allowed + * to receive messages from. Should only be updated by `_setMinTeleporterVersion` + */ + uint256 _minTeleporterVersion; + } + // solhint-enable private-vars-leading-underscore - /** - * @dev The minimum required Teleporter version that the contract is allowed - * to receive messages from. Should only be updated by `_setMinTeleporterVersion` - */ - uint256 private _minTeleporterVersion; + // keccak256(abi.encode(uint256(keccak256("teleporter.storage.TeleporterUpgradeable")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 private constant _TELEPORTER_UPGRADEABLE_STORAGE_LOCATION = + 0xc73953669262a2bc0a821c7b2e84a2e293b7a32ca3f8016446f20efff9161600; /** * @dev Emitted when `minTeleporterVersion` is updated. @@ -65,6 +73,17 @@ abstract contract TeleporterUpgradeable is */ event TeleporterAddressUnpaused(address indexed teleporterAddress); + function _getTeleporterUpgradeableStorage() + private + pure + returns (TeleporterUpgradeableStorage storage $) + { + // solhint-disable-next-line no-inline-assembly + assembly { + $.slot := _TELEPORTER_UPGRADEABLE_STORAGE_LOCATION + } + } + /** * @dev Initializes the {TeleporterUpgradeable} contract by getting `teleporterRegistry` * instance and setting `_minTeleporterVersion`. @@ -75,15 +94,28 @@ abstract contract TeleporterUpgradeable is internal onlyInitializing { - __ReentrancyGuard_init(); + // TODO: figure out whether best practice to call ContextUpgradeable init, even though it's empty + // OZ Ownable inherits ContextUpgradeable but does not call ContextUpgradeable init + __ReentrancyGuard_init_unchained(); + __TeleporterUpgradeable_init_unchained(teleporterRegistryAddress); + } + + // solhint-disable-next-line func-name-mixedcase + function __TeleporterUpgradeable_init_unchained(address teleporterRegistryAddress) + internal + onlyInitializing + { require( teleporterRegistryAddress != address(0), "TeleporterUpgradeable: zero teleporter registry address" ); - teleporterRegistry = TeleporterRegistry(teleporterRegistryAddress); - _minTeleporterVersion = teleporterRegistry.latestVersion(); + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + TeleporterRegistry registry = TeleporterRegistry(teleporterRegistryAddress); + $._teleporterRegistry = registry; + $._minTeleporterVersion = registry.latestVersion(); } + // solhint-enable ordering /** * @dev See {ITeleporterReceiver-receiveTeleporterMessage} @@ -100,9 +132,10 @@ abstract contract TeleporterUpgradeable is address originSenderAddress, bytes calldata message ) external nonReentrant { + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); // Checks that `_msgSender()` matches a Teleporter version greater than or equal to `minTeleporterVersion`. require( - teleporterRegistry.getVersionFromAddress(_msgSender()) >= _minTeleporterVersion, + $._teleporterRegistry.getVersionFromAddress(_msgSender()) >= $._minTeleporterVersion, "TeleporterUpgradeable: invalid Teleporter sender" ); @@ -147,7 +180,8 @@ abstract contract TeleporterUpgradeable is !isTeleporterAddressPaused(teleporterAddress), "TeleporterUpgradeable: address already paused" ); - _pausedTeleporterAddresses[teleporterAddress] = true; + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + $._pausedTeleporterAddresses[teleporterAddress] = true; emit TeleporterAddressPaused(teleporterAddress); } @@ -170,15 +204,17 @@ abstract contract TeleporterUpgradeable is isTeleporterAddressPaused(teleporterAddress), "TeleporterUpgradeable: address not paused" ); + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + $._pausedTeleporterAddresses[teleporterAddress] = false; emit TeleporterAddressUnpaused(teleporterAddress); - _pausedTeleporterAddresses[teleporterAddress] = false; } /** * @dev Public getter for `_minTeleporterVersion`. */ function getMinTeleporterVersion() public view returns (uint256) { - return _minTeleporterVersion; + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + return $._minTeleporterVersion; } /** @@ -190,9 +226,9 @@ abstract contract TeleporterUpgradeable is virtual returns (bool) { - return _pausedTeleporterAddresses[teleporterAddress]; + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + return $._pausedTeleporterAddresses[teleporterAddress]; } - // solhint-enable ordering /** * @dev Sets the minimum Teleporter version allowed for delivering Teleporter messages. @@ -204,8 +240,9 @@ abstract contract TeleporterUpgradeable is * */ function _setMinTeleporterVersion(uint256 version) internal virtual { - uint256 latestTeleporterVersion = teleporterRegistry.latestVersion(); - uint256 oldMinTeleporterVersion = _minTeleporterVersion; + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + uint256 latestTeleporterVersion = $._teleporterRegistry.latestVersion(); + uint256 oldMinTeleporterVersion = $._minTeleporterVersion; require( version <= latestTeleporterVersion, "TeleporterUpgradeable: invalid Teleporter version" @@ -215,7 +252,7 @@ abstract contract TeleporterUpgradeable is "TeleporterUpgradeable: not greater than current minimum version" ); - _minTeleporterVersion = version; + $._minTeleporterVersion = version; emit MinTeleporterVersionUpdated(oldMinTeleporterVersion, version); } @@ -273,7 +310,8 @@ abstract contract TeleporterUpgradeable is * return a Teleporter messenger of a specific version. */ function _getTeleporterMessenger() internal view virtual returns (ITeleporterMessenger) { - ITeleporterMessenger teleporter = teleporterRegistry.getLatestTeleporter(); + TeleporterUpgradeableStorage storage $ = _getTeleporterUpgradeableStorage(); + ITeleporterMessenger teleporter = $._teleporterRegistry.getLatestTeleporter(); require( !isTeleporterAddressPaused(address(teleporter)), "TeleporterUpgradeable: Teleporter sending paused" diff --git a/contracts/src/teleporter/registry/tests/GetTeleporterMessengerTests.t.sol b/contracts/src/teleporter/registry/tests/GetTeleporterMessengerTests.t.sol index bea43703f..437c6fff5 100644 --- a/contracts/src/teleporter/registry/tests/GetTeleporterMessengerTests.t.sol +++ b/contracts/src/teleporter/registry/tests/GetTeleporterMessengerTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; import {ITeleporterMessenger} from "@teleporter/ITeleporterMessenger.sol"; diff --git a/contracts/src/teleporter/registry/tests/NonReentrantTests.t.sol b/contracts/src/teleporter/registry/tests/NonReentrantTests.t.sol index d887c0eda..26856804c 100644 --- a/contracts/src/teleporter/registry/tests/NonReentrantTests.t.sol +++ b/contracts/src/teleporter/registry/tests/NonReentrantTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeable} from "../TeleporterUpgradeable.sol"; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; diff --git a/contracts/src/teleporter/registry/tests/PauseTeleporterAddressTests.t.sol b/contracts/src/teleporter/registry/tests/PauseTeleporterAddressTests.t.sol index 732db81c5..34f31110e 100644 --- a/contracts/src/teleporter/registry/tests/PauseTeleporterAddressTests.t.sol +++ b/contracts/src/teleporter/registry/tests/PauseTeleporterAddressTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; import {TeleporterMessenger} from "@teleporter/TeleporterMessenger.sol"; diff --git a/contracts/src/teleporter/registry/tests/SendTeleporterMessageTests.t.sol b/contracts/src/teleporter/registry/tests/SendTeleporterMessageTests.t.sol index a0dd32d80..2dee45bac 100644 --- a/contracts/src/teleporter/registry/tests/SendTeleporterMessageTests.t.sol +++ b/contracts/src/teleporter/registry/tests/SendTeleporterMessageTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterUpgradeableTest, ExampleUpgradeableApp diff --git a/contracts/src/teleporter/registry/tests/TeleporterOwnerUpgradeableTests.t.sol b/contracts/src/teleporter/registry/tests/TeleporterOwnerUpgradeableTests.t.sol index 51a33b773..48f1c6616 100644 --- a/contracts/src/teleporter/registry/tests/TeleporterOwnerUpgradeableTests.t.sol +++ b/contracts/src/teleporter/registry/tests/TeleporterOwnerUpgradeableTests.t.sol @@ -3,11 +3,13 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterOwnerUpgradeable} from "../TeleporterOwnerUpgradeable.sol"; import {TeleporterUpgradeable} from "../TeleporterUpgradeable.sol"; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; +import {OwnableUpgradeable} from + "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; contract ExampleOwnerUpgradeableApp is TeleporterOwnerUpgradeable { function initialize( @@ -45,7 +47,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that call to update minimum Teleporter version reverts for non-owners vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.updateMinTeleporterVersion(minTeleporterVersion + 1); // Check that minimum Teleporter version was not updated @@ -63,7 +69,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that call to transfer ownership reverts for non-owners vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.transferOwnership(address(0)); // Check that ownership was not transferred @@ -71,7 +81,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that call for non owners reverts vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.updateMinTeleporterVersion(minTeleporterVersion + 1); // Check that after ownership transfer call succeeds @@ -83,14 +97,22 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that call with old owner reverts vm.prank(DEFAULT_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, DEFAULT_OWNER_ADDRESS + ) + ); ownerApp.updateMinTeleporterVersion(minTeleporterVersion + 1); } function testRenounceOwnership() public { // Check that call to renounce ownership reverts for non-owners vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.renounceOwnership(); // Check that ownership was not renounced @@ -104,9 +126,14 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that after ownership renounce call reverts vm.prank(DEFAULT_OWNER_ADDRESS); ownerApp.renounceOwnership(); - vm.expectRevert("Ownable: caller is not the owner"); + + vm.prank(DEFAULT_OWNER_ADDRESS); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, DEFAULT_OWNER_ADDRESS + ) + ); ownerApp.updateMinTeleporterVersion(latestVersion); - vm.stopPrank(); } function testPauseTeleporterAccess() public { @@ -116,7 +143,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Try to unpause the Teleporter address from non-owner account vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.unpauseTeleporterAddress(teleporterAddress); // Check that the Teleporter address is still paused @@ -136,7 +167,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { function testOwnerUpgradeAccess() public { // Check that call to check upgrade access reverts for non-owners vm.prank(MOCK_INVALID_OWNER_ADDRESS); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, MOCK_INVALID_OWNER_ADDRESS + ) + ); ownerApp.checkTeleporterUpgradeAccess(); // Check that call to check upgrade access succeeds for owners @@ -156,7 +191,11 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that address(this) as the caller is not by default owner assertFalse(newOwnerApp.owner() == address(this)); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUpgradeable.OwnableUnauthorizedAccount.selector, address(this) + ) + ); newOwnerApp.checkTeleporterUpgradeAccess(); } diff --git a/contracts/src/teleporter/registry/tests/TeleporterRegistryTests.t.sol b/contracts/src/teleporter/registry/tests/TeleporterRegistryTests.t.sol index fedff1d5f..c054de892 100644 --- a/contracts/src/teleporter/registry/tests/TeleporterRegistryTests.t.sol +++ b/contracts/src/teleporter/registry/tests/TeleporterRegistryTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import {TeleporterRegistry, ProtocolRegistryEntry} from "../TeleporterRegistry.sol"; diff --git a/contracts/src/teleporter/registry/tests/TeleporterUpgradeableTests.t.sol b/contracts/src/teleporter/registry/tests/TeleporterUpgradeableTests.t.sol index d7ff1d458..645c3825a 100644 --- a/contracts/src/teleporter/registry/tests/TeleporterUpgradeableTests.t.sol +++ b/contracts/src/teleporter/registry/tests/TeleporterUpgradeableTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeable} from "../TeleporterUpgradeable.sol"; import {TeleporterRegistryTest} from "./TeleporterRegistryTests.t.sol"; diff --git a/contracts/src/teleporter/registry/tests/UnpauseTeleporterAddressTests.t.sol b/contracts/src/teleporter/registry/tests/UnpauseTeleporterAddressTests.t.sol index 7aa0a3e5d..ef6b00585 100644 --- a/contracts/src/teleporter/registry/tests/UnpauseTeleporterAddressTests.t.sol +++ b/contracts/src/teleporter/registry/tests/UnpauseTeleporterAddressTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; import {TeleporterMessenger} from "@teleporter/TeleporterMessenger.sol"; diff --git a/contracts/src/teleporter/registry/tests/UpdateMinTeleporterVersionTests.t.sol b/contracts/src/teleporter/registry/tests/UpdateMinTeleporterVersionTests.t.sol index 43ea9bf3c..f6d990717 100644 --- a/contracts/src/teleporter/registry/tests/UpdateMinTeleporterVersionTests.t.sol +++ b/contracts/src/teleporter/registry/tests/UpdateMinTeleporterVersionTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterUpgradeableTest} from "./TeleporterUpgradeableTests.t.sol"; import {TeleporterMessenger, WarpMessage} from "@teleporter/TeleporterMessenger.sol"; diff --git a/contracts/src/teleporter/tests/AddFeeAmountTests.t.sol b/contracts/src/teleporter/tests/AddFeeAmountTests.t.sol index c9c537d6c..e003caf55 100644 --- a/contracts/src/teleporter/tests/AddFeeAmountTests.t.sol +++ b/contracts/src/teleporter/tests/AddFeeAmountTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, @@ -11,6 +11,7 @@ import { TeleporterMessageReceipt, IERC20 } from "./TeleporterMessengerTest.t.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; contract AddFeeAmountTest is TeleporterMessengerTest { // The state of the contract gets reset before each @@ -142,7 +143,11 @@ contract AddFeeAmountTest is TeleporterMessengerTest { ), abi.encode(false) ); - vm.expectRevert("SafeERC20: ERC20 operation did not succeed"); + vm.expectRevert( + abi.encodeWithSelector( + SafeERC20.SafeERC20FailedOperation.selector, address(_mockFeeAsset) + ) + ); teleporterMessenger.addFeeAmount(messageID, address(_mockFeeAsset), additionalFeeAmount); } diff --git a/contracts/src/teleporter/tests/CheckAllowedRelayerTests.t.sol b/contracts/src/teleporter/tests/CheckAllowedRelayerTests.t.sol index 44c1bb55a..e2c821b9f 100644 --- a/contracts/src/teleporter/tests/CheckAllowedRelayerTests.t.sol +++ b/contracts/src/teleporter/tests/CheckAllowedRelayerTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterMessenger} from "../TeleporterMessenger.sol"; import {Test} from "forge-std/Test.sol"; diff --git a/contracts/src/teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/teleporter/tests/FallbackReceiveTests.t.sol index 85527276f..3c4d99db9 100644 --- a/contracts/src/teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/teleporter/tests/FallbackReceiveTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/GetFeeInfoTests.t.sol b/contracts/src/teleporter/tests/GetFeeInfoTests.t.sol index 7fbf2f261..f019a1227 100644 --- a/contracts/src/teleporter/tests/GetFeeInfoTests.t.sol +++ b/contracts/src/teleporter/tests/GetFeeInfoTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterMessengerTest, TeleporterMessageReceipt} from "./TeleporterMessengerTest.t.sol"; diff --git a/contracts/src/teleporter/tests/GetMessageHashTests.t.sol b/contracts/src/teleporter/tests/GetMessageHashTests.t.sol index d8e29e614..a931c5a07 100644 --- a/contracts/src/teleporter/tests/GetMessageHashTests.t.sol +++ b/contracts/src/teleporter/tests/GetMessageHashTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/GetNextMessageIdTests.t.sol b/contracts/src/teleporter/tests/GetNextMessageIdTests.t.sol index cb81c5568..925fa9267 100644 --- a/contracts/src/teleporter/tests/GetNextMessageIdTests.t.sol +++ b/contracts/src/teleporter/tests/GetNextMessageIdTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/GetOutstandingReceiptsToSendTests.t.sol b/contracts/src/teleporter/tests/GetOutstandingReceiptsToSendTests.t.sol index 61959b826..cf77d91d4 100644 --- a/contracts/src/teleporter/tests/GetOutstandingReceiptsToSendTests.t.sol +++ b/contracts/src/teleporter/tests/GetOutstandingReceiptsToSendTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/GetRelayerRewardAddressTests.t.sol b/contracts/src/teleporter/tests/GetRelayerRewardAddressTests.t.sol index f3ca8d4e5..8b0b0a081 100644 --- a/contracts/src/teleporter/tests/GetRelayerRewardAddressTests.t.sol +++ b/contracts/src/teleporter/tests/GetRelayerRewardAddressTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterMessengerTest, TeleporterMessageReceipt} from "./TeleporterMessengerTest.t.sol"; diff --git a/contracts/src/teleporter/tests/HandleInitialMessageExecutionTests.t.sol b/contracts/src/teleporter/tests/HandleInitialMessageExecutionTests.t.sol index 239be288c..f236c1ec0 100644 --- a/contracts/src/teleporter/tests/HandleInitialMessageExecutionTests.t.sol +++ b/contracts/src/teleporter/tests/HandleInitialMessageExecutionTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/InitializeBlockchainIDTests.t.sol b/contracts/src/teleporter/tests/InitializeBlockchainIDTests.t.sol index 1ee2ac6ac..7d9aa80db 100644 --- a/contracts/src/teleporter/tests/InitializeBlockchainIDTests.t.sol +++ b/contracts/src/teleporter/tests/InitializeBlockchainIDTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import { diff --git a/contracts/src/teleporter/tests/MarkReceiptTests.t.sol b/contracts/src/teleporter/tests/MarkReceiptTests.t.sol index 14e442e57..686f2eb2e 100644 --- a/contracts/src/teleporter/tests/MarkReceiptTests.t.sol +++ b/contracts/src/teleporter/tests/MarkReceiptTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/MessageReceivedTests.t.sol b/contracts/src/teleporter/tests/MessageReceivedTests.t.sol index 7bf8a3c77..fcc1415c0 100644 --- a/contracts/src/teleporter/tests/MessageReceivedTests.t.sol +++ b/contracts/src/teleporter/tests/MessageReceivedTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterMessengerTest, TeleporterMessageReceipt} from "./TeleporterMessengerTest.t.sol"; diff --git a/contracts/src/teleporter/tests/ReceiptsQueueTests.t.sol b/contracts/src/teleporter/tests/ReceiptsQueueTests.t.sol index 8a80f94e6..a0e11a1bf 100644 --- a/contracts/src/teleporter/tests/ReceiptsQueueTests.t.sol +++ b/contracts/src/teleporter/tests/ReceiptsQueueTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import {ReceiptQueue} from "../ReceiptQueue.sol"; diff --git a/contracts/src/teleporter/tests/ReceiveCrossChainMessageTests.t.sol b/contracts/src/teleporter/tests/ReceiveCrossChainMessageTests.t.sol index 1032e846f..a7013e877 100644 --- a/contracts/src/teleporter/tests/ReceiveCrossChainMessageTests.t.sol +++ b/contracts/src/teleporter/tests/ReceiveCrossChainMessageTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/RedeemRelayerRewardsTests.t.sol b/contracts/src/teleporter/tests/RedeemRelayerRewardsTests.t.sol index 2915fe2fd..aeb5d8592 100644 --- a/contracts/src/teleporter/tests/RedeemRelayerRewardsTests.t.sol +++ b/contracts/src/teleporter/tests/RedeemRelayerRewardsTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, @@ -11,7 +11,8 @@ import { TeleporterMessageReceipt, WarpMessage } from "./TeleporterMessengerTest.t.sol"; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; contract RedeemRelayerRewardsTest is TeleporterMessengerTest { struct FeeRewardInfo { @@ -50,7 +51,11 @@ contract RedeemRelayerRewardsTest is TeleporterMessengerTest { ) ); vm.prank(feeRewardInfo.relayerRewardAddress); - vm.expectRevert("SafeERC20: ERC20 operation did not succeed"); + vm.expectRevert( + abi.encodeWithSelector( + SafeERC20.SafeERC20FailedOperation.selector, address(_mockFeeAsset) + ) + ); teleporterMessenger.redeemRelayerRewards(address(_mockFeeAsset)); // Check that the relayer still has redeemable balance since the transfer failed. diff --git a/contracts/src/teleporter/tests/ReentrancyGuardsTests.t.sol b/contracts/src/teleporter/tests/ReentrancyGuardsTests.t.sol index 4b7a586fe..65fc91b5b 100644 --- a/contracts/src/teleporter/tests/ReentrancyGuardsTests.t.sol +++ b/contracts/src/teleporter/tests/ReentrancyGuardsTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import {ReentrancyGuards} from "@utilities/ReentrancyGuards.sol"; diff --git a/contracts/src/teleporter/tests/RetryMessageExecutionTests.t.sol b/contracts/src/teleporter/tests/RetryMessageExecutionTests.t.sol index ca37c9609..dc2a97285 100644 --- a/contracts/src/teleporter/tests/RetryMessageExecutionTests.t.sol +++ b/contracts/src/teleporter/tests/RetryMessageExecutionTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/RetrySendCrossChainMessageTests.t.sol b/contracts/src/teleporter/tests/RetrySendCrossChainMessageTests.t.sol index 2f924794d..4e65876c1 100644 --- a/contracts/src/teleporter/tests/RetrySendCrossChainMessageTests.t.sol +++ b/contracts/src/teleporter/tests/RetrySendCrossChainMessageTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/SendCrossChainMessageTests.t.sol b/contracts/src/teleporter/tests/SendCrossChainMessageTests.t.sol index 69ecd319b..74dace4eb 100644 --- a/contracts/src/teleporter/tests/SendCrossChainMessageTests.t.sol +++ b/contracts/src/teleporter/tests/SendCrossChainMessageTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, @@ -13,6 +13,7 @@ import { IWarpMessenger, IERC20 } from "./TeleporterMessengerTest.t.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; contract SendCrossChainMessageTest is TeleporterMessengerTest { // The state of the contract gets reset before each @@ -171,7 +172,11 @@ contract SendCrossChainMessageTest is TeleporterMessengerTest { IERC20.transferFrom, (address(this), address(teleporterMessenger), feeAmount) ) ); - vm.expectRevert("SafeERC20: ERC20 operation did not succeed"); + vm.expectRevert( + abi.encodeWithSelector( + SafeERC20.SafeERC20FailedOperation.selector, address(_mockFeeAsset) + ) + ); teleporterMessenger.sendCrossChainMessage(messageInput); } diff --git a/contracts/src/teleporter/tests/SendSpecifiedReceiptsTests.t.sol b/contracts/src/teleporter/tests/SendSpecifiedReceiptsTests.t.sol index d99cdd615..f67113704 100644 --- a/contracts/src/teleporter/tests/SendSpecifiedReceiptsTests.t.sol +++ b/contracts/src/teleporter/tests/SendSpecifiedReceiptsTests.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import { TeleporterMessengerTest, diff --git a/contracts/src/teleporter/tests/TeleporterMessengerTest.t.sol b/contracts/src/teleporter/tests/TeleporterMessengerTest.t.sol index bf7ca783d..4f3f4487e 100644 --- a/contracts/src/teleporter/tests/TeleporterMessengerTest.t.sol +++ b/contracts/src/teleporter/tests/TeleporterMessengerTest.t.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {Test} from "forge-std/Test.sol"; import { @@ -16,7 +16,7 @@ import { WarpMessage } from "../TeleporterMessenger.sol"; import {UnitTestMockERC20} from "@mocks/UnitTestMockERC20.sol"; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; // Parent contract for TeleporterMessenger tests. Deploys a TeleporterMessenger // instance in the test setup, and provides helper methods for sending and diff --git a/contracts/src/teleporter/tests/TestMessenger.sol b/contracts/src/teleporter/tests/TestMessenger.sol index a5c928069..f7421c5a0 100644 --- a/contracts/src/teleporter/tests/TestMessenger.sol +++ b/contracts/src/teleporter/tests/TestMessenger.sol @@ -3,14 +3,14 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; import {TeleporterMessageInput, TeleporterFeeInfo} from "@teleporter/ITeleporterMessenger.sol"; import {SafeERC20TransferFrom, SafeERC20} from "@utilities/SafeERC20TransferFrom.sol"; import {TeleporterOwnerUpgradeable} from "@teleporter/registry/TeleporterOwnerUpgradeable.sol"; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; import {ReentrancyGuardUpgradeable} from - "@openzeppelin/contracts-upgradeable@4.9.6/security/ReentrancyGuardUpgradeable.sol"; + "@openzeppelin/contracts-upgradeable@5.0.2/utils/ReentrancyGuardUpgradeable.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. diff --git a/contracts/src/utilities/ReentrancyGuards.sol b/contracts/src/utilities/ReentrancyGuards.sol index da6ea28e6..0069163a8 100644 --- a/contracts/src/utilities/ReentrancyGuards.sol +++ b/contracts/src/utilities/ReentrancyGuards.sol @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; /** * @dev Abstract contract that helps implement reentrancy guards between functions for sending and receiving. diff --git a/contracts/src/utilities/SafeERC20TransferFrom.sol b/contracts/src/utilities/SafeERC20TransferFrom.sol index 6df3707c1..e48846471 100644 --- a/contracts/src/utilities/SafeERC20TransferFrom.sol +++ b/contracts/src/utilities/SafeERC20TransferFrom.sol @@ -3,10 +3,10 @@ // SPDX-License-Identifier: Ecosystem -pragma solidity 0.8.18; +pragma solidity 0.8.20; -import {IERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/IERC20.sol"; -import {SafeERC20} from "@openzeppelin/contracts@4.8.1/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; /** * @dev Provides a wrapper used for calling an ERC20 transferFrom method diff --git a/tests/flows/check_upgrade_access.go b/tests/flows/check_upgrade_access.go index d81087356..023c47dd7 100644 --- a/tests/flows/check_upgrade_access.go +++ b/tests/flows/check_upgrade_access.go @@ -53,7 +53,7 @@ func CheckUpgradeAccess(network interfaces.Network) { Expect(err).Should(BeNil()) _, err = testMessenger.PauseTeleporterAddress(nonOwnerOpts, teleporterAddress) Expect(err).ShouldNot(BeNil()) - Expect(err.Error()).Should(ContainSubstring(errCallerNotOwnerStr)) + Expect(err.Error()).Should(ContainSubstring(errTxReverted)) // Check that the teleporter address is not paused, because previous call should have failed isPaused, err := testMessenger.IsTeleporterAddressPaused(&bind.CallOpts{}, teleporterAddress) @@ -84,7 +84,7 @@ func CheckUpgradeAccess(network interfaces.Network) { // Try to call unpauseTeleporterAddress from the previous owner account _, err = testMessenger.UnpauseTeleporterAddress(ownerOpts, teleporterAddress) Expect(err).ShouldNot(BeNil()) - Expect(err.Error()).Should(ContainSubstring(errCallerNotOwnerStr)) + Expect(err.Error()).Should(ContainSubstring(errTxReverted)) // Make sure the teleporter address is still paused isPaused, err = testMessenger.IsTeleporterAddressPaused(&bind.CallOpts{}, teleporterAddress) diff --git a/tests/flows/errors.go b/tests/flows/errors.go index 2e0221970..c3efc7ec4 100644 --- a/tests/flows/errors.go +++ b/tests/flows/errors.go @@ -1,6 +1,5 @@ package flows const ( - // Error message from OpenZeppelin's Ownable.sol - errCallerNotOwnerStr = "Ownable: caller is not the owner" + errTxReverted = "execution reverted" )