From 2ba8fef6849211a08b5d77f935ec1ae173cfff83 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:03:49 +0000 Subject: [PATCH 01/12] rename sourceBlockchainID --- .../ERC20Bridge/ERC20Bridge/ERC20Bridge.go | 22 +-- .../ExampleCrossChainMessenger.go | 68 ++++---- .../ERC20TokenSource/ERC20TokenSource.go | 22 +-- .../NativeTokenDestination.go | 22 +-- .../NativeTokenSource/NativeTokenSource.go | 22 +-- .../BlockHashPublisher/BlockHashPublisher.go | 2 +- .../BlockHashReceiver/BlockHashReceiver.go | 50 +++--- .../TeleporterMessenger.go | 160 +++++++++--------- .../TeleporterRegistry/TeleporterRegistry.go | 2 +- .../examples/ERC20Bridge/ERC20Bridge.sol | 8 +- .../ExampleCrossChainMessenger.sol | 14 +- .../VerifiedBlockHash/BlockHashPublisher.sol | 2 +- .../VerifiedBlockHash/BlockHashReceiver.sol | 8 +- .../src/Teleporter/ITeleporterMessenger.sol | 24 +-- .../src/Teleporter/ITeleporterReceiver.sol | 4 +- .../src/Teleporter/TeleporterMessenger.sol | 42 ++--- .../HandleInitialMessageExecutionTests.t.sol | 14 +- .../tests/RetryMessageExecutionTests.t.sol | 50 +++--- .../tests/TeleporterMessengerTest.t.sol | 16 +- .../upgrades/TeleporterUpgradeable.sol | 6 +- .../TeleporterOwnerUpgradeableTests.t.sol | 2 +- .../tests/TeleporterUpgradeableTests.t.sol | 2 +- 22 files changed, 281 insertions(+), 281 deletions(-) diff --git a/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go b/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go index 3188350c4..ccfdf6dd1 100644 --- a/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go +++ b/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go @@ -31,8 +31,8 @@ var ( // ERC20BridgeMetaData contains all meta data concerning the ERC20Bridge contract. var ERC20BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BridgeTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"name\":\"CreateBridgeToken\",\"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\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"MintBridgeTokens\",\"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\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"}],\"name\":\"SubmitCreateBridgeToken\",\"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\":[],\"name\":\"CREATE_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_PRECOMPILE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"primaryFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFeeAmount\",\"type\":\"uint256\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"bridgedBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nativeName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nativeSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"nativeDecimals\",\"type\":\"uint8\"}],\"name\":\"encodeCreateBridgeTokenData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeMintBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeTransferBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenAddress\",\"type\":\"address\"}],\"name\":\"nativeToWrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"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\":\"originBlockchainID\",\"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\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractERC20\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messageFeeAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"messageFeeAmount\",\"type\":\"uint256\"}],\"name\":\"submitCreateBridgeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"submittedBridgeTokenCreations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"tokenCreationSubmitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeToken\",\"type\":\"address\"}],\"name\":\"wrappedTokenContracts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"bridgeTokenExists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200454338038062004543833981016040819052620000349162000212565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d919062000244565b600255506200013c33620001c0565b507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b6919062000244565b60a052506200025e565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200022557600080fd5b81516001600160a01b03811681146200023d57600080fd5b9392505050565b6000602082840312156200025757600080fd5b5051919050565b60805160a051614295620002ae6000396000818161021b01528181610b2801528181611aaf015261237a01526000818161018001528181610ddd0152818161101d015261122001526142956000f3fe60806040523480156200001157600080fd5b5060043610620001755760003560e01c80637a465fd911620000d3578063b9e55da11162000086578063b9e55da114620003b7578063c60da61214620003eb578063c63d22071462000402578063c868efaa1462000419578063d2cc7a701462000430578063f2fde38b146200043957600080fd5b80637a465fd914620002e65780638343f66114620002f15780638c56fcf014620003395780638da5cb5b14620003505780639731429714620003625780639bd9abc0146200039157600080fd5b80635f217bcc116200012c5780635f217bcc146200026357806365435568146200026e5780636b47cd9a14620002ab5780636c7e40d114620002b6578063715018a614620002cd5780637497185614620002d757600080fd5b80631a7f5bec146200017a5780632b0d8f1814620001bf578063367e958414620001d85780634511243e14620001fe5780634950d2d014620002155780635eb99514146200024c575b600080fd5b620001a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d6620001d036600462002600565b62000450565b005b620001ef620001e936600462002701565b6200055c565b604051620001b69190620027e9565b620001d66200020f36600462002600565b620005bb565b6200023d7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001b6565b620001d66200025d366004620027fe565b620006bf565b6200023d621e848081565b620001a26200027f36600462002818565b60076020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6200023d620493e081565b620001d6620002c73660046200285f565b620006d7565b620001d662000a28565b620001a26005600160991b0181565b6200023d62030d4081565b620003286200030236600462002818565b600460209081526000938452604080852082529284528284209052825290205460ff1681565b6040519015158152602001620001b6565b620001ef6200034a366004620028c1565b62000a40565b6003546001600160a01b0316620001a2565b620003286200037336600462002600565b6001600160a01b031660009081526001602052604090205460ff1690565b62000328620003a236600462002600565b60066020526000908152604090205460ff1681565b6200023d620003c836600462002818565b600560209081526000938452604080852082529284528284209052825290205481565b620001ef620003fc36600462002907565b62000a9c565b620001d66200041336600462002973565b62000b1c565b620001d66200042a366004620029e8565b62000dd0565b6002546200023d565b620001d66200044a36600462002600565b62000f93565b6200045a6200100f565b6001600160a01b0381166200048c5760405162461bcd60e51b8152600401620004839062002a78565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156200050d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840162000483565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b606060008585858560405160200162000579949392919062002ac6565b6040516020818303038152906040529050600081604051602001620005a092919062002b2b565b6040516020818303038152906040529150505b949350505050565b620005c56200100f565b6001600160a01b038116620005ee5760405162461bcd60e51b8152600401620004839062002a78565b6001600160a01b03811660009081526001602052604090205460ff166200066a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840162000483565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b620006c96200100f565b620006d48162001019565b50565b620006e1620011c0565b6001600160a01b0384166200070a5760405162461bcd60e51b8152600401620004839062002b65565b6000620007166200121b565b90506000821562000745576200072d848462001335565b9050620007456001600160a01b0385168383620014ab565b60006200088386876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200078b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007b5919081019062002c0a565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200081e919081019062002c0a565b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062002c43565b90506000836001600160a01b031663624488506040518060c001604052808c81526020018b6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001888152508152602001621e84808152602001600067ffffffffffffffff811115620008ff57620008ff62002620565b60405190808252806020026020018201604052801562000929578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162000951919062002ca9565b6020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000997919062002d2b565b60008a81526004602090815260408083206001600160a01b03808e16808652918452828520908d16808652935292819020805460ff1916600117905551929350918b907f3800d3f6af9e0e73fee531cb134766d3dae314dd340599073c396d9e5e8736bd9062000a0a9086815260200190565b60405180910390a45050505062000a216001600055565b5050505050565b62000a3262001597565b62000a3e6000620015f3565b565b6060600084848460405160200162000a5b9392919062002d45565b604051602081830303815290604052905060018160405160200162000a8292919062002b2b565b6040516020818303038152906040529150505b9392505050565b60408051602081018890526001600160a01b0387811682840152868116606080840191909152908616608083015260a0820185905260c08083018590528351808403909101815260e08301909352919062000b009060029083906101000162002b2b565b6040516020818303038152906040529150509695505050505050565b62000b26620011c0565b7f0000000000000000000000000000000000000000000000000000000000000000870362000b685760405162461bcd60e51b8152600401620004839062002d69565b6001600160a01b03841662000b915760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b03861662000bba5760405162461bcd60e51b8152600401620004839062002b65565b6001600160a01b03851660009081526006602052604090205460ff161562000ca55762000be8818362002e0a565b831162000c475760405162461bcd60e51b815260206004820152602660248201527f45524332304272696467653a20696e73756666696369656e7420746f74616c20604482015265185b5bdd5b9d60d21b606482015260840162000483565b62000c9f6040518060e00160405280898152602001886001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381525062001645565b62000dbc565b60008781526004602090815260408083206001600160a01b03808b168552908352818420908916845290915290205460ff1662000d375760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e76616c69642062726964676520746f6b656044820152686e206164647265737360b81b606482015260840162000483565b600062000d45868562001335565b905082811162000daa5760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e73756666696369656e742061646a757374604482015268195908185b5bdd5b9d60ba1b606482015260840162000483565b62000dba88888888858862001a31565b505b62000dc76001600055565b50505050505050565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000e48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6e919062002d2b565b101562000ed75760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840162000483565b62000ee23362000373565b1562000f4a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840162000483565b62000f8d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001ced92505050565b50505050565b62000f9d62001597565b6001600160a01b038116620010045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000483565b620006d481620015f3565b62000a3e62001597565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200107a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010a0919062002d2b565b60025490915081831115620011125760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840162000483565b808311620011895760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840162000483565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b600260005403620012145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000483565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a3919062002e20565b9050620012c8816001600160a01b031660009081526001602052604090205460ff1690565b15620013305760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840162000483565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a5919062002d2b565b9050620013be6001600160a01b03851633308662001e6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562001406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142c919062002d2b565b9050818111620014945760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840162000483565b620014a0828262002e40565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015620014fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001523919062002d2b565b6200152f919062002e0a565b6040516001600160a01b03851660248201526044810182905290915062000f8d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e8f565b6003546001600160a01b0316331462000a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000483565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000620016516200121b565b90506000808360a00151111562001694576200167683604001518460a0015162001335565b604084015190915062001694906001600160a01b03168383620014ab565b60008360a001518460800151620016ac919062002e40565b604085810151905163079cc67960e41b815233600482015260248101839052919250906001600160a01b038216906379cc679090604401600060405180830381600087803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b505050506000816001600160a01b031663f72539686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062002d2b565b90506000826001600160a01b0316631a0b79bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e7919062002e20565b9050818760000151036200182d57806001600160a01b031687602001516001600160a01b0316146200182d5760405162461bcd60e51b8152600401620004839062002e56565b6000620018b388600001518960200151866001600160a01b03166374d32ad46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062002e20565b8b60600151898d60c0015162000a9c565b90506000876001600160a01b031663624488506040518060c00160405280878152602001866001600160a01b0316815260200160405180604001604052808e604001516001600160a01b031681526020018c8152508152602001620493e08152602001600067ffffffffffffffff81111562001933576200193362002620565b6040519080825280602002602001820160405280156200195d578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001985919062002ca9565b6020604051808303816000875af1158015620019a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cb919062002d2b565b90508089600001518a604001516001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c602001518d606001518b60405162001a1e9392919062002d45565b60405180910390a4505050505050505050565b6001600160a01b03841660009081526006602052604090205460ff161562001aad5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2063616e6e6f742062726964676520777261707060448201526732b2103a37b5b2b760c11b606482015260840162000483565b7f0000000000000000000000000000000000000000000000000000000000000000860362001aef5760405162461bcd60e51b8152600401620004839062002d69565b600062001afb6200121b565b9050811562001b1a5762001b1a6001600160a01b0386168284620014ab565b600062001b28838562002e40565b60008981526005602090815260408083206001600160a01b03808d168552908352818420908b16845290915281208054929350839290919062001b6d90849062002e0a565b909155506000905062001b8287878462000a40565b90506000836001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b031681526020018a815250815260200162030d408152602001600067ffffffffffffffff81111562001bfe5762001bfe62002620565b60405190808252806020026020018201604052801562001c28578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001c50919062002ca9565b6020604051808303816000875af115801562001c70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c96919062002d2b565b9050808a896001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c8b8860405162001cd99392919062002d45565b60405180910390a450505050505050505050565b6000808280602001905181019062001d06919062002ea5565b9092509050600082600281111562001d225762001d2262002b15565b0362001d66576000806000808480602001905181019062001d44919062002f14565b935093509350935062001d5c89898686868662001f6d565b5050505062000a21565b600182600281111562001d7d5762001d7d62002b15565b0362001dbc5760008060008380602001905181019062001d9e919062002f9e565b92509250925062001db38888858585620020dc565b50505062000a21565b600282600281111562001dd35762001dd362002b15565b0362001e22576000806000806000808680602001905181019062001df8919062002fe6565b95509550955095509550955062001e168b8b88888888888862002256565b50505050505062000a21565b60405162461bcd60e51b815260206004820152601b60248201527f45524332304272696467653a20696e76616c696420616374696f6e0000000000604482015260640162000483565b62000f8d846323b872dd60e01b8585856040516024016200155f9392919062002d45565b600062001ee6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200240f9092919063ffffffff16565b80519091501562001f68578080602001905181019062001f07919062003056565b62001f685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000483565b505050565b60008681526007602090815260408083206001600160a01b038981168552908352818420888216855290925290912054161562001ffe5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20616c72656164604482015267792065786973747360c01b606482015260840162000483565b60008686868686866040516200201490620025dc565b62002025969594939291906200307a565b604051809103906000f08015801562002042573d6000803e3d6000fd5b506001600160a01b038181166000818152600660209081526040808320805460ff191660011790558c8352600782528083208c8616808552908352818420958c168085529583529281902080546001600160a01b031916851790555192835293945091928a917fe1c61a845f79534e11924517ddbedc668d0c20e467eafb4d3bd2858e2815f3b5910160405180910390a450505050505050565b620020e6620011c0565b6001600160a01b0382166200210f5760405162461bcd60e51b8152600401620004839062002db1565b60008581526007602090815260408083206001600160a01b0380891685529083528184208782168552909252909120541680620021a05760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20646f6573206e6044820152671bdd08195e1a5cdd60c21b606482015260840162000483565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528216906340c10f1990604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050604080516001600160a01b03878116825260208201879052851693507fc0767f158f0d5394b598489a51ed607cd55a8be2dcef113ba1626efcf4c6395492500160405180910390a25062000a216001600055565b62002260620011c0565b6001600160a01b038316620022895760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b038516620022b25760405162461bcd60e51b8152600401620004839062002b65565b60008881526005602090815260408083206001600160a01b03808c1685529083528184209088168452909152902054828110156200233d5760405162461bcd60e51b815260206004820152602160248201527f45524332304272696467653a20696e73756666696369656e742062616c616e636044820152606560f81b606482015260840162000483565b62002349838262002e40565b60008a81526005602090815260408083206001600160a01b03808e168552908352818420908a1684529091529020557f00000000000000000000000000000000000000000000000000000000000000008703620023e8576001600160a01b0386163014620023cb5760405162461bcd60e51b8152600401620004839062002e56565b620023e16001600160a01b038616858562002420565b50620023fa565b620023f887878787878762001a31565b505b620024056001600055565b5050505050505050565b6060620005b3848460008562002452565b6040516001600160a01b03831660248201526044810182905262001f6890849063a9059cbb60e01b906064016200155f565b606082471015620024b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000483565b600080866001600160a01b03168587604051620024d39190620030d9565b60006040518083038185875af1925050503d806000811462002512576040519150601f19603f3d011682016040523d82523d6000602084013e62002517565b606091505b50915091506200252a8783838762002535565b979650505050505050565b60608315620025a9578251600003620025a1576001600160a01b0385163b620025a15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000483565b5081620005b3565b620005b38383815115620025c05781518083602001fd5b8060405162461bcd60e51b8152600401620004839190620027e9565b61116880620030f883390190565b6001600160a01b0381168114620006d457600080fd5b6000602082840312156200261357600080fd5b813562000a9581620025ea565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002662576200266262002620565b604052919050565b600067ffffffffffffffff82111562002687576200268762002620565b50601f01601f191660200190565b600082601f830112620026a757600080fd5b8135620026be620026b8826200266a565b62002636565b818152846020838601011115620026d457600080fd5b816020850160208301376000918101602001919091529392505050565b60ff81168114620006d457600080fd5b600080600080608085870312156200271857600080fd5b84356200272581620025ea565b9350602085013567ffffffffffffffff808211156200274357600080fd5b620027518883890162002695565b945060408701359150808211156200276857600080fd5b50620027778782880162002695565b92505060608501356200278a81620026f1565b939692955090935050565b60005b83811015620027b257818101518382015260200162002798565b50506000910152565b60008151808452620027d581602086016020860162002795565b601f01601f19169290920160200192915050565b60208152600062000a956020830184620027bb565b6000602082840312156200281157600080fd5b5035919050565b6000806000606084860312156200282e57600080fd5b8335925060208401356200284281620025ea565b915060408401356200285481620025ea565b809150509250925092565b600080600080600060a086880312156200287857600080fd5b8535945060208601356200288c81620025ea565b935060408601356200289e81620025ea565b92506060860135620028b081620025ea565b949793965091946080013592915050565b600080600060608486031215620028d757600080fd5b8335620028e481620025ea565b92506020840135620028f681620025ea565b929592945050506040919091013590565b60008060008060008060c087890312156200292157600080fd5b8635955060208701356200293581620025ea565b945060408701356200294781620025ea565b935060608701356200295981620025ea565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156200298f57600080fd5b873596506020880135620029a381620025ea565b95506040880135620029b581620025ea565b94506060880135620029c781620025ea565b9699959850939660808101359560a0820135955060c0909101359350915050565b60008060008060608587031215620029ff57600080fd5b84359350602085013562002a1381620025ea565b9250604085013567ffffffffffffffff8082111562002a3157600080fd5b818701915087601f83011262002a4657600080fd5b81358181111562002a5657600080fd5b88602082850101111562002a6957600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b6001600160a01b038516815260806020820181905260009062002aec90830186620027bb565b828103604084015262002b008186620027bb565b91505060ff8316606083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b60006003841062002b4c57634e487b7160e01b600052602160045260246000fd5b83825260406020830152620005b36040830184620027bb565b6020808252602c908201527f45524332304272696467653a207a65726f2064657374696e6174696f6e20627260408201526b69646765206164647265737360a01b606082015260800190565b600062002bc2620026b8846200266a565b905082815283838301111562002bd757600080fd5b62000a9583602083018462002795565b600082601f83011262002bf957600080fd5b62000a958383516020850162002bb1565b60006020828403121562002c1d57600080fd5b815167ffffffffffffffff81111562002c3557600080fd5b620005b38482850162002be7565b60006020828403121562002c5657600080fd5b815162000a9581620026f1565b600081518084526020808501945080840160005b8381101562002c9e5781516001600160a01b03168752958201959082019060010162002c77565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015262002d0c61010084018262002c63565b905060a0840151601f198483030160e0850152620014a08282620027bb565b60006020828403121562002d3e57600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526028908201527f45524332304272696467653a2063616e6e6f742062726964676520746f20736160408201526736b29031b430b4b760c11b606082015260800190565b60208082526023908201527f45524332304272696467653a207a65726f20726563697069656e74206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620014a557620014a562002df4565b60006020828403121562002e3357600080fd5b815162000a9581620025ea565b81810381811115620014a557620014a562002df4565b6020808252602f908201527f45524332304272696467653a20696e76616c69642064657374696e6174696f6e60408201526e20627269646765206164647265737360881b606082015260800190565b6000806040838503121562002eb957600080fd5b82516003811062002ec957600080fd5b602084015190925067ffffffffffffffff81111562002ee757600080fd5b8301601f8101851362002ef957600080fd5b62002f0a8582516020840162002bb1565b9150509250929050565b6000806000806080858703121562002f2b57600080fd5b845162002f3881620025ea565b602086015190945067ffffffffffffffff8082111562002f5757600080fd5b62002f658883890162002be7565b9450604087015191508082111562002f7c57600080fd5b5062002f8b8782880162002be7565b92505060608501516200278a81620026f1565b60008060006060848603121562002fb457600080fd5b835162002fc181620025ea565b602085015190935062002fd481620025ea565b80925050604084015190509250925092565b60008060008060008060c087890312156200300057600080fd5b8651955060208701516200301481620025ea565b60408801519095506200302781620025ea565b60608801519094506200303a81620025ea565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200306957600080fd5b8151801515811462000a9557600080fd5b8681526001600160a01b0386811660208301528516604082015260c060608201819052600090620030ae90830186620027bb565b8281036080840152620030c28186620027bb565b91505060ff831660a0830152979650505050505050565b60008251620030ed81846020870162002795565b919091019291505056fe6101206040523480156200001257600080fd5b506040516200116838038062001168833981016040819052620000359162000292565b82826003620000458382620003d5565b506004620000548282620003d5565b50879150620000b690505760405162461bcd60e51b815260206004820152602160248201527f427269646765546f6b656e3a207a65726f20736f7572636520636861696e20696044820152601960fa1b60648201526084015b60405180910390fd5b6001600160a01b0385166200011e5760405162461bcd60e51b815260206004820152602760248201527f427269646765546f6b656e3a207a65726f20736f7572636520627269646765206044820152666164647265737360c81b6064820152608401620000ad565b6001600160a01b038416620001855760405162461bcd60e51b815260206004820152602660248201527f427269646765546f6b656e3a207a65726f20736f75726365206173736574206160448201526564647265737360d01b6064820152608401620000ad565b3360805260a09590955250506001600160a01b0391821660c0521660e05260ff1661010052620004a1565b80516001600160a01b0381168114620001c857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f557600080fd5b81516001600160401b0380821115620002125762000212620001cd565b604051601f8301601f19908116603f011681019082821181831017156200023d576200023d620001cd565b816040528381526020925086838588010111156200025a57600080fd5b600091505b838210156200027e57858201830151818301840152908201906200025f565b600093810190920192909252949350505050565b60008060008060008060c08789031215620002ac57600080fd5b86519550620002be60208801620001b0565b9450620002ce60408801620001b0565b60608801519094506001600160401b0380821115620002ec57600080fd5b620002fa8a838b01620001e3565b945060808901519150808211156200031157600080fd5b506200032089828a01620001e3565b92505060a087015160ff811681146200033857600080fd5b809150509295509295509295565b600181811c908216806200035b57607f821691505b6020821081036200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d057600081815260208120601f850160051c81016020861015620003ab5750805b601f850160051c820191505b81811015620003cc57828155600101620003b7565b5050505b505050565b81516001600160401b03811115620003f157620003f1620001cd565b620004098162000402845462000346565b8462000382565b602080601f831160018114620004415760008415620004285750858301515b600019600386901b1c1916600185901b178555620003cc565b600085815260208120601f198616915b82811015620004725788860151825594840194600190910190840162000451565b5085821015620004915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610c7b620004ed60003960006101c70152600061025a01526000610173015260006102fc0152600081816102c2015261041b0152610c7b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610297578063a9059cbb146102aa578063cd596583146102bd578063dd62ed3e146102e4578063f7253968146102f757600080fd5b806370a082311461022c57806374d32ad41461025557806379cc67901461027c57806395d89b411461028f57600080fd5b806323b872dd116100e957806323b872dd146101ad578063313ce567146101c057806339509351146101f157806340c10f191461020457806342966c681461021957600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c5780631a0b79bf1461016e575b600080fd5b61012361031e565b6040516101309190610aac565b60405180910390f35b61014c610147366004610b16565b6103b0565b6040519015158152602001610130565b6002545b604051908152602001610130565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c6101bb366004610b40565b6103ca565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610130565b61014c6101ff366004610b16565b6103ee565b610217610212366004610b16565b610410565b005b610217610227366004610b7c565b61049b565b61016061023a366004610b95565b6001600160a01b031660009081526020819052604090205490565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b61021761028a366004610b16565b6104a8565b6101236104bd565b61014c6102a5366004610b16565b6104cc565b61014c6102b8366004610b16565b610547565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6101606102f2366004610bb7565b610555565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461032d90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461035990610bea565b80156103a65780601f1061037b576101008083540402835291602001916103a6565b820191906000526020600020905b81548152906001019060200180831161038957829003601f168201915b5050505050905090565b6000336103be818585610580565b60019150505b92915050565b6000336103d88582856106a5565b6103e385858561071f565b506001949350505050565b6000336103be8185856104018383610555565b61040b9190610c24565b610580565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461048d5760405162461bcd60e51b815260206004820152601960248201527f427269646765546f6b656e3a20756e617574686f72697a65640000000000000060448201526064015b60405180910390fd5b61049782826108c3565b5050565b6104a53382610982565b50565b6104b38233836106a5565b6104978282610982565b60606004805461032d90610bea565b600033816104da8286610555565b90508381101561053a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610484565b6103e38286868403610580565b6000336103be81858561071f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166106435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006106b18484610555565b90506000198114610719578181101561070c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610484565b6107198484848403610580565b50505050565b6001600160a01b0383166107835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b0382166107e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b0383166000908152602081905260409020548181101561085d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610484565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610719565b6001600160a01b0382166109195760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610484565b806002600082825461092b9190610c24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610484565b6001600160a01b03821660009081526020819052604090205481811015610a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610484565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610698565b600060208083528351808285015260005b81811015610ad957858101830151858201604001528201610abd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b1157600080fd5b919050565b60008060408385031215610b2957600080fd5b610b3283610afa565b946020939093013593505050565b600080600060608486031215610b5557600080fd5b610b5e84610afa565b9250610b6c60208501610afa565b9150604084013590509250925092565b600060208284031215610b8e57600080fd5b5035919050565b600060208284031215610ba757600080fd5b610bb082610afa565b9392505050565b60008060408385031215610bca57600080fd5b610bd383610afa565b9150610be160208401610afa565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103c457634e487b7160e01b600052601160045260246000fdfea264697066735822122006690182a743c0253aa6f387a5d058ee9eff125f5ef030c538f31f1c0cdf4c1564736f6c63430008120033a26469706673582212201bad9848538368a45f04b99856b99f8e096455e204276ae1734db8135965b9f464736f6c63430008120033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BridgeTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"name\":\"CreateBridgeToken\",\"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\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"MintBridgeTokens\",\"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\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"}],\"name\":\"SubmitCreateBridgeToken\",\"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\":[],\"name\":\"CREATE_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_PRECOMPILE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"primaryFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFeeAmount\",\"type\":\"uint256\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"bridgedBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nativeName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nativeSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"nativeDecimals\",\"type\":\"uint8\"}],\"name\":\"encodeCreateBridgeTokenData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeMintBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeTransferBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenAddress\",\"type\":\"address\"}],\"name\":\"nativeToWrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"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\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractERC20\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messageFeeAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"messageFeeAmount\",\"type\":\"uint256\"}],\"name\":\"submitCreateBridgeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"submittedBridgeTokenCreations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"tokenCreationSubmitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeToken\",\"type\":\"address\"}],\"name\":\"wrappedTokenContracts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"bridgeTokenExists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200454338038062004543833981016040819052620000349162000212565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d919062000244565b600255506200013c33620001c0565b507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b6919062000244565b60a052506200025e565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200022557600080fd5b81516001600160a01b03811681146200023d57600080fd5b9392505050565b6000602082840312156200025757600080fd5b5051919050565b60805160a051614295620002ae6000396000818161021b01528181610b2801528181611aaf015261237a01526000818161018001528181610ddd0152818161101d015261122001526142956000f3fe60806040523480156200001157600080fd5b5060043610620001755760003560e01c80637a465fd911620000d3578063b9e55da11162000086578063b9e55da114620003b7578063c60da61214620003eb578063c63d22071462000402578063c868efaa1462000419578063d2cc7a701462000430578063f2fde38b146200043957600080fd5b80637a465fd914620002e65780638343f66114620002f15780638c56fcf014620003395780638da5cb5b14620003505780639731429714620003625780639bd9abc0146200039157600080fd5b80635f217bcc116200012c5780635f217bcc146200026357806365435568146200026e5780636b47cd9a14620002ab5780636c7e40d114620002b6578063715018a614620002cd5780637497185614620002d757600080fd5b80631a7f5bec146200017a5780632b0d8f1814620001bf578063367e958414620001d85780634511243e14620001fe5780634950d2d014620002155780635eb99514146200024c575b600080fd5b620001a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d6620001d036600462002600565b62000450565b005b620001ef620001e936600462002701565b6200055c565b604051620001b69190620027e9565b620001d66200020f36600462002600565b620005bb565b6200023d7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001b6565b620001d66200025d366004620027fe565b620006bf565b6200023d621e848081565b620001a26200027f36600462002818565b60076020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6200023d620493e081565b620001d6620002c73660046200285f565b620006d7565b620001d662000a28565b620001a26005600160991b0181565b6200023d62030d4081565b620003286200030236600462002818565b600460209081526000938452604080852082529284528284209052825290205460ff1681565b6040519015158152602001620001b6565b620001ef6200034a366004620028c1565b62000a40565b6003546001600160a01b0316620001a2565b620003286200037336600462002600565b6001600160a01b031660009081526001602052604090205460ff1690565b62000328620003a236600462002600565b60066020526000908152604090205460ff1681565b6200023d620003c836600462002818565b600560209081526000938452604080852082529284528284209052825290205481565b620001ef620003fc36600462002907565b62000a9c565b620001d66200041336600462002973565b62000b1c565b620001d66200042a366004620029e8565b62000dd0565b6002546200023d565b620001d66200044a36600462002600565b62000f93565b6200045a6200100f565b6001600160a01b0381166200048c5760405162461bcd60e51b8152600401620004839062002a78565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156200050d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840162000483565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b606060008585858560405160200162000579949392919062002ac6565b6040516020818303038152906040529050600081604051602001620005a092919062002b2b565b6040516020818303038152906040529150505b949350505050565b620005c56200100f565b6001600160a01b038116620005ee5760405162461bcd60e51b8152600401620004839062002a78565b6001600160a01b03811660009081526001602052604090205460ff166200066a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840162000483565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b620006c96200100f565b620006d48162001019565b50565b620006e1620011c0565b6001600160a01b0384166200070a5760405162461bcd60e51b8152600401620004839062002b65565b6000620007166200121b565b90506000821562000745576200072d848462001335565b9050620007456001600160a01b0385168383620014ab565b60006200088386876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200078b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007b5919081019062002c0a565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200081e919081019062002c0a565b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062002c43565b90506000836001600160a01b031663624488506040518060c001604052808c81526020018b6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001888152508152602001621e84808152602001600067ffffffffffffffff811115620008ff57620008ff62002620565b60405190808252806020026020018201604052801562000929578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162000951919062002ca9565b6020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000997919062002d2b565b60008a81526004602090815260408083206001600160a01b03808e16808652918452828520908d16808652935292819020805460ff1916600117905551929350918b907f3800d3f6af9e0e73fee531cb134766d3dae314dd340599073c396d9e5e8736bd9062000a0a9086815260200190565b60405180910390a45050505062000a216001600055565b5050505050565b62000a3262001597565b62000a3e6000620015f3565b565b6060600084848460405160200162000a5b9392919062002d45565b604051602081830303815290604052905060018160405160200162000a8292919062002b2b565b6040516020818303038152906040529150505b9392505050565b60408051602081018890526001600160a01b0387811682840152868116606080840191909152908616608083015260a0820185905260c08083018590528351808403909101815260e08301909352919062000b009060029083906101000162002b2b565b6040516020818303038152906040529150509695505050505050565b62000b26620011c0565b7f0000000000000000000000000000000000000000000000000000000000000000870362000b685760405162461bcd60e51b8152600401620004839062002d69565b6001600160a01b03841662000b915760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b03861662000bba5760405162461bcd60e51b8152600401620004839062002b65565b6001600160a01b03851660009081526006602052604090205460ff161562000ca55762000be8818362002e0a565b831162000c475760405162461bcd60e51b815260206004820152602660248201527f45524332304272696467653a20696e73756666696369656e7420746f74616c20604482015265185b5bdd5b9d60d21b606482015260840162000483565b62000c9f6040518060e00160405280898152602001886001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381525062001645565b62000dbc565b60008781526004602090815260408083206001600160a01b03808b168552908352818420908916845290915290205460ff1662000d375760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e76616c69642062726964676520746f6b656044820152686e206164647265737360b81b606482015260840162000483565b600062000d45868562001335565b905082811162000daa5760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e73756666696369656e742061646a757374604482015268195908185b5bdd5b9d60ba1b606482015260840162000483565b62000dba88888888858862001a31565b505b62000dc76001600055565b50505050505050565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000e48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6e919062002d2b565b101562000ed75760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840162000483565b62000ee23362000373565b1562000f4a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840162000483565b62000f8d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001ced92505050565b50505050565b62000f9d62001597565b6001600160a01b038116620010045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000483565b620006d481620015f3565b62000a3e62001597565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200107a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010a0919062002d2b565b60025490915081831115620011125760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840162000483565b808311620011895760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840162000483565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b600260005403620012145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000483565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a3919062002e20565b9050620012c8816001600160a01b031660009081526001602052604090205460ff1690565b15620013305760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840162000483565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a5919062002d2b565b9050620013be6001600160a01b03851633308662001e6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562001406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142c919062002d2b565b9050818111620014945760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840162000483565b620014a0828262002e40565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015620014fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001523919062002d2b565b6200152f919062002e0a565b6040516001600160a01b03851660248201526044810182905290915062000f8d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e8f565b6003546001600160a01b0316331462000a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000483565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000620016516200121b565b90506000808360a00151111562001694576200167683604001518460a0015162001335565b604084015190915062001694906001600160a01b03168383620014ab565b60008360a001518460800151620016ac919062002e40565b604085810151905163079cc67960e41b815233600482015260248101839052919250906001600160a01b038216906379cc679090604401600060405180830381600087803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b505050506000816001600160a01b031663f72539686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062002d2b565b90506000826001600160a01b0316631a0b79bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e7919062002e20565b9050818760000151036200182d57806001600160a01b031687602001516001600160a01b0316146200182d5760405162461bcd60e51b8152600401620004839062002e56565b6000620018b388600001518960200151866001600160a01b03166374d32ad46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062002e20565b8b60600151898d60c0015162000a9c565b90506000876001600160a01b031663624488506040518060c00160405280878152602001866001600160a01b0316815260200160405180604001604052808e604001516001600160a01b031681526020018c8152508152602001620493e08152602001600067ffffffffffffffff81111562001933576200193362002620565b6040519080825280602002602001820160405280156200195d578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001985919062002ca9565b6020604051808303816000875af1158015620019a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cb919062002d2b565b90508089600001518a604001516001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c602001518d606001518b60405162001a1e9392919062002d45565b60405180910390a4505050505050505050565b6001600160a01b03841660009081526006602052604090205460ff161562001aad5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2063616e6e6f742062726964676520777261707060448201526732b2103a37b5b2b760c11b606482015260840162000483565b7f0000000000000000000000000000000000000000000000000000000000000000860362001aef5760405162461bcd60e51b8152600401620004839062002d69565b600062001afb6200121b565b9050811562001b1a5762001b1a6001600160a01b0386168284620014ab565b600062001b28838562002e40565b60008981526005602090815260408083206001600160a01b03808d168552908352818420908b16845290915281208054929350839290919062001b6d90849062002e0a565b909155506000905062001b8287878462000a40565b90506000836001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b031681526020018a815250815260200162030d408152602001600067ffffffffffffffff81111562001bfe5762001bfe62002620565b60405190808252806020026020018201604052801562001c28578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001c50919062002ca9565b6020604051808303816000875af115801562001c70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c96919062002d2b565b9050808a896001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c8b8860405162001cd99392919062002d45565b60405180910390a450505050505050505050565b6000808280602001905181019062001d06919062002ea5565b9092509050600082600281111562001d225762001d2262002b15565b0362001d66576000806000808480602001905181019062001d44919062002f14565b935093509350935062001d5c89898686868662001f6d565b5050505062000a21565b600182600281111562001d7d5762001d7d62002b15565b0362001dbc5760008060008380602001905181019062001d9e919062002f9e565b92509250925062001db38888858585620020dc565b50505062000a21565b600282600281111562001dd35762001dd362002b15565b0362001e22576000806000806000808680602001905181019062001df8919062002fe6565b95509550955095509550955062001e168b8b88888888888862002256565b50505050505062000a21565b60405162461bcd60e51b815260206004820152601b60248201527f45524332304272696467653a20696e76616c696420616374696f6e0000000000604482015260640162000483565b62000f8d846323b872dd60e01b8585856040516024016200155f9392919062002d45565b600062001ee6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200240f9092919063ffffffff16565b80519091501562001f68578080602001905181019062001f07919062003056565b62001f685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000483565b505050565b60008681526007602090815260408083206001600160a01b038981168552908352818420888216855290925290912054161562001ffe5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20616c72656164604482015267792065786973747360c01b606482015260840162000483565b60008686868686866040516200201490620025dc565b62002025969594939291906200307a565b604051809103906000f08015801562002042573d6000803e3d6000fd5b506001600160a01b038181166000818152600660209081526040808320805460ff191660011790558c8352600782528083208c8616808552908352818420958c168085529583529281902080546001600160a01b031916851790555192835293945091928a917fe1c61a845f79534e11924517ddbedc668d0c20e467eafb4d3bd2858e2815f3b5910160405180910390a450505050505050565b620020e6620011c0565b6001600160a01b0382166200210f5760405162461bcd60e51b8152600401620004839062002db1565b60008581526007602090815260408083206001600160a01b0380891685529083528184208782168552909252909120541680620021a05760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20646f6573206e6044820152671bdd08195e1a5cdd60c21b606482015260840162000483565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528216906340c10f1990604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050604080516001600160a01b03878116825260208201879052851693507fc0767f158f0d5394b598489a51ed607cd55a8be2dcef113ba1626efcf4c6395492500160405180910390a25062000a216001600055565b62002260620011c0565b6001600160a01b038316620022895760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b038516620022b25760405162461bcd60e51b8152600401620004839062002b65565b60008881526005602090815260408083206001600160a01b03808c1685529083528184209088168452909152902054828110156200233d5760405162461bcd60e51b815260206004820152602160248201527f45524332304272696467653a20696e73756666696369656e742062616c616e636044820152606560f81b606482015260840162000483565b62002349838262002e40565b60008a81526005602090815260408083206001600160a01b03808e168552908352818420908a1684529091529020557f00000000000000000000000000000000000000000000000000000000000000008703620023e8576001600160a01b0386163014620023cb5760405162461bcd60e51b8152600401620004839062002e56565b620023e16001600160a01b038616858562002420565b50620023fa565b620023f887878787878762001a31565b505b620024056001600055565b5050505050505050565b6060620005b3848460008562002452565b6040516001600160a01b03831660248201526044810182905262001f6890849063a9059cbb60e01b906064016200155f565b606082471015620024b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000483565b600080866001600160a01b03168587604051620024d39190620030d9565b60006040518083038185875af1925050503d806000811462002512576040519150601f19603f3d011682016040523d82523d6000602084013e62002517565b606091505b50915091506200252a8783838762002535565b979650505050505050565b60608315620025a9578251600003620025a1576001600160a01b0385163b620025a15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000483565b5081620005b3565b620005b38383815115620025c05781518083602001fd5b8060405162461bcd60e51b8152600401620004839190620027e9565b61116880620030f883390190565b6001600160a01b0381168114620006d457600080fd5b6000602082840312156200261357600080fd5b813562000a9581620025ea565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002662576200266262002620565b604052919050565b600067ffffffffffffffff82111562002687576200268762002620565b50601f01601f191660200190565b600082601f830112620026a757600080fd5b8135620026be620026b8826200266a565b62002636565b818152846020838601011115620026d457600080fd5b816020850160208301376000918101602001919091529392505050565b60ff81168114620006d457600080fd5b600080600080608085870312156200271857600080fd5b84356200272581620025ea565b9350602085013567ffffffffffffffff808211156200274357600080fd5b620027518883890162002695565b945060408701359150808211156200276857600080fd5b50620027778782880162002695565b92505060608501356200278a81620026f1565b939692955090935050565b60005b83811015620027b257818101518382015260200162002798565b50506000910152565b60008151808452620027d581602086016020860162002795565b601f01601f19169290920160200192915050565b60208152600062000a956020830184620027bb565b6000602082840312156200281157600080fd5b5035919050565b6000806000606084860312156200282e57600080fd5b8335925060208401356200284281620025ea565b915060408401356200285481620025ea565b809150509250925092565b600080600080600060a086880312156200287857600080fd5b8535945060208601356200288c81620025ea565b935060408601356200289e81620025ea565b92506060860135620028b081620025ea565b949793965091946080013592915050565b600080600060608486031215620028d757600080fd5b8335620028e481620025ea565b92506020840135620028f681620025ea565b929592945050506040919091013590565b60008060008060008060c087890312156200292157600080fd5b8635955060208701356200293581620025ea565b945060408701356200294781620025ea565b935060608701356200295981620025ea565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156200298f57600080fd5b873596506020880135620029a381620025ea565b95506040880135620029b581620025ea565b94506060880135620029c781620025ea565b9699959850939660808101359560a0820135955060c0909101359350915050565b60008060008060608587031215620029ff57600080fd5b84359350602085013562002a1381620025ea565b9250604085013567ffffffffffffffff8082111562002a3157600080fd5b818701915087601f83011262002a4657600080fd5b81358181111562002a5657600080fd5b88602082850101111562002a6957600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b6001600160a01b038516815260806020820181905260009062002aec90830186620027bb565b828103604084015262002b008186620027bb565b91505060ff8316606083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b60006003841062002b4c57634e487b7160e01b600052602160045260246000fd5b83825260406020830152620005b36040830184620027bb565b6020808252602c908201527f45524332304272696467653a207a65726f2064657374696e6174696f6e20627260408201526b69646765206164647265737360a01b606082015260800190565b600062002bc2620026b8846200266a565b905082815283838301111562002bd757600080fd5b62000a9583602083018462002795565b600082601f83011262002bf957600080fd5b62000a958383516020850162002bb1565b60006020828403121562002c1d57600080fd5b815167ffffffffffffffff81111562002c3557600080fd5b620005b38482850162002be7565b60006020828403121562002c5657600080fd5b815162000a9581620026f1565b600081518084526020808501945080840160005b8381101562002c9e5781516001600160a01b03168752958201959082019060010162002c77565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015262002d0c61010084018262002c63565b905060a0840151601f198483030160e0850152620014a08282620027bb565b60006020828403121562002d3e57600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526028908201527f45524332304272696467653a2063616e6e6f742062726964676520746f20736160408201526736b29031b430b4b760c11b606082015260800190565b60208082526023908201527f45524332304272696467653a207a65726f20726563697069656e74206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620014a557620014a562002df4565b60006020828403121562002e3357600080fd5b815162000a9581620025ea565b81810381811115620014a557620014a562002df4565b6020808252602f908201527f45524332304272696467653a20696e76616c69642064657374696e6174696f6e60408201526e20627269646765206164647265737360881b606082015260800190565b6000806040838503121562002eb957600080fd5b82516003811062002ec957600080fd5b602084015190925067ffffffffffffffff81111562002ee757600080fd5b8301601f8101851362002ef957600080fd5b62002f0a8582516020840162002bb1565b9150509250929050565b6000806000806080858703121562002f2b57600080fd5b845162002f3881620025ea565b602086015190945067ffffffffffffffff8082111562002f5757600080fd5b62002f658883890162002be7565b9450604087015191508082111562002f7c57600080fd5b5062002f8b8782880162002be7565b92505060608501516200278a81620026f1565b60008060006060848603121562002fb457600080fd5b835162002fc181620025ea565b602085015190935062002fd481620025ea565b80925050604084015190509250925092565b60008060008060008060c087890312156200300057600080fd5b8651955060208701516200301481620025ea565b60408801519095506200302781620025ea565b60608801519094506200303a81620025ea565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200306957600080fd5b8151801515811462000a9557600080fd5b8681526001600160a01b0386811660208301528516604082015260c060608201819052600090620030ae90830186620027bb565b8281036080840152620030c28186620027bb565b91505060ff831660a0830152979650505050505050565b60008251620030ed81846020870162002795565b919091019291505056fe6101206040523480156200001257600080fd5b506040516200116838038062001168833981016040819052620000359162000292565b82826003620000458382620003d5565b506004620000548282620003d5565b50879150620000b690505760405162461bcd60e51b815260206004820152602160248201527f427269646765546f6b656e3a207a65726f20736f7572636520636861696e20696044820152601960fa1b60648201526084015b60405180910390fd5b6001600160a01b0385166200011e5760405162461bcd60e51b815260206004820152602760248201527f427269646765546f6b656e3a207a65726f20736f7572636520627269646765206044820152666164647265737360c81b6064820152608401620000ad565b6001600160a01b038416620001855760405162461bcd60e51b815260206004820152602660248201527f427269646765546f6b656e3a207a65726f20736f75726365206173736574206160448201526564647265737360d01b6064820152608401620000ad565b3360805260a09590955250506001600160a01b0391821660c0521660e05260ff1661010052620004a1565b80516001600160a01b0381168114620001c857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f557600080fd5b81516001600160401b0380821115620002125762000212620001cd565b604051601f8301601f19908116603f011681019082821181831017156200023d576200023d620001cd565b816040528381526020925086838588010111156200025a57600080fd5b600091505b838210156200027e57858201830151818301840152908201906200025f565b600093810190920192909252949350505050565b60008060008060008060c08789031215620002ac57600080fd5b86519550620002be60208801620001b0565b9450620002ce60408801620001b0565b60608801519094506001600160401b0380821115620002ec57600080fd5b620002fa8a838b01620001e3565b945060808901519150808211156200031157600080fd5b506200032089828a01620001e3565b92505060a087015160ff811681146200033857600080fd5b809150509295509295509295565b600181811c908216806200035b57607f821691505b6020821081036200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d057600081815260208120601f850160051c81016020861015620003ab5750805b601f850160051c820191505b81811015620003cc57828155600101620003b7565b5050505b505050565b81516001600160401b03811115620003f157620003f1620001cd565b620004098162000402845462000346565b8462000382565b602080601f831160018114620004415760008415620004285750858301515b600019600386901b1c1916600185901b178555620003cc565b600085815260208120601f198616915b82811015620004725788860151825594840194600190910190840162000451565b5085821015620004915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610c7b620004ed60003960006101c70152600061025a01526000610173015260006102fc0152600081816102c2015261041b0152610c7b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610297578063a9059cbb146102aa578063cd596583146102bd578063dd62ed3e146102e4578063f7253968146102f757600080fd5b806370a082311461022c57806374d32ad41461025557806379cc67901461027c57806395d89b411461028f57600080fd5b806323b872dd116100e957806323b872dd146101ad578063313ce567146101c057806339509351146101f157806340c10f191461020457806342966c681461021957600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c5780631a0b79bf1461016e575b600080fd5b61012361031e565b6040516101309190610aac565b60405180910390f35b61014c610147366004610b16565b6103b0565b6040519015158152602001610130565b6002545b604051908152602001610130565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c6101bb366004610b40565b6103ca565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610130565b61014c6101ff366004610b16565b6103ee565b610217610212366004610b16565b610410565b005b610217610227366004610b7c565b61049b565b61016061023a366004610b95565b6001600160a01b031660009081526020819052604090205490565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b61021761028a366004610b16565b6104a8565b6101236104bd565b61014c6102a5366004610b16565b6104cc565b61014c6102b8366004610b16565b610547565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6101606102f2366004610bb7565b610555565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461032d90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461035990610bea565b80156103a65780601f1061037b576101008083540402835291602001916103a6565b820191906000526020600020905b81548152906001019060200180831161038957829003601f168201915b5050505050905090565b6000336103be818585610580565b60019150505b92915050565b6000336103d88582856106a5565b6103e385858561071f565b506001949350505050565b6000336103be8185856104018383610555565b61040b9190610c24565b610580565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461048d5760405162461bcd60e51b815260206004820152601960248201527f427269646765546f6b656e3a20756e617574686f72697a65640000000000000060448201526064015b60405180910390fd5b61049782826108c3565b5050565b6104a53382610982565b50565b6104b38233836106a5565b6104978282610982565b60606004805461032d90610bea565b600033816104da8286610555565b90508381101561053a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610484565b6103e38286868403610580565b6000336103be81858561071f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166106435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006106b18484610555565b90506000198114610719578181101561070c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610484565b6107198484848403610580565b50505050565b6001600160a01b0383166107835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b0382166107e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b0383166000908152602081905260409020548181101561085d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610484565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610719565b6001600160a01b0382166109195760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610484565b806002600082825461092b9190610c24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610484565b6001600160a01b03821660009081526020819052604090205481811015610a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610484565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610698565b600060208083528351808285015260005b81811015610ad957858101830151858201604001528201610abd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b1157600080fd5b919050565b60008060408385031215610b2957600080fd5b610b3283610afa565b946020939093013593505050565b600080600060608486031215610b5557600080fd5b610b5e84610afa565b9250610b6c60208501610afa565b9150604084013590509250925092565b600060208284031215610b8e57600080fd5b5035919050565b600060208284031215610ba757600080fd5b610bb082610afa565b9392505050565b60008060408385031215610bca57600080fd5b610bd383610afa565b9150610be160208401610afa565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103c457634e487b7160e01b600052601160045260246000fdfea264697066735822122006690182a743c0253aa6f387a5d058ee9eff125f5ef030c538f31f1c0cdf4c1564736f6c63430008120033a26469706673582212200c30673250d43b193bdd76c945a1bb8ee2290f16b0932f2b660c075a566b3fe564736f6c63430008120033", } // ERC20BridgeABI is the input ABI used to generate the binding from. @@ -742,23 +742,23 @@ func (_ERC20Bridge *ERC20BridgeTransactorSession) PauseTeleporterAddress(telepor // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20Bridge *ERC20BridgeTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20Bridge.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20Bridge *ERC20BridgeTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20Bridge.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20Bridge *ERC20BridgeSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20Bridge.Contract.ReceiveTeleporterMessage(&_ERC20Bridge.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20Bridge *ERC20BridgeSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20Bridge.Contract.ReceiveTeleporterMessage(&_ERC20Bridge.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20Bridge *ERC20BridgeTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20Bridge.Contract.ReceiveTeleporterMessage(&_ERC20Bridge.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20Bridge *ERC20BridgeTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20Bridge.Contract.ReceiveTeleporterMessage(&_ERC20Bridge.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. diff --git a/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go b/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go index 389032ac8..370816520 100644 --- a/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go +++ b/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go @@ -31,8 +31,8 @@ var ( // ExampleCrossChainMessengerMetaData contains all meta data concerning the ExampleCrossChainMessenger contract. var ExampleCrossChainMessengerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"originBlockchainID\",\"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\":\"originBlockchainID\",\"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\":\"originBlockchainID\",\"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: "0x60a06040523480156200001157600080fd5b5060405162001abd38038062001abd833981016040819052620000349162000196565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d9190620001c8565b600255506200013c3362000144565b5050620001e2565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215620001a957600080fd5b81516001600160a01b0381168114620001c157600080fd5b9392505050565b600060208284031215620001db57600080fd5b5051919050565b6080516118ab620002126000396000818160be01528181610508015281816108fb0152610c5901526118ab6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806397314297116100715780639731429714610151578063b33fead41461018d578063c868efaa146101ae578063d2cc7a70146101c1578063f2fde38b146101d3578063f63d09d7146101e657600080fd5b80631a7f5bec146100b95780632b0d8f18146100fd5780634511243e146101125780635eb9951414610125578063715018a6146101385780638da5cb5b14610140575b600080fd5b6100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61011061010b36600461125b565b6101f9565b005b61011061012036600461125b565b6102fe565b61011061013336600461127f565b6103fb565b61011061040f565b6003546001600160a01b03166100e0565b61017d61015f36600461125b565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100f4565b6101a061019b36600461127f565b610423565b6040516100f49291906112e8565b6101106101bc366004611355565b6104fb565b6002545b6040519081526020016100f4565b6101106101e136600461125b565b6106b3565b6101c56101f43660046113b1565b610729565b6102016108ef565b6001600160a01b0381166102305760405162461bcd60e51b815260040161022790611437565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610227565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103066108ef565b6001600160a01b03811661032c5760405162461bcd60e51b815260040161022790611437565b6001600160a01b03811660009081526001602052604090205460ff166103a65760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610227565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b6104036108ef565b61040c816108f7565b50565b610417610a97565b6104216000610af1565b565b6000818152600460209081526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161046390611485565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90611485565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059691906114bf565b10156105fd5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610227565b6106063361015f565b1561066c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610227565b6106ad848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4392505050565b50505050565b6106bb610a97565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610227565b61040c81610af1565b6000610733610bfb565b600061073d610c54565b905060008615610767576107518888610d68565b90506107676001600160a01b0389168383610ed2565b886001600160a01b03168a7fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8a848a8a8a6040516107a9959493929190611501565b60405180910390a3816001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b03168152602001868152508152602001898152602001600067ffffffffffffffff8111156108235761082361152f565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5081526020018888604051602001610865929190611545565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610893919061159d565b6020604051808303816000875af11580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906114bf565b925050506108e46001600055565b979650505050505050565b610421610a97565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906114bf565b600254909150818311156109eb5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610227565b808311610a605760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610227565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146104215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610227565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081806020019051810190610b59919061161b565b6040805180820182526001600160a01b038681168252602080830185815260008a81526004909252939020825181546001600160a01b03191692169190911781559151929350916001820190610baf908261170b565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bed91906117cb565b60405180910390a350505050565b600260005403610c4d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610227565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906117de565b9050610cfd816001600160a01b031660009081526001602052604090205460ff1690565b15610d635760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610227565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906114bf565b9050610dec6001600160a01b038516333086610fb7565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5791906114bf565b9050818111610ebd5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610227565b610ec78282611811565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4791906114bf565b610f519190611824565b6040516001600160a01b0385166024820152604481018290529091506106ad90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fef565b6040516001600160a01b03808516602483015283166044820152606481018290526106ad9085906323b872dd60e01b90608401610f80565b6000611044826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110c69092919063ffffffff16565b8051909150156110c157808060200190518101906110629190611837565b6110c15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610227565b505050565b60606110d584846000856110dd565b949350505050565b60608247101561113e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610227565b600080866001600160a01b0316858760405161115a9190611859565b60006040518083038185875af1925050503d8060008114611197576040519150601f19603f3d011682016040523d82523d6000602084013e61119c565b606091505b50915091506108e48783838760608315611217578251600003611210576001600160a01b0385163b6112105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610227565b50816110d5565b6110d5838381511561122c5781518083602001fd5b8060405162461bcd60e51b815260040161022791906117cb565b6001600160a01b038116811461040c57600080fd5b60006020828403121561126d57600080fd5b813561127881611246565b9392505050565b60006020828403121561129157600080fd5b5035919050565b60005b838110156112b357818101518382015260200161129b565b50506000910152565b600081518084526112d4816020860160208601611298565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906110d5908301846112bc565b60008083601f84011261131e57600080fd5b50813567ffffffffffffffff81111561133657600080fd5b60208301915083602082850101111561134e57600080fd5b9250929050565b6000806000806060858703121561136b57600080fd5b84359350602085013561137d81611246565b9250604085013567ffffffffffffffff81111561139957600080fd5b6113a58782880161130c565b95989497509550505050565b600080600080600080600060c0888a0312156113cc57600080fd5b8735965060208801356113de81611246565b955060408801356113ee81611246565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561141857600080fd5b6114248a828b0161130c565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061149957607f821691505b6020821081036114b957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156114d157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03861681528460208201528360408201526080606082015260006108e46080830184866114d8565b634e487b7160e01b600052604160045260246000fd5b6020815260006110d56020830184866114d8565b600081518084526020808501945080840160005b838110156115925781516001600160a01b03168752958201959082019060010161156d565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526115fe610100840182611559565b905060a0840151601f198483030160e0850152610ec782826112bc565b60006020828403121561162d57600080fd5b815167ffffffffffffffff8082111561164557600080fd5b818401915084601f83011261165957600080fd5b81518181111561166b5761166b61152f565b604051601f8201601f19908116603f011681019083821181831017156116935761169361152f565b816040528281528760208487010111156116ac57600080fd5b6108e4836020830160208801611298565b601f8211156110c157600081815260208120601f850160051c810160208610156116e45750805b601f850160051c820191505b81811015611703578281556001016116f0565b505050505050565b815167ffffffffffffffff8111156117255761172561152f565b611739816117338454611485565b846116bd565b602080601f83116001811461176e57600084156117565750858301515b600019600386901b1c1916600185901b178555611703565b600085815260208120601f198616915b8281101561179d5788860151825594840194600190910190840161177e565b50858210156117bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600061127860208301846112bc565b6000602082840312156117f057600080fd5b815161127881611246565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ecc57610ecc6117fb565b80820180821115610ecc57610ecc6117fb565b60006020828403121561184957600080fd5b8151801515811461127857600080fd5b6000825161186b818460208701611298565b919091019291505056fea264697066735822122085cca9724b2f9a34ace38053d9a18fbdc5e6fb087c3cb23729a3104f12ff763264736f6c63430008120033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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: "0x60a06040523480156200001157600080fd5b5060405162001abd38038062001abd833981016040819052620000349162000196565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d9190620001c8565b600255506200013c3362000144565b5050620001e2565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215620001a957600080fd5b81516001600160a01b0381168114620001c157600080fd5b9392505050565b600060208284031215620001db57600080fd5b5051919050565b6080516118ab620002126000396000818160be01528181610508015281816108fb0152610c5901526118ab6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806397314297116100715780639731429714610151578063b33fead41461018d578063c868efaa146101ae578063d2cc7a70146101c1578063f2fde38b146101d3578063f63d09d7146101e657600080fd5b80631a7f5bec146100b95780632b0d8f18146100fd5780634511243e146101125780635eb9951414610125578063715018a6146101385780638da5cb5b14610140575b600080fd5b6100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61011061010b36600461125b565b6101f9565b005b61011061012036600461125b565b6102fe565b61011061013336600461127f565b6103fb565b61011061040f565b6003546001600160a01b03166100e0565b61017d61015f36600461125b565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100f4565b6101a061019b36600461127f565b610423565b6040516100f49291906112e8565b6101106101bc366004611355565b6104fb565b6002545b6040519081526020016100f4565b6101106101e136600461125b565b6106b3565b6101c56101f43660046113b1565b610729565b6102016108ef565b6001600160a01b0381166102305760405162461bcd60e51b815260040161022790611437565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610227565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103066108ef565b6001600160a01b03811661032c5760405162461bcd60e51b815260040161022790611437565b6001600160a01b03811660009081526001602052604090205460ff166103a65760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610227565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b6104036108ef565b61040c816108f7565b50565b610417610a97565b6104216000610af1565b565b6000818152600460209081526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161046390611485565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90611485565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059691906114bf565b10156105fd5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610227565b6106063361015f565b1561066c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610227565b6106ad848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4392505050565b50505050565b6106bb610a97565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610227565b61040c81610af1565b6000610733610bfb565b600061073d610c54565b905060008615610767576107518888610d68565b90506107676001600160a01b0389168383610ed2565b886001600160a01b03168a7fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8a848a8a8a6040516107a9959493929190611501565b60405180910390a3816001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b03168152602001868152508152602001898152602001600067ffffffffffffffff8111156108235761082361152f565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5081526020018888604051602001610865929190611545565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610893919061159d565b6020604051808303816000875af11580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906114bf565b925050506108e46001600055565b979650505050505050565b610421610a97565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906114bf565b600254909150818311156109eb5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610227565b808311610a605760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610227565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146104215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610227565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081806020019051810190610b59919061161b565b6040805180820182526001600160a01b038681168252602080830185815260008a81526004909252939020825181546001600160a01b03191692169190911781559151929350916001820190610baf908261170b565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bed91906117cb565b60405180910390a350505050565b600260005403610c4d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610227565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906117de565b9050610cfd816001600160a01b031660009081526001602052604090205460ff1690565b15610d635760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610227565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906114bf565b9050610dec6001600160a01b038516333086610fb7565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5791906114bf565b9050818111610ebd5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610227565b610ec78282611811565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4791906114bf565b610f519190611824565b6040516001600160a01b0385166024820152604481018290529091506106ad90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fef565b6040516001600160a01b03808516602483015283166044820152606481018290526106ad9085906323b872dd60e01b90608401610f80565b6000611044826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110c69092919063ffffffff16565b8051909150156110c157808060200190518101906110629190611837565b6110c15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610227565b505050565b60606110d584846000856110dd565b949350505050565b60608247101561113e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610227565b600080866001600160a01b0316858760405161115a9190611859565b60006040518083038185875af1925050503d8060008114611197576040519150601f19603f3d011682016040523d82523d6000602084013e61119c565b606091505b50915091506108e48783838760608315611217578251600003611210576001600160a01b0385163b6112105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610227565b50816110d5565b6110d5838381511561122c5781518083602001fd5b8060405162461bcd60e51b815260040161022791906117cb565b6001600160a01b038116811461040c57600080fd5b60006020828403121561126d57600080fd5b813561127881611246565b9392505050565b60006020828403121561129157600080fd5b5035919050565b60005b838110156112b357818101518382015260200161129b565b50506000910152565b600081518084526112d4816020860160208601611298565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906110d5908301846112bc565b60008083601f84011261131e57600080fd5b50813567ffffffffffffffff81111561133657600080fd5b60208301915083602082850101111561134e57600080fd5b9250929050565b6000806000806060858703121561136b57600080fd5b84359350602085013561137d81611246565b9250604085013567ffffffffffffffff81111561139957600080fd5b6113a58782880161130c565b95989497509550505050565b600080600080600080600060c0888a0312156113cc57600080fd5b8735965060208801356113de81611246565b955060408801356113ee81611246565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561141857600080fd5b6114248a828b0161130c565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061149957607f821691505b6020821081036114b957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156114d157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03861681528460208201528360408201526080606082015260006108e46080830184866114d8565b634e487b7160e01b600052604160045260246000fd5b6020815260006110d56020830184866114d8565b600081518084526020808501945080840160005b838110156115925781516001600160a01b03168752958201959082019060010161156d565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526115fe610100840182611559565b905060a0840151601f198483030160e0850152610ec782826112bc565b60006020828403121561162d57600080fd5b815167ffffffffffffffff8082111561164557600080fd5b818401915084601f83011261165957600080fd5b81518181111561166b5761166b61152f565b604051601f8201601f19908116603f011681019083821181831017156116935761169361152f565b816040528281528760208487010111156116ac57600080fd5b6108e4836020830160208801611298565b601f8211156110c157600081815260208120601f850160051c810160208610156116e45750805b601f850160051c820191505b81811015611703578281556001016116f0565b505050505050565b815167ffffffffffffffff8111156117255761172561152f565b611739816117338454611485565b846116bd565b602080601f83116001811461176e57600084156117565750858301515b600019600386901b1c1916600185901b178555611703565b600085815260208120601f198616915b8281101561179d5788860151825594840194600190910190840161177e565b50858210156117bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600061127860208301846112bc565b6000602082840312156117f057600080fd5b815161127881611246565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ecc57610ecc6117fb565b80820180821115610ecc57610ecc6117fb565b60006020828403121561184957600080fd5b8151801515811461127857600080fd5b6000825161186b818460208701611298565b919091019291505056fea2646970667358221220eb85f988c7aa3be2efed3c580f13fd9b32d9e9bc5ec15fc96ec6ea0a80ae641264736f6c63430008120033", } // ExampleCrossChainMessengerABI is the input ABI used to generate the binding from. @@ -204,10 +204,10 @@ func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactorRaw) Tran // GetCurrentMessage is a free data retrieval call binding the contract method 0xb33fead4. // -// Solidity: function getCurrentMessage(bytes32 originBlockchainID) view returns(address, string) -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerCaller) GetCurrentMessage(opts *bind.CallOpts, originBlockchainID [32]byte) (common.Address, string, error) { +// Solidity: function getCurrentMessage(bytes32 sourceBlockchainID) view returns(address, string) +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerCaller) GetCurrentMessage(opts *bind.CallOpts, sourceBlockchainID [32]byte) (common.Address, string, error) { var out []interface{} - err := _ExampleCrossChainMessenger.contract.Call(opts, &out, "getCurrentMessage", originBlockchainID) + err := _ExampleCrossChainMessenger.contract.Call(opts, &out, "getCurrentMessage", sourceBlockchainID) if err != nil { return *new(common.Address), *new(string), err @@ -222,16 +222,16 @@ func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerCaller) GetCurrentM // GetCurrentMessage is a free data retrieval call binding the contract method 0xb33fead4. // -// Solidity: function getCurrentMessage(bytes32 originBlockchainID) view returns(address, string) -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerSession) GetCurrentMessage(originBlockchainID [32]byte) (common.Address, string, error) { - return _ExampleCrossChainMessenger.Contract.GetCurrentMessage(&_ExampleCrossChainMessenger.CallOpts, originBlockchainID) +// Solidity: function getCurrentMessage(bytes32 sourceBlockchainID) view returns(address, string) +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerSession) GetCurrentMessage(sourceBlockchainID [32]byte) (common.Address, string, error) { + return _ExampleCrossChainMessenger.Contract.GetCurrentMessage(&_ExampleCrossChainMessenger.CallOpts, sourceBlockchainID) } // GetCurrentMessage is a free data retrieval call binding the contract method 0xb33fead4. // -// Solidity: function getCurrentMessage(bytes32 originBlockchainID) view returns(address, string) -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerCallerSession) GetCurrentMessage(originBlockchainID [32]byte) (common.Address, string, error) { - return _ExampleCrossChainMessenger.Contract.GetCurrentMessage(&_ExampleCrossChainMessenger.CallOpts, originBlockchainID) +// Solidity: function getCurrentMessage(bytes32 sourceBlockchainID) view returns(address, string) +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerCallerSession) GetCurrentMessage(sourceBlockchainID [32]byte) (common.Address, string, error) { + return _ExampleCrossChainMessenger.Contract.GetCurrentMessage(&_ExampleCrossChainMessenger.CallOpts, sourceBlockchainID) } // GetMinTeleporterVersion is a free data retrieval call binding the contract method 0xd2cc7a70. @@ -381,23 +381,23 @@ func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactorSession) // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ExampleCrossChainMessenger.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ExampleCrossChainMessenger.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ExampleCrossChainMessenger.Contract.ReceiveTeleporterMessage(&_ExampleCrossChainMessenger.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ExampleCrossChainMessenger.Contract.ReceiveTeleporterMessage(&_ExampleCrossChainMessenger.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ExampleCrossChainMessenger.Contract.ReceiveTeleporterMessage(&_ExampleCrossChainMessenger.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ExampleCrossChainMessenger.Contract.ReceiveTeleporterMessage(&_ExampleCrossChainMessenger.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -880,7 +880,7 @@ func (it *ExampleCrossChainMessengerReceiveMessageIterator) Close() error { // ExampleCrossChainMessengerReceiveMessage represents a ReceiveMessage event raised by the ExampleCrossChainMessenger contract. type ExampleCrossChainMessengerReceiveMessage struct { - OriginBlockchainID [32]byte + SourceBlockchainID [32]byte OriginSenderAddress common.Address Message string Raw types.Log // Blockchain specific contextual infos @@ -888,19 +888,19 @@ type ExampleCrossChainMessengerReceiveMessage struct { // FilterReceiveMessage is a free log retrieval operation binding the contract event 0x1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa. // -// Solidity: event ReceiveMessage(bytes32 indexed originBlockchainID, address indexed originSenderAddress, string message) -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) FilterReceiveMessage(opts *bind.FilterOpts, originBlockchainID [][32]byte, originSenderAddress []common.Address) (*ExampleCrossChainMessengerReceiveMessageIterator, error) { +// Solidity: event ReceiveMessage(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, string message) +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) FilterReceiveMessage(opts *bind.FilterOpts, sourceBlockchainID [][32]byte, originSenderAddress []common.Address) (*ExampleCrossChainMessengerReceiveMessageIterator, error) { - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var originSenderAddressRule []interface{} for _, originSenderAddressItem := range originSenderAddress { originSenderAddressRule = append(originSenderAddressRule, originSenderAddressItem) } - logs, sub, err := _ExampleCrossChainMessenger.contract.FilterLogs(opts, "ReceiveMessage", originBlockchainIDRule, originSenderAddressRule) + logs, sub, err := _ExampleCrossChainMessenger.contract.FilterLogs(opts, "ReceiveMessage", sourceBlockchainIDRule, originSenderAddressRule) if err != nil { return nil, err } @@ -909,19 +909,19 @@ func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) FilterRec // WatchReceiveMessage is a free log subscription operation binding the contract event 0x1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa. // -// Solidity: event ReceiveMessage(bytes32 indexed originBlockchainID, address indexed originSenderAddress, string message) -func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) WatchReceiveMessage(opts *bind.WatchOpts, sink chan<- *ExampleCrossChainMessengerReceiveMessage, originBlockchainID [][32]byte, originSenderAddress []common.Address) (event.Subscription, error) { +// Solidity: event ReceiveMessage(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, string message) +func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) WatchReceiveMessage(opts *bind.WatchOpts, sink chan<- *ExampleCrossChainMessengerReceiveMessage, sourceBlockchainID [][32]byte, originSenderAddress []common.Address) (event.Subscription, error) { - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var originSenderAddressRule []interface{} for _, originSenderAddressItem := range originSenderAddress { originSenderAddressRule = append(originSenderAddressRule, originSenderAddressItem) } - logs, sub, err := _ExampleCrossChainMessenger.contract.WatchLogs(opts, "ReceiveMessage", originBlockchainIDRule, originSenderAddressRule) + logs, sub, err := _ExampleCrossChainMessenger.contract.WatchLogs(opts, "ReceiveMessage", sourceBlockchainIDRule, originSenderAddressRule) if err != nil { return nil, err } @@ -955,7 +955,7 @@ func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) WatchRece // ParseReceiveMessage is a log parse operation binding the contract event 0x1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa. // -// Solidity: event ReceiveMessage(bytes32 indexed originBlockchainID, address indexed originSenderAddress, string message) +// Solidity: event ReceiveMessage(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, string message) func (_ExampleCrossChainMessenger *ExampleCrossChainMessengerFilterer) ParseReceiveMessage(log types.Log) (*ExampleCrossChainMessengerReceiveMessage, error) { event := new(ExampleCrossChainMessengerReceiveMessage) if err := _ExampleCrossChainMessenger.contract.UnpackLog(event, "ReceiveMessage", log); err != nil { diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go index fec29d323..9e9a3e67c 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go @@ -31,8 +31,8 @@ var ( // ERC20TokenSourceMetaData contains all meta data concerning the ERC20TokenSource contract. var ERC20TokenSourceMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20ContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20ContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"originBlockchainID\",\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"transferToDestination\",\"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: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea2646970667358221220322c0629f43a11ad3ae3cae8e214d9623fe75d386c7d1e443fe9626f900014ff64736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20ContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20ContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"transferToDestination\",\"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: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea26469706673582212202d34a35b43901de6e551572c9fee078a14e3567ae6a9fc2399b2b5680a0a622c64736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", } // ERC20TokenSourceABI is the input ABI used to generate the binding from. @@ -535,23 +535,23 @@ func (_ERC20TokenSource *ERC20TokenSourceTransactorSession) PauseTeleporterAddre // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20TokenSource *ERC20TokenSourceTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20TokenSource.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20TokenSource *ERC20TokenSourceTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20TokenSource.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20TokenSource *ERC20TokenSourceSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20TokenSource.Contract.ReceiveTeleporterMessage(&_ERC20TokenSource.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20TokenSource *ERC20TokenSourceSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20TokenSource.Contract.ReceiveTeleporterMessage(&_ERC20TokenSource.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_ERC20TokenSource *ERC20TokenSourceTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _ERC20TokenSource.Contract.ReceiveTeleporterMessage(&_ERC20TokenSource.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_ERC20TokenSource *ERC20TokenSourceTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _ERC20TokenSource.Contract.ReceiveTeleporterMessage(&_ERC20TokenSource.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go index 0c55b7cc0..c9f0089e9 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go @@ -37,8 +37,8 @@ type TeleporterFeeInfo struct { // NativeTokenDestinationMetaData contains all meta data concerning the NativeTokenDestination contract. var NativeTokenDestinationMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenSourceAddress_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"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\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensMinted\",\"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\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnAddressBalance\",\"type\":\"uint256\"}],\"name\":\"ReportTotalBurnedTxFees\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToSource\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPORT_BURNED_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"nativeTokenSourceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"originBlockchainID\",\"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\":[{\"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\":\"reportTotalBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToSource\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea264697066735822122032b685aa587c7dc9ef9f30a58239b5441bf223a40fee77be04a7f497a3bcef4a64736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenSourceAddress_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"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\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensMinted\",\"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\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnAddressBalance\",\"type\":\"uint256\"}],\"name\":\"ReportTotalBurnedTxFees\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToSource\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPORT_BURNED_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"nativeTokenSourceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"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\":\"reportTotalBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToSource\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea2646970667358221220d4d6bcd64fc309a947629ef01285af204550795c5b2e88b295406e8e727feea464736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", } // NativeTokenDestinationABI is the input ABI used to generate the binding from. @@ -727,23 +727,23 @@ func (_NativeTokenDestination *NativeTokenDestinationTransactorSession) PauseTel // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenDestination *NativeTokenDestinationTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenDestination.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenDestination *NativeTokenDestinationTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenDestination.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenDestination *NativeTokenDestinationSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenDestination.Contract.ReceiveTeleporterMessage(&_NativeTokenDestination.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenDestination *NativeTokenDestinationSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenDestination.Contract.ReceiveTeleporterMessage(&_NativeTokenDestination.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenDestination *NativeTokenDestinationTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenDestination.Contract.ReceiveTeleporterMessage(&_NativeTokenDestination.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenDestination *NativeTokenDestinationTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenDestination.Contract.ReceiveTeleporterMessage(&_NativeTokenDestination.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go index 6ec108eed..b8c0e9983 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go @@ -37,8 +37,8 @@ type TeleporterFeeInfo struct { // NativeTokenSourceMetaData contains all meta data concerning the NativeTokenSource contract. var NativeTokenSourceMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"originBlockchainID\",\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToDestination\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea264697066735822122090b3f0004092cde8830ec84081c06d3f12ad4e436beaa7a047f1a66f03202ae564736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToDestination\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea264697066735822122046979d97626c306edb2e31c005ec54f57d271f72ded049930f1b94992965cbb664736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", } // NativeTokenSourceABI is the input ABI used to generate the binding from. @@ -510,23 +510,23 @@ func (_NativeTokenSource *NativeTokenSourceTransactorSession) PauseTeleporterAdd // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenSource *NativeTokenSourceTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenSource.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenSource *NativeTokenSourceTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenSource.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenSource *NativeTokenSourceSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenSource.Contract.ReceiveTeleporterMessage(&_NativeTokenSource.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenSource *NativeTokenSourceSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenSource.Contract.ReceiveTeleporterMessage(&_NativeTokenSource.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_NativeTokenSource *NativeTokenSourceTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _NativeTokenSource.Contract.ReceiveTeleporterMessage(&_NativeTokenSource.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_NativeTokenSource *NativeTokenSourceTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _NativeTokenSource.Contract.ReceiveTeleporterMessage(&_NativeTokenSource.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. diff --git a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go index c8cffdfb8..ff2c3dc3c 100644 --- a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go +++ b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go @@ -32,7 +32,7 @@ var ( // BlockHashPublisherMetaData contains all meta data concerning the BlockHashPublisher contract. var BlockHashPublisherMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"PublishBlockHash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"RECEIVE_BLOCK_HASH_REQUIRED_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"}],\"name\":\"publishLatestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b506040516105cf3803806105cf83398101604081905261002f916100c0565b6001600160a01b0381166100af5760405162461bcd60e51b815260206004820152603460248201527f426c6f636b486173685075626c69736865723a207a65726f2074656c65706f7260448201527f7465722072656769737472792061646472657373000000000000000000000000606482015260840160405180910390fd5b6001600160a01b03166080526100f0565b6000602082840312156100d257600080fd5b81516001600160a01b03811681146100e957600080fd5b9392505050565b6080516104be610111600039600081816068015261012701526104be6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806318aef19b146100465780631a7f5bec1461006357806382ab2b86146100a2575b600080fd5b610050620249f081565b6040519081526020015b60405180910390f35b61008a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005a565b6100506100b03660046102d3565b6000806100be600143610303565b6040805160208101839052824081830181905282518083038401815260608301938490529281905292935083906001600160a01b0387169088907fe13623d33d18131ce960c33b1282ceac1fe7b5ccfcf7f8c0f6dad32dd61e3bdd9060800160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a79190610324565b6001600160a01b031663624488506040518060c00160405280898152602001886001600160a01b03168152602001604051806040016040528060006001600160a01b0316815260200160008152508152602001620249f08152602001600067ffffffffffffffff81111561021d5761021d610348565b604051908082528060200260200182016040528015610246578160200160208202803683370190505b508152602001848152506040518263ffffffff1660e01b815260040161026c91906103e8565b6020604051808303816000875af115801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af919061046f565b93505050505b92915050565b6001600160a01b03811681146102d057600080fd5b50565b600080604083850312156102e657600080fd5b8235915060208301356102f8816102bb565b809150509250929050565b818103818111156102b557634e487b7160e01b600052601160045260246000fd5b60006020828403121561033657600080fd5b8151610341816102bb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156103975781516001600160a01b031687529582019590820190600101610372565b509495945050505050565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261044961010084018261035e565b905060a0840151601f198483030160e085015261046682826103a2565b95945050505050565b60006020828403121561048157600080fd5b505191905056fea26469706673582212201b8206c732c57d34960989606dffba852eb813bad2b5d17224a162b4bfec583a64736f6c63430008120033", + Bin: "0x60a060405234801561001057600080fd5b506040516105cf3803806105cf83398101604081905261002f916100c0565b6001600160a01b0381166100af5760405162461bcd60e51b815260206004820152603460248201527f426c6f636b486173685075626c69736865723a207a65726f2074656c65706f7260448201527f7465722072656769737472792061646472657373000000000000000000000000606482015260840160405180910390fd5b6001600160a01b03166080526100f0565b6000602082840312156100d257600080fd5b81516001600160a01b03811681146100e957600080fd5b9392505050565b6080516104be610111600039600081816068015261012701526104be6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806318aef19b146100465780631a7f5bec1461006357806382ab2b86146100a2575b600080fd5b610050620249f081565b6040519081526020015b60405180910390f35b61008a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005a565b6100506100b03660046102d3565b6000806100be600143610303565b6040805160208101839052824081830181905282518083038401815260608301938490529281905292935083906001600160a01b0387169088907fe13623d33d18131ce960c33b1282ceac1fe7b5ccfcf7f8c0f6dad32dd61e3bdd9060800160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a79190610324565b6001600160a01b031663624488506040518060c00160405280898152602001886001600160a01b03168152602001604051806040016040528060006001600160a01b0316815260200160008152508152602001620249f08152602001600067ffffffffffffffff81111561021d5761021d610348565b604051908082528060200260200182016040528015610246578160200160208202803683370190505b508152602001848152506040518263ffffffff1660e01b815260040161026c91906103e8565b6020604051808303816000875af115801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af919061046f565b93505050505b92915050565b6001600160a01b03811681146102d057600080fd5b50565b600080604083850312156102e657600080fd5b8235915060208301356102f8816102bb565b809150509250929050565b818103818111156102b557634e487b7160e01b600052601160045260246000fd5b60006020828403121561033657600080fd5b8151610341816102bb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156103975781516001600160a01b031687529582019590820190600101610372565b509495945050505050565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261044961010084018261035e565b905060a0840151601f198483030160e085015261046682826103a2565b95945050505050565b60006020828403121561048157600080fd5b505191905056fea264697066735822122078de7fb7346c7cd00f55ddf40911ef6016935014662910b81cc89c6faa9fe9c964736f6c63430008120033", } // BlockHashPublisherABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go index afc33c531..5ad498bfa 100644 --- a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go +++ b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go @@ -31,8 +31,8 @@ var ( // BlockHashReceiverMetaData contains all meta data concerning the BlockHashReceiver contract. var BlockHashReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"publisherBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"publisherContractAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"originSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"ReceiveBlockHash\",\"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\":[],\"name\":\"getLatestBlockInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"latestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"pauseTeleporterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"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\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourcePublisherContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x60e060405234801561001057600080fd5b5060405162000f2138038062000f218339810160408190526100319161021e565b82806001600160a01b0381166100b45760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610122919061025a565b6001555061012f336101b0565b506001600160a01b0381166101985760405162461bcd60e51b815260206004820152602960248201527f426c6f636b4861736852656365697665723a207a65726f207075626c6973686560448201526872206164647265737360b81b60648201526084016100ab565b60a0919091526001600160a01b031660c05250610273565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b038116811461021957600080fd5b919050565b60008060006060848603121561023357600080fd5b61023c84610202565b92506020840151915061025160408501610202565b90509250925092565b60006020828403121561026c57600080fd5b5051919050565b60805160a05160c051610c63620002be600039600081816101c401526109b2015260008181610143015261093001526000818160ff015281816104b901526106e60152610c636000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806379a0710c11610097578063c868efaa11610066578063c868efaa1461024e578063d2cc7a7014610261578063f2fde38b14610269578063f3f39ee51461027c57600080fd5b806379a0710c146101bf5780638da5cb5b146101e657806397314297146101f7578063b17810be1461023357600080fd5b80634511243e116100d35780634511243e146101885780635eb995141461019b5780636c4f6ba9146101ae578063715018a6146101b757600080fd5b80631a7f5bec146100fa57806329b7b3fd1461013e5780632b0d8f1814610173575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101657f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610135565b610186610181366004610ae0565b610285565b005b610186610196366004610ae0565b610387565b6101866101a9366004610b02565b610484565b61016560045481565b610186610498565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b0316610121565b610223610205366004610ae0565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610135565b60035460045460408051928352602083019190915201610135565b61018661025c366004610b1b565b6104ac565b600154610165565b610186610277366004610ae0565b610664565b61016560035481565b61028d6106da565b6001600160a01b0381166102bc5760405162461bcd60e51b81526004016102b390610ba2565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff161561033b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102b3565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b61038f6106da565b6001600160a01b0381166103b55760405162461bcd60e51b81526004016102b390610ba2565b6001600160a01b03811660009081526020819052604090205460ff1661042f5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102b3565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61048c6106da565b610495816106e2565b50565b6104a0610882565b6104aa60006108dc565b565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190610bf0565b10156105ae5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102b3565b6105b733610205565b1561061d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102b3565b61065e848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061092e92505050565b50505050565b61066c610882565b6001600160a01b0381166106d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b3565b610495816108dc565b6104aa610882565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190610bf0565b600154909150818311156107d65760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102b3565b80831161084b5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102b3565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b3565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000083146109b05760405162461bcd60e51b815260206004820152602a60248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015269194818da185a5b88125160b21b60648201526084016102b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a4b5760405162461bcd60e51b815260206004820152603160248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015270329031b430b4b710383ab13634b9b432b960791b60648201526084016102b3565b60008082806020019051810190610a629190610c09565b91509150600354821115610abd576003829055600481905560405181815282906001600160a01b0386169087907f0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d9060200160405180910390a45b5050505050565b80356001600160a01b0381168114610adb57600080fd5b919050565b600060208284031215610af257600080fd5b610afb82610ac4565b9392505050565b600060208284031215610b1457600080fd5b5035919050565b60008060008060608587031215610b3157600080fd5b84359350610b4160208601610ac4565b9250604085013567ffffffffffffffff80821115610b5e57600080fd5b818701915087601f830112610b7257600080fd5b813581811115610b8157600080fd5b886020828501011115610b9357600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060208284031215610c0257600080fd5b5051919050565b60008060408385031215610c1c57600080fd5b50508051602090910151909290915056fea2646970667358221220ab6cbf8bb473da557742af7da1b197b105711a72ccb5c4363ba9e460ba6d856664736f6c63430008120033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"publisherBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"publisherContractAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":true,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"ReceiveBlockHash\",\"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\":[],\"name\":\"getLatestBlockInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"latestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourcePublisherContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x60e060405234801561001057600080fd5b5060405162000f2138038062000f218339810160408190526100319161021e565b82806001600160a01b0381166100b45760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610122919061025a565b6001555061012f336101b0565b506001600160a01b0381166101985760405162461bcd60e51b815260206004820152602960248201527f426c6f636b4861736852656365697665723a207a65726f207075626c6973686560448201526872206164647265737360b81b60648201526084016100ab565b60a0919091526001600160a01b031660c05250610273565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b038116811461021957600080fd5b919050565b60008060006060848603121561023357600080fd5b61023c84610202565b92506020840151915061025160408501610202565b90509250925092565b60006020828403121561026c57600080fd5b5051919050565b60805160a05160c051610c63620002be600039600081816101c401526109b2015260008181610143015261093001526000818160ff015281816104b901526106e60152610c636000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806379a0710c11610097578063c868efaa11610066578063c868efaa1461024e578063d2cc7a7014610261578063f2fde38b14610269578063f3f39ee51461027c57600080fd5b806379a0710c146101bf5780638da5cb5b146101e657806397314297146101f7578063b17810be1461023357600080fd5b80634511243e116100d35780634511243e146101885780635eb995141461019b5780636c4f6ba9146101ae578063715018a6146101b757600080fd5b80631a7f5bec146100fa57806329b7b3fd1461013e5780632b0d8f1814610173575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101657f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610135565b610186610181366004610ae0565b610285565b005b610186610196366004610ae0565b610387565b6101866101a9366004610b02565b610484565b61016560045481565b610186610498565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b0316610121565b610223610205366004610ae0565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610135565b60035460045460408051928352602083019190915201610135565b61018661025c366004610b1b565b6104ac565b600154610165565b610186610277366004610ae0565b610664565b61016560035481565b61028d6106da565b6001600160a01b0381166102bc5760405162461bcd60e51b81526004016102b390610ba2565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff161561033b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102b3565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b61038f6106da565b6001600160a01b0381166103b55760405162461bcd60e51b81526004016102b390610ba2565b6001600160a01b03811660009081526020819052604090205460ff1661042f5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102b3565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61048c6106da565b610495816106e2565b50565b6104a0610882565b6104aa60006108dc565b565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190610bf0565b10156105ae5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102b3565b6105b733610205565b1561061d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102b3565b61065e848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061092e92505050565b50505050565b61066c610882565b6001600160a01b0381166106d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b3565b610495816108dc565b6104aa610882565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190610bf0565b600154909150818311156107d65760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102b3565b80831161084b5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102b3565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b3565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000083146109b05760405162461bcd60e51b815260206004820152602a60248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015269194818da185a5b88125160b21b60648201526084016102b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a4b5760405162461bcd60e51b815260206004820152603160248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015270329031b430b4b710383ab13634b9b432b960791b60648201526084016102b3565b60008082806020019051810190610a629190610c09565b91509150600354821115610abd576003829055600481905560405181815282906001600160a01b0386169087907f0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d9060200160405180910390a45b5050505050565b80356001600160a01b0381168114610adb57600080fd5b919050565b600060208284031215610af257600080fd5b610afb82610ac4565b9392505050565b600060208284031215610b1457600080fd5b5035919050565b60008060008060608587031215610b3157600080fd5b84359350610b4160208601610ac4565b9250604085013567ffffffffffffffff80821115610b5e57600080fd5b818701915087601f830112610b7257600080fd5b813581811115610b8157600080fd5b886020828501011115610b9357600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060208284031215610c0257600080fd5b5051919050565b60008060408385031215610c1c57600080fd5b50508051602090910151909290915056fea2646970667358221220ef674924eeec79d319e27fe1fddd6aeef3b1beafb8640081a1addd8893430fc464736f6c63430008120033", } // BlockHashReceiverABI is the input ABI used to generate the binding from. @@ -505,23 +505,23 @@ func (_BlockHashReceiver *BlockHashReceiverTransactorSession) PauseTeleporterAdd // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_BlockHashReceiver *BlockHashReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _BlockHashReceiver.contract.Transact(opts, "receiveTeleporterMessage", originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_BlockHashReceiver *BlockHashReceiverTransactor) ReceiveTeleporterMessage(opts *bind.TransactOpts, sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _BlockHashReceiver.contract.Transact(opts, "receiveTeleporterMessage", sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_BlockHashReceiver *BlockHashReceiverSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _BlockHashReceiver.Contract.ReceiveTeleporterMessage(&_BlockHashReceiver.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_BlockHashReceiver *BlockHashReceiverSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _BlockHashReceiver.Contract.ReceiveTeleporterMessage(&_BlockHashReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // ReceiveTeleporterMessage is a paid mutator transaction binding the contract method 0xc868efaa. // -// Solidity: function receiveTeleporterMessage(bytes32 originBlockchainID, address originSenderAddress, bytes message) returns() -func (_BlockHashReceiver *BlockHashReceiverTransactorSession) ReceiveTeleporterMessage(originBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { - return _BlockHashReceiver.Contract.ReceiveTeleporterMessage(&_BlockHashReceiver.TransactOpts, originBlockchainID, originSenderAddress, message) +// Solidity: function receiveTeleporterMessage(bytes32 sourceBlockchainID, address originSenderAddress, bytes message) returns() +func (_BlockHashReceiver *BlockHashReceiverTransactorSession) ReceiveTeleporterMessage(sourceBlockchainID [32]byte, originSenderAddress common.Address, message []byte) (*types.Transaction, error) { + return _BlockHashReceiver.Contract.ReceiveTeleporterMessage(&_BlockHashReceiver.TransactOpts, sourceBlockchainID, originSenderAddress, message) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -983,7 +983,7 @@ func (it *BlockHashReceiverReceiveBlockHashIterator) Close() error { // BlockHashReceiverReceiveBlockHash represents a ReceiveBlockHash event raised by the BlockHashReceiver contract. type BlockHashReceiverReceiveBlockHash struct { - OriginBlockchainID [32]byte + SourceBlockchainID [32]byte OriginSenderAddress common.Address BlockHeight *big.Int BlockHash [32]byte @@ -992,12 +992,12 @@ type BlockHashReceiverReceiveBlockHash struct { // FilterReceiveBlockHash is a free log retrieval operation binding the contract event 0x0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d. // -// Solidity: event ReceiveBlockHash(bytes32 indexed originBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) -func (_BlockHashReceiver *BlockHashReceiverFilterer) FilterReceiveBlockHash(opts *bind.FilterOpts, originBlockchainID [][32]byte, originSenderAddress []common.Address, blockHeight []*big.Int) (*BlockHashReceiverReceiveBlockHashIterator, error) { +// Solidity: event ReceiveBlockHash(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) +func (_BlockHashReceiver *BlockHashReceiverFilterer) FilterReceiveBlockHash(opts *bind.FilterOpts, sourceBlockchainID [][32]byte, originSenderAddress []common.Address, blockHeight []*big.Int) (*BlockHashReceiverReceiveBlockHashIterator, error) { - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var originSenderAddressRule []interface{} for _, originSenderAddressItem := range originSenderAddress { @@ -1008,7 +1008,7 @@ func (_BlockHashReceiver *BlockHashReceiverFilterer) FilterReceiveBlockHash(opts blockHeightRule = append(blockHeightRule, blockHeightItem) } - logs, sub, err := _BlockHashReceiver.contract.FilterLogs(opts, "ReceiveBlockHash", originBlockchainIDRule, originSenderAddressRule, blockHeightRule) + logs, sub, err := _BlockHashReceiver.contract.FilterLogs(opts, "ReceiveBlockHash", sourceBlockchainIDRule, originSenderAddressRule, blockHeightRule) if err != nil { return nil, err } @@ -1017,12 +1017,12 @@ func (_BlockHashReceiver *BlockHashReceiverFilterer) FilterReceiveBlockHash(opts // WatchReceiveBlockHash is a free log subscription operation binding the contract event 0x0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d. // -// Solidity: event ReceiveBlockHash(bytes32 indexed originBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) -func (_BlockHashReceiver *BlockHashReceiverFilterer) WatchReceiveBlockHash(opts *bind.WatchOpts, sink chan<- *BlockHashReceiverReceiveBlockHash, originBlockchainID [][32]byte, originSenderAddress []common.Address, blockHeight []*big.Int) (event.Subscription, error) { +// Solidity: event ReceiveBlockHash(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) +func (_BlockHashReceiver *BlockHashReceiverFilterer) WatchReceiveBlockHash(opts *bind.WatchOpts, sink chan<- *BlockHashReceiverReceiveBlockHash, sourceBlockchainID [][32]byte, originSenderAddress []common.Address, blockHeight []*big.Int) (event.Subscription, error) { - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var originSenderAddressRule []interface{} for _, originSenderAddressItem := range originSenderAddress { @@ -1033,7 +1033,7 @@ func (_BlockHashReceiver *BlockHashReceiverFilterer) WatchReceiveBlockHash(opts blockHeightRule = append(blockHeightRule, blockHeightItem) } - logs, sub, err := _BlockHashReceiver.contract.WatchLogs(opts, "ReceiveBlockHash", originBlockchainIDRule, originSenderAddressRule, blockHeightRule) + logs, sub, err := _BlockHashReceiver.contract.WatchLogs(opts, "ReceiveBlockHash", sourceBlockchainIDRule, originSenderAddressRule, blockHeightRule) if err != nil { return nil, err } @@ -1067,7 +1067,7 @@ func (_BlockHashReceiver *BlockHashReceiverFilterer) WatchReceiveBlockHash(opts // ParseReceiveBlockHash is a log parse operation binding the contract event 0x0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d. // -// Solidity: event ReceiveBlockHash(bytes32 indexed originBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) +// Solidity: event ReceiveBlockHash(bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash) func (_BlockHashReceiver *BlockHashReceiverFilterer) ParseReceiveBlockHash(log types.Log) (*BlockHashReceiverReceiveBlockHash, error) { event := new(BlockHashReceiverReceiveBlockHash) if err := _BlockHashReceiver.contract.UnpackLog(event, "ReceiveBlockHash", log); err != nil { diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go index 46ead3d79..d11c81aa8 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\":\"originBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"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\":\"originBlockchainID\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"originBlockchainID\",\"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\":\"originBlockchainID\",\"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\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"originBlockchainID\",\"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: "0x608060405234801561001057600080fd5b506001600081905580556132d5806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612251565b610503565b005b61015a61019036600461226e565b6105f8565b6101e06101a336600461226e565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b604051610164929190612287565b6102016101fc36600461226e565b610615565b6040516001600160a01b039091168152602001610164565b61015a61022736600461226e565b60009081526005602052604090205490565b61015a6102473660046122ae565b61069e565b61018061025a366004612301565b6106fc565b61015a61026d36600461226e565b60066020526000908152604090205481565b61029261028d366004612335565b6108a7565b6040516101649190612357565b6101806102ad366004612377565b6108da565b61015a6102c03660046123af565b610b19565b61015a6102d3366004612426565b610b5c565b6102016005600160991b0181565b61015a6102f43660046124be565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124f7565b610e03565b61015a60025481565b61015a61034936600461226e565b61123d565b61039761035c36600461226e565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c436600461226e565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b61040561040036600461226e565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c36600461251e565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190612564565b9050806104cd5760405162461bcd60e51b81526004016104c49061257d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155f565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c4906125c4565b60026000556106f16106d383612804565b833560009081526004602052604090206106ec90611572565b61167c565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c4906125c4565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128a7565b6000836040516020016107b29190612b42565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612b55565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b9e565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c23565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612564565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118bc565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c4906125c4565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c36565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612c7b565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128a7565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611981565b600085815260056020526040812060020180549293508392909190610aa1908490612ce5565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c4906125c4565b60026000818155905490866001600160401b03811115610ba257610ba2612607565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612cf8565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d206f726967696e20626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612cf8565b602002602001018190525050505080610d6590612d0e565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d27565b8152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505060408051928352602080840190915290920152508361167c565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c36565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612da3565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f40565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae9565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b61565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612cf8565b6020026020010151611bd3565b61118b81612d0e565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cfb565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d929190613150565b60405180910390a460e0840151511561122f5761122f82876000015186611d57565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c49061257d565b600060035460016112719190612ce5565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612c36565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c4906128a7565b80836040516020016113169190612b42565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612b55565b600061135b6080850160608601612251565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a360008281526006602090815260408083208390558691611420918701908701612251565b61142d60e0870187613174565b60405160240161144094939291906131ba565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052905060006114886114816080870160608801612251565b5a84611e8a565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261155a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea4565b505050565b8054600182015460009161060f916131e5565b6060600061158960056115848561155f565b611f76565b9050806000036115d85760408051600080825260208201909252906115d0565b60408051808201909152600080825260208201528152602001906001900390816115a95790505b509392505050565b6000816001600160401b038111156115f2576115f2612607565b60405190808252806020026020018201604052801561163757816020015b60408051808201909152600080825260208201528152602001906001900390816116105790505b50905060005b828110156115d05761164e85611f8c565b82828151811061166057611660612cf8565b60200260200101819052508061167590612d0e565b905061163d565b600080611687610431565b9050600060036000815461169a90612d0e565b919050819055905060006116b383876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a00151815250905060008160405160200161172c91906131f8565b60405160208183030381529060405290506000808960400151602001511115611794576040890151516001600160a01b031661177a5760405162461bcd60e51b81526004016104c490612c7b565b604089015180516020909101516117919190611981565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df890611838908890869061320b565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061186a908690600401612c23565b6020604051808303816000875af1158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190612564565b50939998505050505050505050565b60408051808201909152600080825260208201526118d98361155f565b82106119315760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119479190612ce5565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612564565b9050611a056001600160a01b038516333086612058565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190612564565b9050818111611ad65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ae082826131e5565b95945050505050565b60008151600003611afc5750600161060f565b815160005b81811015611b5657846001600160a01b0316848281518110611b2557611b25612cf8565b60200260200101516001600160a01b031603611b465760019250505061060f565b611b4f81612d0e565b9050611b01565b506000949350505050565b80600003611bc15760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be484848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c3b575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611ca2908490612ce5565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cec919061321e565b60405180910390a45050505050565b6001820180548291600285019160009182611d1583612d0e565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db95760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dda5761155a838383612096565b602081015160e0820151604051600092611df892869260240161323e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e3d919084611e8a565b905080611e5657611e4f858585612096565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ef9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661210b9092919063ffffffff16565b80519091501561155a5780806020019051810190611f179190613268565b61155a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f8557816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611ff65760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559061204e908390612ce5565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120909085906323b872dd60e01b90608401611523565b50505050565b806040516020016120a791906131f8565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120fe9085906131f8565b60405180910390a3505050565b606061127e848460008585600080866001600160a01b031685876040516121329190613283565b60006040518083038185875af1925050503d806000811461216f576040519150601f19603f3d011682016040523d82523d6000602084013e612174565b606091505b509150915061218587838387612190565b979650505050505050565b606083156121ff5782516000036121f8576001600160a01b0385163b6121f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b508161127e565b61127e83838151156122145781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c23565b6001600160a01b038116811461224357600080fd5b50565b80356104fe8161222e565b60006020828403121561226357600080fd5b81356108d38161222e565b60006020828403121561228057600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b6000602082840312156122c057600080fd5b81356001600160401b038111156122d657600080fd5b820160e081850312156108d357600080fd5b600061010082840312156122fb57600080fd5b50919050565b60006020828403121561231357600080fd5b81356001600160401b0381111561232957600080fd5b61127e848285016122e8565b6000806040838503121561234857600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b60008060006060848603121561238c57600080fd5b83359250602084013561239e8161222e565b929592945050506040919091013590565b6000806000606084860312156123c457600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123ed57600080fd5b5081356001600160401b0381111561240457600080fd5b6020830191508360208260051b850101111561241f57600080fd5b9250929050565b60008060008060008086880360a081121561244057600080fd5b8735965060208801356001600160401b038082111561245e57600080fd5b61246a8b838c016123db565b90985096508691506040603f198401121561248457600080fd5b60408a01955060808a013592508083111561249e57600080fd5b50506124ac89828a016123db565b979a9699509497509295939492505050565b600080604083850312156124d157600080fd5b82356124dc8161222e565b915060208301356124ec8161222e565b809150509250929050565b6000806040838503121561250a57600080fd5b823563ffffffff811681146124dc57600080fd5b6000806040838503121561253157600080fd5b8235915060208301356001600160401b0381111561254e57600080fd5b61255a858286016122e8565b9150509250929050565b60006020828403121561257657600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561263f5761263f612607565b60405290565b60405160c081016001600160401b038111828210171561263f5761263f612607565b60405161010081016001600160401b038111828210171561263f5761263f612607565b604051601f8201601f191681016001600160401b03811182821017156126b2576126b2612607565b604052919050565b6000604082840312156126cc57600080fd5b6126d461261d565b905081356126e18161222e565b808252506020820135602082015292915050565b60006001600160401b0382111561270e5761270e612607565b5060051b60200190565b600082601f83011261272957600080fd5b8135602061273e612739836126f5565b61268a565b82815260059290921b8401810191818101908684111561275d57600080fd5b8286015b848110156127815780356127748161222e565b8352918301918301612761565b509695505050505050565b60006001600160401b038211156127a5576127a5612607565b50601f01601f191660200190565b600082601f8301126127c457600080fd5b81356127d26127398261278c565b8181528460208386010111156127e757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561281657600080fd5b61281e612645565b8235815261282e60208401612246565b602082015261284036604085016126ba565b60408201526080830135606082015260a08301356001600160401b038082111561286957600080fd5b61287536838701612718565b608084015260c085013591508082111561288e57600080fd5b5061289b368286016127b3565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261290457600080fd5b83016020810192503590506001600160401b0381111561292357600080fd5b8060051b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781356129588161222e565b6001600160a01b031687529582019590820190600101612945565b509495945050505050565b6000808335601e1984360301811261299557600080fd5b83016020810192503590506001600160401b038111156129b457600080fd5b8060061b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781358752828201356129ef8161222e565b6001600160a01b03168784015260409687019691909101906001016129d6565b6000808335601e19843603018112612a2657600080fd5b83016020810192503590506001600160401b03811115612a4557600080fd5b80360382131561241f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a948161222e565b6001600160a01b0316602085015260408381013590850152612ab860608401612246565b6001600160a01b0316606085015260808381013590850152612add60a08401846128ed565b8260a0870152612af08387018284612935565b92505050612b0160c084018461297e565b85830360c0870152612b148382846129c6565b92505050612b2560e0840184612a0f565b85830360e0870152612b38838284612a54565b9695505050505050565b6020815260006108d36020830184612a7d565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612bb16060830185612a7d565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612bee578181015183820152602001612bd6565b50506000910152565b60008151808452612c0f816020860160208601612bd3565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612bf7565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612ccf565b634e487b7160e01b600052603260045260246000fd5b600060018201612d2057612d20612ccf565b5060010190565b600060408284031215612d3957600080fd5b6108d383836126ba565b80516104fe8161222e565b600082601f830112612d5f57600080fd5b8151612d6d6127398261278c565b818152846020838601011115612d8257600080fd5b61127e826020830160208701612bd3565b805180151581146104fe57600080fd5b60008060408385031215612db657600080fd5b82516001600160401b0380821115612dcd57600080fd5b9084019060608287031215612de157600080fd5b604051606081018181108382111715612dfc57612dfc612607565b604052825181526020830151612e118161222e565b6020820152604083015182811115612e2857600080fd5b612e3488828601612d4e565b6040830152509350612e4b91505060208401612d93565b90509250929050565b600082601f830112612e6557600080fd5b81516020612e75612739836126f5565b82815260059290921b84018101918181019086841115612e9457600080fd5b8286015b84811015612781578051612eab8161222e565b8352918301918301612e98565b600082601f830112612ec957600080fd5b81516020612ed9612739836126f5565b82815260069290921b84018101918181019086841115612ef857600080fd5b8286015b848110156127815760408189031215612f155760008081fd5b612f1d61261d565b8151815284820151612f2e8161222e565b81860152835291830191604001612efc565b600060208284031215612f5257600080fd5b81516001600160401b0380821115612f6957600080fd5b908301906101008286031215612f7e57600080fd5b612f86612667565b82518152612f9660208401612d43565b602082015260408301516040820152612fb160608401612d43565b60608201526080830151608082015260a083015182811115612fd257600080fd5b612fde87828601612e54565b60a08301525060c083015182811115612ff657600080fd5b61300287828601612eb8565b60c08301525060e08301518281111561301a57600080fd5b61302687828601612d4e565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129735781516001600160a01b031687529582019590820190600101613049565b600081518084526020808501945080840160005b83811015612973576130a8878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613082565b60006101008251845260018060a01b0360208401511660208501526040830151604085015260608301516130fa60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261311c82860182613035565b91505060c083015184820360c0860152613136828261306e565b91505060e083015184820360e0860152611ae08282612bf7565b6001600160a01b038316815260406020820181905260009061127e908301846130bb565b6000808335601e1984360301811261318b57600080fd5b8301803591506001600160401b038211156131a557600080fd5b60200191503681900382131561241f57600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b389083018486612a54565b8181038181111561060f5761060f612ccf565b6020815260006108d360208301846130bb565b606081526000612bb160608301856130bb565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ae090830184612bf7565b60006020828403121561327a57600080fd5b6108d382612d93565b60008251613295818460208701612bd3565b919091019291505056fea264697066735822122057587c702c8bc10504e7a5deff3803a3f604fbd44c35a32e13dec4112264dc3c64736f6c63430008120033", + 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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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: "0x608060405234801561001057600080fd5b506001600081905580556132d5806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612251565b610503565b005b61015a61019036600461226e565b6105f8565b6101e06101a336600461226e565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b604051610164929190612287565b6102016101fc36600461226e565b610615565b6040516001600160a01b039091168152602001610164565b61015a61022736600461226e565b60009081526005602052604090205490565b61015a6102473660046122ae565b61069e565b61018061025a366004612301565b6106fc565b61015a61026d36600461226e565b60066020526000908152604090205481565b61029261028d366004612335565b6108a7565b6040516101649190612357565b6101806102ad366004612377565b6108da565b61015a6102c03660046123af565b610b19565b61015a6102d3366004612426565b610b5c565b6102016005600160991b0181565b61015a6102f43660046124be565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124f7565b610e03565b61015a60025481565b61015a61034936600461226e565b61123d565b61039761035c36600461226e565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c436600461226e565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b61040561040036600461226e565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c36600461251e565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190612564565b9050806104cd5760405162461bcd60e51b81526004016104c49061257d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155f565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c4906125c4565b60026000556106f16106d383612804565b833560009081526004602052604090206106ec90611572565b61167c565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c4906125c4565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128a7565b6000836040516020016107b29190612b42565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612b55565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b9e565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c23565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612564565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118bc565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c4906125c4565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c36565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612c7b565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128a7565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611981565b600085815260056020526040812060020180549293508392909190610aa1908490612ce5565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c4906125c4565b60026000818155905490866001600160401b03811115610ba257610ba2612607565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612cf8565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612cf8565b602002602001018190525050505080610d6590612d0e565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d27565b8152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505060408051928352602080840190915290920152508361167c565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c36565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612da3565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f40565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae9565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b61565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612cf8565b6020026020010151611bd3565b61118b81612d0e565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cfb565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d929190613150565b60405180910390a460e0840151511561122f5761122f82876000015186611d57565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c49061257d565b600060035460016112719190612ce5565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612c36565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c4906128a7565b80836040516020016113169190612b42565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612b55565b600061135b6080850160608601612251565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a360008281526006602090815260408083208390558691611420918701908701612251565b61142d60e0870187613174565b60405160240161144094939291906131ba565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052905060006114886114816080870160608801612251565b5a84611e8a565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261155a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea4565b505050565b8054600182015460009161060f916131e5565b6060600061158960056115848561155f565b611f76565b9050806000036115d85760408051600080825260208201909252906115d0565b60408051808201909152600080825260208201528152602001906001900390816115a95790505b509392505050565b6000816001600160401b038111156115f2576115f2612607565b60405190808252806020026020018201604052801561163757816020015b60408051808201909152600080825260208201528152602001906001900390816116105790505b50905060005b828110156115d05761164e85611f8c565b82828151811061166057611660612cf8565b60200260200101819052508061167590612d0e565b905061163d565b600080611687610431565b9050600060036000815461169a90612d0e565b919050819055905060006116b383876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a00151815250905060008160405160200161172c91906131f8565b60405160208183030381529060405290506000808960400151602001511115611794576040890151516001600160a01b031661177a5760405162461bcd60e51b81526004016104c490612c7b565b604089015180516020909101516117919190611981565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df890611838908890869061320b565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061186a908690600401612c23565b6020604051808303816000875af1158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190612564565b50939998505050505050505050565b60408051808201909152600080825260208201526118d98361155f565b82106119315760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119479190612ce5565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612564565b9050611a056001600160a01b038516333086612058565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190612564565b9050818111611ad65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ae082826131e5565b95945050505050565b60008151600003611afc5750600161060f565b815160005b81811015611b5657846001600160a01b0316848281518110611b2557611b25612cf8565b60200260200101516001600160a01b031603611b465760019250505061060f565b611b4f81612d0e565b9050611b01565b506000949350505050565b80600003611bc15760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be484848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c3b575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611ca2908490612ce5565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cec919061321e565b60405180910390a45050505050565b6001820180548291600285019160009182611d1583612d0e565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db95760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dda5761155a838383612096565b602081015160e0820151604051600092611df892869260240161323e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e3d919084611e8a565b905080611e5657611e4f858585612096565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ef9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661210b9092919063ffffffff16565b80519091501561155a5780806020019051810190611f179190613268565b61155a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f8557816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611ff65760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559061204e908390612ce5565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120909085906323b872dd60e01b90608401611523565b50505050565b806040516020016120a791906131f8565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120fe9085906131f8565b60405180910390a3505050565b606061127e848460008585600080866001600160a01b031685876040516121329190613283565b60006040518083038185875af1925050503d806000811461216f576040519150601f19603f3d011682016040523d82523d6000602084013e612174565b606091505b509150915061218587838387612190565b979650505050505050565b606083156121ff5782516000036121f8576001600160a01b0385163b6121f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b508161127e565b61127e83838151156122145781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c23565b6001600160a01b038116811461224357600080fd5b50565b80356104fe8161222e565b60006020828403121561226357600080fd5b81356108d38161222e565b60006020828403121561228057600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b6000602082840312156122c057600080fd5b81356001600160401b038111156122d657600080fd5b820160e081850312156108d357600080fd5b600061010082840312156122fb57600080fd5b50919050565b60006020828403121561231357600080fd5b81356001600160401b0381111561232957600080fd5b61127e848285016122e8565b6000806040838503121561234857600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b60008060006060848603121561238c57600080fd5b83359250602084013561239e8161222e565b929592945050506040919091013590565b6000806000606084860312156123c457600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123ed57600080fd5b5081356001600160401b0381111561240457600080fd5b6020830191508360208260051b850101111561241f57600080fd5b9250929050565b60008060008060008086880360a081121561244057600080fd5b8735965060208801356001600160401b038082111561245e57600080fd5b61246a8b838c016123db565b90985096508691506040603f198401121561248457600080fd5b60408a01955060808a013592508083111561249e57600080fd5b50506124ac89828a016123db565b979a9699509497509295939492505050565b600080604083850312156124d157600080fd5b82356124dc8161222e565b915060208301356124ec8161222e565b809150509250929050565b6000806040838503121561250a57600080fd5b823563ffffffff811681146124dc57600080fd5b6000806040838503121561253157600080fd5b8235915060208301356001600160401b0381111561254e57600080fd5b61255a858286016122e8565b9150509250929050565b60006020828403121561257657600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561263f5761263f612607565b60405290565b60405160c081016001600160401b038111828210171561263f5761263f612607565b60405161010081016001600160401b038111828210171561263f5761263f612607565b604051601f8201601f191681016001600160401b03811182821017156126b2576126b2612607565b604052919050565b6000604082840312156126cc57600080fd5b6126d461261d565b905081356126e18161222e565b808252506020820135602082015292915050565b60006001600160401b0382111561270e5761270e612607565b5060051b60200190565b600082601f83011261272957600080fd5b8135602061273e612739836126f5565b61268a565b82815260059290921b8401810191818101908684111561275d57600080fd5b8286015b848110156127815780356127748161222e565b8352918301918301612761565b509695505050505050565b60006001600160401b038211156127a5576127a5612607565b50601f01601f191660200190565b600082601f8301126127c457600080fd5b81356127d26127398261278c565b8181528460208386010111156127e757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561281657600080fd5b61281e612645565b8235815261282e60208401612246565b602082015261284036604085016126ba565b60408201526080830135606082015260a08301356001600160401b038082111561286957600080fd5b61287536838701612718565b608084015260c085013591508082111561288e57600080fd5b5061289b368286016127b3565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261290457600080fd5b83016020810192503590506001600160401b0381111561292357600080fd5b8060051b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781356129588161222e565b6001600160a01b031687529582019590820190600101612945565b509495945050505050565b6000808335601e1984360301811261299557600080fd5b83016020810192503590506001600160401b038111156129b457600080fd5b8060061b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781358752828201356129ef8161222e565b6001600160a01b03168784015260409687019691909101906001016129d6565b6000808335601e19843603018112612a2657600080fd5b83016020810192503590506001600160401b03811115612a4557600080fd5b80360382131561241f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a948161222e565b6001600160a01b0316602085015260408381013590850152612ab860608401612246565b6001600160a01b0316606085015260808381013590850152612add60a08401846128ed565b8260a0870152612af08387018284612935565b92505050612b0160c084018461297e565b85830360c0870152612b148382846129c6565b92505050612b2560e0840184612a0f565b85830360e0870152612b38838284612a54565b9695505050505050565b6020815260006108d36020830184612a7d565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612bb16060830185612a7d565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612bee578181015183820152602001612bd6565b50506000910152565b60008151808452612c0f816020860160208601612bd3565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612bf7565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612ccf565b634e487b7160e01b600052603260045260246000fd5b600060018201612d2057612d20612ccf565b5060010190565b600060408284031215612d3957600080fd5b6108d383836126ba565b80516104fe8161222e565b600082601f830112612d5f57600080fd5b8151612d6d6127398261278c565b818152846020838601011115612d8257600080fd5b61127e826020830160208701612bd3565b805180151581146104fe57600080fd5b60008060408385031215612db657600080fd5b82516001600160401b0380821115612dcd57600080fd5b9084019060608287031215612de157600080fd5b604051606081018181108382111715612dfc57612dfc612607565b604052825181526020830151612e118161222e565b6020820152604083015182811115612e2857600080fd5b612e3488828601612d4e565b6040830152509350612e4b91505060208401612d93565b90509250929050565b600082601f830112612e6557600080fd5b81516020612e75612739836126f5565b82815260059290921b84018101918181019086841115612e9457600080fd5b8286015b84811015612781578051612eab8161222e565b8352918301918301612e98565b600082601f830112612ec957600080fd5b81516020612ed9612739836126f5565b82815260069290921b84018101918181019086841115612ef857600080fd5b8286015b848110156127815760408189031215612f155760008081fd5b612f1d61261d565b8151815284820151612f2e8161222e565b81860152835291830191604001612efc565b600060208284031215612f5257600080fd5b81516001600160401b0380821115612f6957600080fd5b908301906101008286031215612f7e57600080fd5b612f86612667565b82518152612f9660208401612d43565b602082015260408301516040820152612fb160608401612d43565b60608201526080830151608082015260a083015182811115612fd257600080fd5b612fde87828601612e54565b60a08301525060c083015182811115612ff657600080fd5b61300287828601612eb8565b60c08301525060e08301518281111561301a57600080fd5b61302687828601612d4e565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129735781516001600160a01b031687529582019590820190600101613049565b600081518084526020808501945080840160005b83811015612973576130a8878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613082565b60006101008251845260018060a01b0360208401511660208501526040830151604085015260608301516130fa60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261311c82860182613035565b91505060c083015184820360c0860152613136828261306e565b91505060e083015184820360e0860152611ae08282612bf7565b6001600160a01b038316815260406020820181905260009061127e908301846130bb565b6000808335601e1984360301811261318b57600080fd5b8301803591506001600160401b038211156131a557600080fd5b60200191503681900382131561241f57600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b389083018486612a54565b8181038181111561060f5761060f612ccf565b6020815260006108d360208301846130bb565b606081526000612bb160608301856130bb565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ae090830184612bf7565b60006020828403121561327a57600080fd5b6108d382612d93565b60008251613295818460208701612bd3565b919091019291505056fea26469706673582212201c776e83b028c5c515aed46e29910c8b406fe810a5ac98d02e2e085be7696f2264736f6c63430008120033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. @@ -456,10 +456,10 @@ func (_TeleporterMessenger *TeleporterMessengerCallerSession) GetNextMessageID(d // GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. // -// Solidity: function getReceiptAtIndex(bytes32 originBlockchainID, uint256 index) view returns((uint256,address)) -func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, originBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptAtIndex(opts *bind.CallOpts, sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { var out []interface{} - err := _TeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", originBlockchainID, index) + err := _TeleporterMessenger.contract.Call(opts, &out, "getReceiptAtIndex", sourceBlockchainID, index) if err != nil { return *new(TeleporterMessageReceipt), err @@ -473,24 +473,24 @@ func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptAtIndex(opts *b // GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. // -// Solidity: function getReceiptAtIndex(bytes32 originBlockchainID, uint256 index) view returns((uint256,address)) -func (_TeleporterMessenger *TeleporterMessengerSession) GetReceiptAtIndex(originBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _TeleporterMessenger.Contract.GetReceiptAtIndex(&_TeleporterMessenger.CallOpts, originBlockchainID, index) +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_TeleporterMessenger *TeleporterMessengerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _TeleporterMessenger.Contract.GetReceiptAtIndex(&_TeleporterMessenger.CallOpts, sourceBlockchainID, index) } // GetReceiptAtIndex is a free data retrieval call binding the contract method 0x892bf412. // -// Solidity: function getReceiptAtIndex(bytes32 originBlockchainID, uint256 index) view returns((uint256,address)) -func (_TeleporterMessenger *TeleporterMessengerCallerSession) GetReceiptAtIndex(originBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { - return _TeleporterMessenger.Contract.GetReceiptAtIndex(&_TeleporterMessenger.CallOpts, originBlockchainID, index) +// Solidity: function getReceiptAtIndex(bytes32 sourceBlockchainID, uint256 index) view returns((uint256,address)) +func (_TeleporterMessenger *TeleporterMessengerCallerSession) GetReceiptAtIndex(sourceBlockchainID [32]byte, index *big.Int) (TeleporterMessageReceipt, error) { + return _TeleporterMessenger.Contract.GetReceiptAtIndex(&_TeleporterMessenger.CallOpts, sourceBlockchainID, index) } // GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. // -// Solidity: function getReceiptQueueSize(bytes32 originBlockchainID) view returns(uint256) -func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, originBlockchainID [32]byte) (*big.Int, error) { +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptQueueSize(opts *bind.CallOpts, sourceBlockchainID [32]byte) (*big.Int, error) { var out []interface{} - err := _TeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", originBlockchainID) + err := _TeleporterMessenger.contract.Call(opts, &out, "getReceiptQueueSize", sourceBlockchainID) if err != nil { return *new(*big.Int), err @@ -504,16 +504,16 @@ func (_TeleporterMessenger *TeleporterMessengerCaller) GetReceiptQueueSize(opts // GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. // -// Solidity: function getReceiptQueueSize(bytes32 originBlockchainID) view returns(uint256) -func (_TeleporterMessenger *TeleporterMessengerSession) GetReceiptQueueSize(originBlockchainID [32]byte) (*big.Int, error) { - return _TeleporterMessenger.Contract.GetReceiptQueueSize(&_TeleporterMessenger.CallOpts, originBlockchainID) +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_TeleporterMessenger *TeleporterMessengerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _TeleporterMessenger.Contract.GetReceiptQueueSize(&_TeleporterMessenger.CallOpts, sourceBlockchainID) } // GetReceiptQueueSize is a free data retrieval call binding the contract method 0x2bc8b0bf. // -// Solidity: function getReceiptQueueSize(bytes32 originBlockchainID) view returns(uint256) -func (_TeleporterMessenger *TeleporterMessengerCallerSession) GetReceiptQueueSize(originBlockchainID [32]byte) (*big.Int, error) { - return _TeleporterMessenger.Contract.GetReceiptQueueSize(&_TeleporterMessenger.CallOpts, originBlockchainID) +// Solidity: function getReceiptQueueSize(bytes32 sourceBlockchainID) view returns(uint256) +func (_TeleporterMessenger *TeleporterMessengerCallerSession) GetReceiptQueueSize(sourceBlockchainID [32]byte) (*big.Int, error) { + return _TeleporterMessenger.Contract.GetReceiptQueueSize(&_TeleporterMessenger.CallOpts, sourceBlockchainID) } // GetRelayerRewardAddress is a free data retrieval call binding the contract method 0x2e27c223. @@ -816,23 +816,23 @@ func (_TeleporterMessenger *TeleporterMessengerTransactorSession) RedeemRelayerR // RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. // -// Solidity: function retryMessageExecution(bytes32 originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_TeleporterMessenger *TeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, originBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _TeleporterMessenger.contract.Transact(opts, "retryMessageExecution", originBlockchainID, message) +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_TeleporterMessenger *TeleporterMessengerTransactor) RetryMessageExecution(opts *bind.TransactOpts, sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _TeleporterMessenger.contract.Transact(opts, "retryMessageExecution", sourceBlockchainID, message) } // RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. // -// Solidity: function retryMessageExecution(bytes32 originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_TeleporterMessenger *TeleporterMessengerSession) RetryMessageExecution(originBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _TeleporterMessenger.Contract.RetryMessageExecution(&_TeleporterMessenger.TransactOpts, originBlockchainID, message) +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_TeleporterMessenger *TeleporterMessengerSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _TeleporterMessenger.Contract.RetryMessageExecution(&_TeleporterMessenger.TransactOpts, sourceBlockchainID, message) } // RetryMessageExecution is a paid mutator transaction binding the contract method 0xfc2d6197. // -// Solidity: function retryMessageExecution(bytes32 originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() -func (_TeleporterMessenger *TeleporterMessengerTransactorSession) RetryMessageExecution(originBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { - return _TeleporterMessenger.Contract.RetryMessageExecution(&_TeleporterMessenger.TransactOpts, originBlockchainID, message) +// Solidity: function retryMessageExecution(bytes32 sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) returns() +func (_TeleporterMessenger *TeleporterMessengerTransactorSession) RetryMessageExecution(sourceBlockchainID [32]byte, message TeleporterMessage) (*types.Transaction, error) { + return _TeleporterMessenger.Contract.RetryMessageExecution(&_TeleporterMessenger.TransactOpts, sourceBlockchainID, message) } // RetrySendCrossChainMessage is a paid mutator transaction binding the contract method 0x8245a1b0. @@ -879,23 +879,23 @@ func (_TeleporterMessenger *TeleporterMessengerTransactorSession) SendCrossChain // SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. // -// Solidity: function sendSpecifiedReceipts(bytes32 originBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_TeleporterMessenger *TeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, originBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _TeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", originBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_TeleporterMessenger *TeleporterMessengerTransactor) SendSpecifiedReceipts(opts *bind.TransactOpts, sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _TeleporterMessenger.contract.Transact(opts, "sendSpecifiedReceipts", sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) } // SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. // -// Solidity: function sendSpecifiedReceipts(bytes32 originBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_TeleporterMessenger *TeleporterMessengerSession) SendSpecifiedReceipts(originBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _TeleporterMessenger.Contract.SendSpecifiedReceipts(&_TeleporterMessenger.TransactOpts, originBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_TeleporterMessenger *TeleporterMessengerSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _TeleporterMessenger.Contract.SendSpecifiedReceipts(&_TeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) } // SendSpecifiedReceipts is a paid mutator transaction binding the contract method 0xa9a85614. // -// Solidity: function sendSpecifiedReceipts(bytes32 originBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) -func (_TeleporterMessenger *TeleporterMessengerTransactorSession) SendSpecifiedReceipts(originBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { - return _TeleporterMessenger.Contract.SendSpecifiedReceipts(&_TeleporterMessenger.TransactOpts, originBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) +// Solidity: function sendSpecifiedReceipts(bytes32 sourceBlockchainID, bytes32[] messageIDs, (address,uint256) feeInfo, address[] allowedRelayerAddresses) returns(bytes32) +func (_TeleporterMessenger *TeleporterMessengerTransactorSession) SendSpecifiedReceipts(sourceBlockchainID [32]byte, messageIDs [][32]byte, feeInfo TeleporterFeeInfo, allowedRelayerAddresses []common.Address) (*types.Transaction, error) { + return _TeleporterMessenger.Contract.SendSpecifiedReceipts(&_TeleporterMessenger.TransactOpts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) } // TeleporterMessengerAddFeeAmountIterator is returned from FilterAddFeeAmount and is used to iterate over the raw logs and unpacked data for AddFeeAmount events raised by the TeleporterMessenger contract. @@ -1257,25 +1257,25 @@ func (it *TeleporterMessengerMessageExecutedIterator) Close() error { // TeleporterMessengerMessageExecuted represents a MessageExecuted event raised by the TeleporterMessenger contract. type TeleporterMessengerMessageExecuted struct { MessageID [32]byte - OriginBlockchainID [32]byte + SourceBlockchainID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterMessageExecuted is a free log retrieval operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. // -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed originBlockchainID) -func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, originBlockchainID [][32]byte) (*TeleporterMessengerMessageExecutedIterator, error) { +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecuted(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*TeleporterMessengerMessageExecutedIterator, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } - logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, originBlockchainIDRule) + logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) if err != nil { return nil, err } @@ -1284,19 +1284,19 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecuted(o // WatchMessageExecuted is a free log subscription operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. // -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed originBlockchainID) -func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerMessageExecuted, messageID [][32]byte, originBlockchainID [][32]byte) (event.Subscription, error) { +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) +func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecuted(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerMessageExecuted, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } - logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, originBlockchainIDRule) + logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "MessageExecuted", messageIDRule, sourceBlockchainIDRule) if err != nil { return nil, err } @@ -1330,7 +1330,7 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecuted(op // ParseMessageExecuted is a log parse operation binding the contract event 0x34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c. // -// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed originBlockchainID) +// Solidity: event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID) func (_TeleporterMessenger *TeleporterMessengerFilterer) ParseMessageExecuted(log types.Log) (*TeleporterMessengerMessageExecuted, error) { event := new(TeleporterMessengerMessageExecuted) if err := _TeleporterMessenger.contract.UnpackLog(event, "MessageExecuted", log); err != nil { @@ -1410,26 +1410,26 @@ func (it *TeleporterMessengerMessageExecutionFailedIterator) Close() error { // TeleporterMessengerMessageExecutionFailed represents a MessageExecutionFailed event raised by the TeleporterMessenger contract. type TeleporterMessengerMessageExecutionFailed struct { MessageID [32]byte - OriginBlockchainID [32]byte + SourceBlockchainID [32]byte Message TeleporterMessage Raw types.Log // Blockchain specific contextual infos } // FilterMessageExecutionFailed is a free log retrieval operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. // -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, originBlockchainID [][32]byte) (*TeleporterMessengerMessageExecutionFailedIterator, error) { +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecutionFailed(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte) (*TeleporterMessengerMessageExecutionFailedIterator, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } - logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, originBlockchainIDRule) + logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) if err != nil { return nil, err } @@ -1438,19 +1438,19 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterMessageExecutionF // WatchMessageExecutionFailed is a free log subscription operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. // -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerMessageExecutionFailed, messageID [][32]byte, originBlockchainID [][32]byte) (event.Subscription, error) { +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecutionFailed(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerMessageExecutionFailed, messageID [][32]byte, sourceBlockchainID [][32]byte) (event.Subscription, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } - logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, originBlockchainIDRule) + logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "MessageExecutionFailed", messageIDRule, sourceBlockchainIDRule) if err != nil { return nil, err } @@ -1484,7 +1484,7 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchMessageExecutionFa // ParseMessageExecutionFailed is a log parse operation binding the contract event 0x4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985. // -// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed originBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +// Solidity: event MessageExecutionFailed(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) func (_TeleporterMessenger *TeleporterMessengerFilterer) ParseMessageExecutionFailed(log types.Log) (*TeleporterMessengerMessageExecutionFailed, error) { event := new(TeleporterMessengerMessageExecutionFailed) if err := _TeleporterMessenger.contract.UnpackLog(event, "MessageExecutionFailed", log); err != nil { @@ -1727,7 +1727,7 @@ func (it *TeleporterMessengerReceiveCrossChainMessageIterator) Close() error { // TeleporterMessengerReceiveCrossChainMessage represents a ReceiveCrossChainMessage event raised by the TeleporterMessenger contract. type TeleporterMessengerReceiveCrossChainMessage struct { MessageID [32]byte - OriginBlockchainID [32]byte + SourceBlockchainID [32]byte Deliverer common.Address RewardRedeemer common.Address Message TeleporterMessage @@ -1736,23 +1736,23 @@ type TeleporterMessengerReceiveCrossChainMessage struct { // FilterReceiveCrossChainMessage is a free log retrieval operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. // -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed originBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, originBlockchainID [][32]byte, deliverer []common.Address) (*TeleporterMessengerReceiveCrossChainMessageIterator, error) { +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterReceiveCrossChainMessage(opts *bind.FilterOpts, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (*TeleporterMessengerReceiveCrossChainMessageIterator, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var delivererRule []interface{} for _, delivererItem := range deliverer { delivererRule = append(delivererRule, delivererItem) } - logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, originBlockchainIDRule, delivererRule) + logs, sub, err := _TeleporterMessenger.contract.FilterLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) if err != nil { return nil, err } @@ -1761,23 +1761,23 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) FilterReceiveCrossChain // WatchReceiveCrossChainMessage is a free log subscription operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. // -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed originBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) -func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, originBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchReceiveCrossChainMessage(opts *bind.WatchOpts, sink chan<- *TeleporterMessengerReceiveCrossChainMessage, messageID [][32]byte, sourceBlockchainID [][32]byte, deliverer []common.Address) (event.Subscription, error) { var messageIDRule []interface{} for _, messageIDItem := range messageID { messageIDRule = append(messageIDRule, messageIDItem) } - var originBlockchainIDRule []interface{} - for _, originBlockchainIDItem := range originBlockchainID { - originBlockchainIDRule = append(originBlockchainIDRule, originBlockchainIDItem) + var sourceBlockchainIDRule []interface{} + for _, sourceBlockchainIDItem := range sourceBlockchainID { + sourceBlockchainIDRule = append(sourceBlockchainIDRule, sourceBlockchainIDItem) } var delivererRule []interface{} for _, delivererItem := range deliverer { delivererRule = append(delivererRule, delivererItem) } - logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, originBlockchainIDRule, delivererRule) + logs, sub, err := _TeleporterMessenger.contract.WatchLogs(opts, "ReceiveCrossChainMessage", messageIDRule, sourceBlockchainIDRule, delivererRule) if err != nil { return nil, err } @@ -1811,7 +1811,7 @@ func (_TeleporterMessenger *TeleporterMessengerFilterer) WatchReceiveCrossChainM // ParseReceiveCrossChainMessage is a log parse operation binding the contract event 0x292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e34. // -// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed originBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) +// Solidity: event ReceiveCrossChainMessage(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, (uint256,address,bytes32,address,uint256,address[],(uint256,address)[],bytes) message) func (_TeleporterMessenger *TeleporterMessengerFilterer) ParseReceiveCrossChainMessage(log types.Log) (*TeleporterMessengerReceiveCrossChainMessage, error) { event := new(TeleporterMessengerReceiveCrossChainMessage) if err := _TeleporterMessenger.contract.UnpackLog(event, "ReceiveCrossChainMessage", log); err != nil { diff --git a/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go index e984531fa..6f8f1438f 100644 --- a/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/Teleporter/upgrades/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: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea2646970667358221220f2acda050c63d80770f142f519489f6aeee0a30bfdbb69f4d6732e8a02f49c4e64736f6c63430008120033", + Bin: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea2646970667358221220322a2b1a682b1ded2b648e61d3bc751c9040e33f15154af49031517892b27ab764736f6c63430008120033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/contracts/src/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge.sol b/contracts/src/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge.sol index 0abb277aa..2bb29ac79 100644 --- a/contracts/src/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge.sol +++ b/contracts/src/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge.sol @@ -302,7 +302,7 @@ contract ERC20Bridge is IERC20Bridge, ReentrancyGuard, TeleporterOwnerUpgradeabl * Receives a Teleporter message and routes to the appropriate internal function call. */ function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message ) internal override { @@ -318,7 +318,7 @@ contract ERC20Bridge is IERC20Bridge, ReentrancyGuard, TeleporterOwnerUpgradeabl uint8 nativeDecimals ) = abi.decode(actionData, (address, string, string, uint8)); _createBridgeToken({ - nativeBlockchainID: originBlockchainID, + nativeBlockchainID: sourceBlockchainID, nativeBridgeAddress: originSenderAddress, nativeContractAddress: nativeContractAddress, nativeName: nativeName, @@ -329,7 +329,7 @@ contract ERC20Bridge is IERC20Bridge, ReentrancyGuard, TeleporterOwnerUpgradeabl (address nativeContractAddress, address recipient, uint256 amount) = abi.decode(actionData, (address, address, uint256)); _mintBridgeTokens( - originBlockchainID, originSenderAddress, nativeContractAddress, recipient, amount + sourceBlockchainID, originSenderAddress, nativeContractAddress, recipient, amount ); } else if (action == BridgeAction.Transfer) { ( @@ -341,7 +341,7 @@ contract ERC20Bridge is IERC20Bridge, ReentrancyGuard, TeleporterOwnerUpgradeabl uint256 secondaryFeeAmount ) = abi.decode(actionData, (bytes32, address, address, address, uint256, uint256)); _transferBridgeTokens({ - sourceBlockchainID: originBlockchainID, + sourceBlockchainID: sourceBlockchainID, sourceBridgeAddress: originSenderAddress, destinationBlockchainID: destinationBlockchainID, destinationBridgeAddress: destinationBridgeAddress, diff --git a/contracts/src/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger.sol b/contracts/src/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger.sol index 75e470e7a..028c632db 100644 --- a/contracts/src/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger.sol +++ b/contracts/src/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger.sol @@ -33,7 +33,7 @@ contract ExampleCrossChainMessenger is ReentrancyGuard, TeleporterOwnerUpgradeab string message; } - mapping(bytes32 originBlockchainID => Message message) private _messages; + mapping(bytes32 sourceBlockchainID => Message message) private _messages; /** * @dev Emitted when a message is submited to be sent. @@ -51,7 +51,7 @@ contract ExampleCrossChainMessenger is ReentrancyGuard, TeleporterOwnerUpgradeab * @dev Emitted when a new message is received from a given chain ID. */ event ReceiveMessage( - bytes32 indexed originBlockchainID, address indexed originSenderAddress, string message + bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, string message ); constructor(address teleporterRegistryAddress) @@ -106,12 +106,12 @@ contract ExampleCrossChainMessenger is ReentrancyGuard, TeleporterOwnerUpgradeab * @dev Returns the current message from another chain. * @return The sender of the message, and the message itself. */ - function getCurrentMessage(bytes32 originBlockchainID) + function getCurrentMessage(bytes32 sourceBlockchainID) external view returns (address, string memory) { - Message memory messageInfo = _messages[originBlockchainID]; + Message memory messageInfo = _messages[sourceBlockchainID]; return (messageInfo.sender, messageInfo.message); } @@ -121,13 +121,13 @@ contract ExampleCrossChainMessenger is ReentrancyGuard, TeleporterOwnerUpgradeab * Receives a message from another chain. */ function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message ) internal override { // Store the message. string memory messageString = abi.decode(message, (string)); - _messages[originBlockchainID] = Message(originSenderAddress, messageString); - emit ReceiveMessage(originBlockchainID, originSenderAddress, messageString); + _messages[sourceBlockchainID] = Message(originSenderAddress, messageString); + emit ReceiveMessage(sourceBlockchainID, originSenderAddress, messageString); } } diff --git a/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher.sol b/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher.sol index d2939a0fa..ad08cacfe 100644 --- a/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher.sol +++ b/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher.sol @@ -56,7 +56,7 @@ contract BlockHashPublisher { bytes32 blockHash = blockhash(blockHeight); // ABI encode the function arguments to be called on the destination. - // The originBlockchainID and originSenderAddress arguments of the target function are provided by Warp/Teleporter. + // The sourceBlockchainID and originSenderAddress arguments of the target function are provided by Warp/Teleporter. bytes memory messageData = abi.encode(blockHeight, blockHash); emit PublishBlockHash(destinationBlockchainID, destinationAddress, blockHeight, blockHash); diff --git a/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver.sol b/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver.sol index 397dc9a76..9acb32964 100644 --- a/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver.sol +++ b/contracts/src/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver.sol @@ -28,7 +28,7 @@ contract BlockHashReceiver is TeleporterOwnerUpgradeable { * @dev Emitted when a new block hash is received from a given origin chain ID. */ event ReceiveBlockHash( - bytes32 indexed originBlockchainID, + bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, uint256 indexed blockHeight, bytes32 blockHash @@ -63,12 +63,12 @@ contract BlockHashReceiver is TeleporterOwnerUpgradeable { * - Origin sender address must be the source publisher contract address that initiated the BlockHashReceiver. */ function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID_, address originSenderAddress, bytes memory message ) internal override { require( - originBlockchainID == sourceBlockchainID, "BlockHashReceiver: invalid source chain ID" + sourceBlockchainID_ == sourceBlockchainID, "BlockHashReceiver: invalid source chain ID" ); require( originSenderAddress == sourcePublisherContractAddress, @@ -80,7 +80,7 @@ contract BlockHashReceiver is TeleporterOwnerUpgradeable { if (blockHeight > latestBlockHeight) { latestBlockHeight = blockHeight; latestBlockHash = blockHash; - emit ReceiveBlockHash(originBlockchainID, originSenderAddress, blockHeight, blockHash); + emit ReceiveBlockHash(sourceBlockchainID_, originSenderAddress, blockHeight, blockHash); } } } diff --git a/contracts/src/Teleporter/ITeleporterMessenger.sol b/contracts/src/Teleporter/ITeleporterMessenger.sol index 989342523..f2814a163 100644 --- a/contracts/src/Teleporter/ITeleporterMessenger.sol +++ b/contracts/src/Teleporter/ITeleporterMessenger.sol @@ -78,7 +78,7 @@ interface ITeleporterMessenger { * but message execution fails. Failed messages can then be retried with `retryMessageExecution` */ event MessageExecutionFailed( - bytes32 indexed messageID, bytes32 indexed originBlockchainID, TeleporterMessage message + bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, TeleporterMessage message ); /** @@ -88,21 +88,21 @@ interface ITeleporterMessenger { * * Each message received can be executed successfully at most once. */ - event MessageExecuted(bytes32 indexed messageID, bytes32 indexed originBlockchainID); + event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID); /** * @dev Emitted when a TeleporterMessage is successfully received. */ event ReceiveCrossChainMessage( bytes32 indexed messageID, - bytes32 indexed originBlockchainID, + bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, TeleporterMessage message ); /** - * @dev Emitted when a receipt is marked as received on the origin chain that sent the + * @dev Emitted when a receipt is marked as received on the source chain that sent the * corresponding Teleporter message. */ event ReceiptReceived( @@ -168,20 +168,20 @@ interface ITeleporterMessenger { * was later deployed to that address. Messages are ensured to be successfully executed at most once. */ function retryMessageExecution( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, TeleporterMessage calldata message ) external; /** * @dev Sends the receipts for the given `messageIDs`. * - * Sends the specified message receipts in a new message (with an empty payload) back to the origin chain. + * Sends the specified message receipts in a new message (with an empty payload) back to the source chain. * This is intended for use in sending receipts that have not been sent in a timely manner by the standard * receipt delivery mechanism. * @return The message ID of the newly sent message. */ function sendSpecifiedReceipts( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, bytes32[] calldata messageIDs, TeleporterFeeInfo calldata feeInfo, address[] calldata allowedRelayerAddresses @@ -205,7 +205,7 @@ interface ITeleporterMessenger { function messageReceived(bytes32 messageID) external view returns (bool); /** - * @dev Returns the address the relayer reward should be sent to on the origin chain + * @dev Returns the address the relayer reward should be sent to on the source chain * for a given message, assuming that the message has already been delivered. * @return The relayer reward address for the given message. */ @@ -238,17 +238,17 @@ interface ITeleporterMessenger { function getNextMessageID(bytes32 destinationBlockchainID) external view returns (bytes32); /** - * @dev Gets the number of receipts that are waiting to be sent to the given origin chain ID. + * @dev Gets the number of receipts that are waiting to be sent to the given source chain ID. * @return Size of the given queue. */ - function getReceiptQueueSize(bytes32 originBlockchainID) external view returns (uint256); + function getReceiptQueueSize(bytes32 sourceBlockchainID) external view returns (uint256); /** - * @dev Gets the receipt at the given index in the queue for the given origin chain ID. + * @dev Gets the receipt at the given index in the queue for the given source chain ID. * @return The receipt requested. */ function getReceiptAtIndex( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, uint256 index ) external view returns (TeleporterMessageReceipt memory); } diff --git a/contracts/src/Teleporter/ITeleporterReceiver.sol b/contracts/src/Teleporter/ITeleporterReceiver.sol index d97f9e496..3e9859723 100644 --- a/contracts/src/Teleporter/ITeleporterReceiver.sol +++ b/contracts/src/Teleporter/ITeleporterReceiver.sol @@ -14,12 +14,12 @@ interface ITeleporterReceiver { /** * @dev Called by TeleporterMessenger on the receiving chain. * - * @param originBlockchainID is provided by the TeleporterMessenger contract. + * @param sourceBlockchainID is provided by the TeleporterMessenger contract. * @param originSenderAddress is provided by the TeleporterMessenger contract. * @param message is the TeleporterMessage payload set by the sender. */ function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external; diff --git a/contracts/src/Teleporter/TeleporterMessenger.sol b/contracts/src/Teleporter/TeleporterMessenger.sol index 9c6be2760..3eb2fbaf9 100644 --- a/contracts/src/Teleporter/TeleporterMessenger.sol +++ b/contracts/src/Teleporter/TeleporterMessenger.sol @@ -320,15 +320,15 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { * - `message` must have previously failed to execute, and matches the hash of the failed message. */ function retryMessageExecution( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, TeleporterMessage calldata message ) external receiverNonReentrant { - // Calculate the message ID based on the origin blockchainID and message nonce. + // Calculate the message ID based on the source blockchainID and message nonce. // If the blockchain ID has yet to be initialized, no messages have ever been received by // this contract, meaning that the message to be retried will not be found in any event. // Thus, don't need to initialize the blockchain ID here. bytes32 messageID = - calculateMessageID(originBlockchainID, blockchainID, message.messageNonce); + calculateMessageID(sourceBlockchainID, blockchainID, message.messageNonce); // Check that the hash of the payload provided matches the hash of the payload that previously failed to execute. bytes32 failedMessageHash = receivedFailedMessageHashes[messageID]; @@ -347,7 +347,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // Clear the failed message hash from state prior to retrying its execution to redundantly prevent // reentrance attacks (on top of the nonReentrant guard). - emit MessageExecuted(messageID, originBlockchainID); + emit MessageExecuted(messageID, sourceBlockchainID); delete receivedFailedMessageHashes[ messageID ]; @@ -358,7 +358,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // a fallback function, then the fallback function will be called instead. bytes memory payload = abi.encodeCall( ITeleporterReceiver.receiveTeleporterMessage, - (originBlockchainID, message.senderAddress, message.message) + (sourceBlockchainID, message.senderAddress, message.message) ); // Reattempt the message execution with all of the gas left available for execution of this transaction. @@ -389,7 +389,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { * - `messageIDs` must all be valid and have existing receipts. */ function sendSpecifiedReceipts( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, bytes32[] calldata messageIDs, TeleporterFeeInfo calldata feeInfo, address[] calldata allowedRelayerAddresses @@ -411,11 +411,11 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { uint256 receivedMessageNonce = _receivedMessageNonces[receivedMessageID]; require(receivedMessageNonce != 0, "TeleporterMessenger: receipt not found"); - // Check that the message ID was received from the specified origin blockchain. + // Check that the message ID was received from the specified source blockchain. require( receivedMessageID - == calculateMessageID(originBlockchainID, blockchainID_, receivedMessageNonce), - "TeleporterMessenger: message ID not from origin blockchain" + == calculateMessageID(sourceBlockchainID, blockchainID_, receivedMessageNonce), + "TeleporterMessenger: message ID not from source blockchain" ); // Get the relayer reward address for the message. @@ -429,7 +429,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { return _sendTeleporterMessage( TeleporterMessageInput({ - destinationBlockchainID: originBlockchainID, + destinationBlockchainID: sourceBlockchainID, destinationAddress: address(0), feeInfo: feeInfo, requiredGasLimit: uint256(0), @@ -517,18 +517,18 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { /** * @dev See {ITeleporterMessenger-getReceiptQueueSize} */ - function getReceiptQueueSize(bytes32 originBlockchainID) external view returns (uint256) { - return receiptQueues[originBlockchainID].size(); + function getReceiptQueueSize(bytes32 sourceBlockchainID) external view returns (uint256) { + return receiptQueues[sourceBlockchainID].size(); } /** * @dev See {ITeleporterMessenger-getReceiptAtIndex} */ function getReceiptAtIndex( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, uint256 index ) external view returns (TeleporterMessageReceipt memory) { - return receiptQueues[originBlockchainID].getReceiptAtIndex(index); + return receiptQueues[sourceBlockchainID].getReceiptAtIndex(index); } /** @@ -719,7 +719,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { */ function _handleInitialMessageExecution( bytes32 messageID, - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, TeleporterMessage memory message ) private { // Check that the message delivery was provided the required gas amount as specified by the sender. @@ -734,7 +734,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // execution so that it can be retried in the future should a contract be later deployed to // the address. if (message.destinationAddress.code.length == 0) { - _storeFailedMessageExecution(messageID, originBlockchainID, message); + _storeFailedMessageExecution(messageID, sourceBlockchainID, message); return; } @@ -742,7 +742,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // defined by the {ITeleporterReceiver} interface. bytes memory payload = abi.encodeCall( ITeleporterReceiver.receiveTeleporterMessage, - (originBlockchainID, message.senderAddress, message.message) + (sourceBlockchainID, message.senderAddress, message.message) ); // Call the destination address of the message with the formatted call data. Only provide the required @@ -755,11 +755,11 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // retries). Either way, the message will now be considered received since the relayer // provided enough gas to meet the required gas limit. if (!success) { - _storeFailedMessageExecution(messageID, originBlockchainID, message); + _storeFailedMessageExecution(messageID, sourceBlockchainID, message); return; } - emit MessageExecuted(messageID, originBlockchainID); + emit MessageExecuted(messageID, sourceBlockchainID); } function _tryExecuteMessage( @@ -795,13 +795,13 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { */ function _storeFailedMessageExecution( bytes32 messageID, - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, TeleporterMessage memory message ) private { receivedFailedMessageHashes[messageID] = keccak256(abi.encode(message)); // Emit a failed execution event for anyone monitoring unsuccessful messages to retry. - emit MessageExecutionFailed(messageID, originBlockchainID, message); + emit MessageExecutionFailed(messageID, sourceBlockchainID, message); } /** diff --git a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol index e6fddacb7..f8e96b9f2 100644 --- a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol @@ -30,7 +30,7 @@ contract SampleMessageReceiver is ITeleporterReceiver { } function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external { @@ -40,10 +40,10 @@ contract SampleMessageReceiver is ITeleporterReceiver { abi.decode(message, (SampleMessageReceiverAction, bytes)); if (action == SampleMessageReceiverAction.Receive) { (string memory messageString, bool succeed) = abi.decode(actionData, (string, bool)); - _receiveMessage(originBlockchainID, originSenderAddress, messageString, succeed); + _receiveMessage(sourceBlockchainID, originSenderAddress, messageString, succeed); } else if (action == SampleMessageReceiverAction.ReceiveRecursive) { string memory messageString = abi.decode(actionData, (string)); - _receiveMessageRecursive(originBlockchainID, originSenderAddress, messageString); + _receiveMessageRecursive(sourceBlockchainID, originSenderAddress, messageString); } else { revert("invalid action"); } @@ -51,7 +51,7 @@ contract SampleMessageReceiver is ITeleporterReceiver { // Stores the message in this contract to be fetched by anyone. function _receiveMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, string memory message, bool succeed @@ -59,13 +59,13 @@ contract SampleMessageReceiver is ITeleporterReceiver { require(msg.sender == teleporterContract, "unauthorized"); require(succeed, "intended to fail"); latestMessage = message; - latestMessageSenderSubnetID = originBlockchainID; + latestMessageSenderSubnetID = sourceBlockchainID; latestMessageSenderAddress = originSenderAddress; } // Tries to recursively call the teleporterContract to receive a message, which should always fail. function _receiveMessageRecursive( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, string memory message ) internal { @@ -73,7 +73,7 @@ contract SampleMessageReceiver is ITeleporterReceiver { ITeleporterMessenger messenger = ITeleporterMessenger(teleporterContract); messenger.receiveCrossChainMessage(0, address(42)); latestMessage = message; - latestMessageSenderSubnetID = originBlockchainID; + latestMessageSenderSubnetID = sourceBlockchainID; latestMessageSenderAddress = originSenderAddress; } } diff --git a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol index 9a4374886..f538a7aa4 100644 --- a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol @@ -33,7 +33,7 @@ contract FlakyMessageReceiver is ITeleporterReceiver { } function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata messageBytes ) external { @@ -43,10 +43,10 @@ contract FlakyMessageReceiver is ITeleporterReceiver { abi.decode(messageBytes, (FlakyMessageReceiverAction, bytes)); if (action == FlakyMessageReceiverAction.ReceiveMessage) { string memory message = abi.decode(actionData, (string)); - _receiveMessage(originBlockchainID, originSenderAddress, message); + _receiveMessage(sourceBlockchainID, originSenderAddress, message); } else if (action == FlakyMessageReceiverAction.RetryReceive) { string memory message = abi.decode(actionData, (string)); - _retryReceive(originBlockchainID, originSenderAddress, message); + _retryReceive(sourceBlockchainID, originSenderAddress, message); } else { revert("invalid action"); } @@ -54,20 +54,20 @@ contract FlakyMessageReceiver is ITeleporterReceiver { // Stores the message in this contract to be fetched by anyone. function _receiveMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, string memory message ) internal { require(msg.sender == teleporterContract, "unauthorized"); require(block.number % 2 != 0, "even block number"); latestMessage = message; - latestMessageSenderSubnetID = originBlockchainID; + latestMessageSenderSubnetID = sourceBlockchainID; latestMessageSenderAddress = originSenderAddress; } // Tries to call the teleporterContract to receive a message, which should always fail. function _retryReceive( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, string memory message ) internal { @@ -77,7 +77,7 @@ contract FlakyMessageReceiver is ITeleporterReceiver { ITeleporterMessenger messenger = ITeleporterMessenger(teleporterContract); messenger.receiveCrossChainMessage(0, address(42)); latestMessage = message; - latestMessageSenderSubnetID = originBlockchainID; + latestMessageSenderSubnetID = sourceBlockchainID; latestMessageSenderAddress = originSenderAddress; } } @@ -101,12 +101,12 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { function testExecutionFailsAgain() public { // First submit a message whose execution fails. - (bytes32 originBlockchainID, TeleporterMessage memory message,) = + (bytes32 sourceBlockchainID, TeleporterMessage memory message,) = _receiveFailedMessage(false); // Now retry it in another block with an even timestamp so that it fails again. vm.expectRevert(_formatTeleporterErrorMessage("retry execution failed")); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function testMessageHashNotFound() public { @@ -128,37 +128,37 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { function testInvalidMessageHash() public { // First submit a message whose execution fails. - (bytes32 originBlockchainID, TeleporterMessage memory message,) = + (bytes32 sourceBlockchainID, TeleporterMessage memory message,) = _receiveFailedMessage(false); // Alter the message before retrying it. message.message = "altered message"; vm.expectRevert(_formatTeleporterErrorMessage("invalid message hash")); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function testCanNotRetryAgainAfterSuccess() public { // Successfully retry a message execution. - (bytes32 originBlockchainID, TeleporterMessage memory message) = _successfullyRetryMessage(); + (bytes32 sourceBlockchainID, TeleporterMessage memory message) = _successfullyRetryMessage(); // Now try again and make sure it's been cleared from state vm.expectRevert(_formatTeleporterErrorMessage("message not found")); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function testCanNotReceiveMessageWhileRetrying() public { // First submit a message whose execution fails. - (bytes32 originBlockchainID, TeleporterMessage memory message,) = + (bytes32 sourceBlockchainID, TeleporterMessage memory message,) = _receiveFailedMessage(false); // Now retry it within a block with an odd timestamp. // It should still fail because it tries to re-enter the teleporter contract. vm.expectRevert(); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function testEOAFailsThenRetrySucceeds() public { - (bytes32 originBlockchainID, address destinationAddress, TeleporterMessage memory message) = + (bytes32 sourceBlockchainID, address destinationAddress, TeleporterMessage memory message) = _receiveMessageSentToEOA(); // Now mock a contract being deployed to the destination address. It will still return no @@ -166,16 +166,16 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { vm.etch(destinationAddress, new bytes(10)); // Retrying the message execution should not revert. - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function testEOAFailsAgainOnRetry() public { - (bytes32 originBlockchainID,, TeleporterMessage memory message) = _receiveMessageSentToEOA(); + (bytes32 sourceBlockchainID,, TeleporterMessage memory message) = _receiveMessageSentToEOA(); // Retrying the message execution should revert since there is still no contract deployed // to the destination address. vm.expectRevert(_formatTeleporterErrorMessage("destination address has no code")); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); } function _receiveFailedMessage(bool retryReceive) @@ -241,7 +241,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { function _successfullyRetryMessage() internal returns (bytes32, TeleporterMessage memory) { // First submit a message whose execution fails. - (bytes32 originBlockchainID, TeleporterMessage memory message, string memory messageString) + (bytes32 sourceBlockchainID, TeleporterMessage memory message, string memory messageString) = _receiveFailedMessage(false); // Now retry the message execution in a block with an odd height, which should succeed. @@ -249,17 +249,17 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit MessageExecuted( teleporterMessenger.calculateMessageID( - originBlockchainID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, message.messageNonce + sourceBlockchainID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, message.messageNonce ), - originBlockchainID + sourceBlockchainID ); - teleporterMessenger.retryMessageExecution(originBlockchainID, message); + teleporterMessenger.retryMessageExecution(sourceBlockchainID, message); // Check that the message had the proper affect on the destination contract. assertEq(destinationContract.latestMessage(), messageString); - assertEq(destinationContract.latestMessageSenderSubnetID(), originBlockchainID); + assertEq(destinationContract.latestMessageSenderSubnetID(), sourceBlockchainID); assertEq(destinationContract.latestMessageSenderAddress(), address(this)); - return (originBlockchainID, message); + return (sourceBlockchainID, message); } } diff --git a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol index ef8e0ae16..91799e769 100644 --- a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol +++ b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol @@ -49,17 +49,17 @@ contract TeleporterMessengerTest is Test { event ReceiveCrossChainMessage( bytes32 indexed messageID, - bytes32 indexed originBlockchainID, + bytes32 indexed sourceBlockchainID, address indexed deliverer, address rewardRedeemer, TeleporterMessage message ); event MessageExecutionFailed( - bytes32 indexed messageID, bytes32 indexed originBlockchainID, TeleporterMessage message + bytes32 indexed messageID, bytes32 indexed sourceBlockchainID, TeleporterMessage message ); - event MessageExecuted(bytes32 indexed messageID, bytes32 indexed originBlockchainID); + event MessageExecuted(bytes32 indexed messageID, bytes32 indexed sourceBlockchainID); event ReceiptReceived( bytes32 indexed messageID, @@ -163,7 +163,7 @@ contract TeleporterMessengerTest is Test { } function _receiveTestMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, uint256 messageNonce, address relayerRewardAddress, TeleporterMessageReceipt[] memory receipts @@ -176,7 +176,7 @@ contract TeleporterMessengerTest is Test { // Both the sender and destination address should be the teleporter contract address, // mocking as if the universal deployer pattern was used. WarpMessage memory warpMessage = - _createDefaultWarpMessage(originBlockchainID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(sourceBlockchainID, abi.encode(messageToReceive)); // We have to mock the precompile call so that it doesn't revert in the tests. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -185,7 +185,7 @@ contract TeleporterMessengerTest is Test { vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( teleporterMessenger.calculateMessageID( - originBlockchainID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageNonce + sourceBlockchainID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageNonce ), warpMessage.sourceChainID, address(this), @@ -257,11 +257,11 @@ contract TeleporterMessengerTest is Test { } function _createDefaultWarpMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, bytes memory payload ) internal view returns (WarpMessage memory) { return WarpMessage({ - sourceChainID: originBlockchainID, + sourceChainID: sourceBlockchainID, originSenderAddress: address(teleporterMessenger), payload: payload }); diff --git a/contracts/src/Teleporter/upgrades/TeleporterUpgradeable.sol b/contracts/src/Teleporter/upgrades/TeleporterUpgradeable.sol index d6a7d6d03..af0be27af 100644 --- a/contracts/src/Teleporter/upgrades/TeleporterUpgradeable.sol +++ b/contracts/src/Teleporter/upgrades/TeleporterUpgradeable.sol @@ -73,7 +73,7 @@ abstract contract TeleporterUpgradeable is Context, ITeleporterReceiver { * - `_msgSender()` must be a Teleporter version greater than or equal to `minTeleporterVersion`. */ function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external { @@ -89,7 +89,7 @@ abstract contract TeleporterUpgradeable is Context, ITeleporterReceiver { "TeleporterUpgradeable: Teleporter address paused" ); - _receiveTeleporterMessage(originBlockchainID, originSenderAddress, message); + _receiveTeleporterMessage(sourceBlockchainID, originSenderAddress, message); } /** @@ -200,7 +200,7 @@ abstract contract TeleporterUpgradeable is Context, ITeleporterReceiver { * This function should be overridden by contracts that inherit from this contract. */ function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message ) internal virtual; diff --git a/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol b/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol index fe8d4ba57..bc7e0f935 100644 --- a/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol @@ -18,7 +18,7 @@ contract ExampleOwnerUpgradeableApp is TeleporterOwnerUpgradeable { } function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message // solhint-disable-next-line no-empty-blocks ) internal override {} diff --git a/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol b/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol index 9bd7f66d0..0f82b869c 100644 --- a/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol @@ -24,7 +24,7 @@ contract ExampleUpgradeableApp is TeleporterUpgradeable { } function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message // solhint-disable-next-line no-empty-blocks ) internal override {} From 542e2eccbb432281be79815ecfc9f9176a2a9a23 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:19:21 +0000 Subject: [PATCH 02/12] rename originSenderAddress --- .../examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go | 2 +- .../ExampleCrossChainMessenger.go | 2 +- .../ERC20TokenSource/ERC20TokenSource.go | 2 +- .../NativeTokenDestination/NativeTokenDestination.go | 2 +- .../NativeTokenSource/NativeTokenSource.go | 2 +- .../BlockHashPublisher/BlockHashPublisher.go | 2 +- .../BlockHashReceiver/BlockHashReceiver.go | 2 +- .../Teleporter/TeleporterMessenger/TeleporterMessenger.go | 6 +++--- .../go/Teleporter/TeleporterMessenger/event_test.go | 4 ++-- abi-bindings/go/Teleporter/TeleporterMessenger/packing.go | 2 +- .../go/Teleporter/TeleporterMessenger/packing_test.go | 4 ++-- .../upgrades/TeleporterRegistry/TeleporterRegistry.go | 2 +- .../examples/NativeTokenBridge/ERC20TokenSource.sol | 4 ++-- .../examples/NativeTokenBridge/NativeTokenDestination.sol | 4 ++-- .../examples/NativeTokenBridge/NativeTokenSource.sol | 4 ++-- contracts/src/Teleporter/ITeleporterMessenger.sol | 2 +- contracts/src/Teleporter/TeleporterMessenger.sol | 6 +++--- contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol | 4 ++-- contracts/src/Teleporter/tests/GetMessageHashTests.t.sol | 2 +- .../tests/HandleInitialMessageExecutionTests.t.sol | 8 ++++---- .../Teleporter/tests/InitializeBlockchainIDTests.t.sol | 2 +- .../Teleporter/tests/ReceiveCrossChainMessageTests.t.sol | 6 +++--- .../src/Teleporter/tests/RetryMessageExecutionTests.t.sol | 4 ++-- .../tests/RetrySendCrossChainMessageTests.t.sol | 6 +++--- .../src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol | 6 +++--- .../src/Teleporter/tests/TeleporterMessengerTest.t.sol | 2 +- tests/flows/insufficient_gas.go | 4 ++-- tests/local/network.go | 2 +- 28 files changed, 49 insertions(+), 49 deletions(-) diff --git a/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go b/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go index ccfdf6dd1..df300086f 100644 --- a/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go +++ b/abi-bindings/go/CrossChainApplications/examples/ERC20Bridge/ERC20Bridge/ERC20Bridge.go @@ -32,7 +32,7 @@ var ( // ERC20BridgeMetaData contains all meta data concerning the ERC20Bridge contract. var ERC20BridgeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BridgeTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"name\":\"CreateBridgeToken\",\"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\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"MintBridgeTokens\",\"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\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"}],\"name\":\"SubmitCreateBridgeToken\",\"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\":[],\"name\":\"CREATE_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_BRIDGE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_PRECOMPILE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"primaryFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryFeeAmount\",\"type\":\"uint256\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"bridgedBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nativeName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nativeSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"nativeDecimals\",\"type\":\"uint8\"}],\"name\":\"encodeCreateBridgeTokenData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bridgeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeMintBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"encodeTransferBridgeTokensData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"nativeBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenAddress\",\"type\":\"address\"}],\"name\":\"nativeToWrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bridgeTokenAddress\",\"type\":\"address\"}],\"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\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractERC20\",\"name\":\"nativeToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messageFeeAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"messageFeeAmount\",\"type\":\"uint256\"}],\"name\":\"submitCreateBridgeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nativeTokenContract\",\"type\":\"address\"}],\"name\":\"submittedBridgeTokenCreations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"tokenCreationSubmitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeToken\",\"type\":\"address\"}],\"name\":\"wrappedTokenContracts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"bridgeTokenExists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200454338038062004543833981016040819052620000349162000212565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d919062000244565b600255506200013c33620001c0565b507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b6919062000244565b60a052506200025e565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200022557600080fd5b81516001600160a01b03811681146200023d57600080fd5b9392505050565b6000602082840312156200025757600080fd5b5051919050565b60805160a051614295620002ae6000396000818161021b01528181610b2801528181611aaf015261237a01526000818161018001528181610ddd0152818161101d015261122001526142956000f3fe60806040523480156200001157600080fd5b5060043610620001755760003560e01c80637a465fd911620000d3578063b9e55da11162000086578063b9e55da114620003b7578063c60da61214620003eb578063c63d22071462000402578063c868efaa1462000419578063d2cc7a701462000430578063f2fde38b146200043957600080fd5b80637a465fd914620002e65780638343f66114620002f15780638c56fcf014620003395780638da5cb5b14620003505780639731429714620003625780639bd9abc0146200039157600080fd5b80635f217bcc116200012c5780635f217bcc146200026357806365435568146200026e5780636b47cd9a14620002ab5780636c7e40d114620002b6578063715018a614620002cd5780637497185614620002d757600080fd5b80631a7f5bec146200017a5780632b0d8f1814620001bf578063367e958414620001d85780634511243e14620001fe5780634950d2d014620002155780635eb99514146200024c575b600080fd5b620001a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d6620001d036600462002600565b62000450565b005b620001ef620001e936600462002701565b6200055c565b604051620001b69190620027e9565b620001d66200020f36600462002600565b620005bb565b6200023d7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001b6565b620001d66200025d366004620027fe565b620006bf565b6200023d621e848081565b620001a26200027f36600462002818565b60076020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6200023d620493e081565b620001d6620002c73660046200285f565b620006d7565b620001d662000a28565b620001a26005600160991b0181565b6200023d62030d4081565b620003286200030236600462002818565b600460209081526000938452604080852082529284528284209052825290205460ff1681565b6040519015158152602001620001b6565b620001ef6200034a366004620028c1565b62000a40565b6003546001600160a01b0316620001a2565b620003286200037336600462002600565b6001600160a01b031660009081526001602052604090205460ff1690565b62000328620003a236600462002600565b60066020526000908152604090205460ff1681565b6200023d620003c836600462002818565b600560209081526000938452604080852082529284528284209052825290205481565b620001ef620003fc36600462002907565b62000a9c565b620001d66200041336600462002973565b62000b1c565b620001d66200042a366004620029e8565b62000dd0565b6002546200023d565b620001d66200044a36600462002600565b62000f93565b6200045a6200100f565b6001600160a01b0381166200048c5760405162461bcd60e51b8152600401620004839062002a78565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156200050d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840162000483565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b606060008585858560405160200162000579949392919062002ac6565b6040516020818303038152906040529050600081604051602001620005a092919062002b2b565b6040516020818303038152906040529150505b949350505050565b620005c56200100f565b6001600160a01b038116620005ee5760405162461bcd60e51b8152600401620004839062002a78565b6001600160a01b03811660009081526001602052604090205460ff166200066a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840162000483565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b620006c96200100f565b620006d48162001019565b50565b620006e1620011c0565b6001600160a01b0384166200070a5760405162461bcd60e51b8152600401620004839062002b65565b6000620007166200121b565b90506000821562000745576200072d848462001335565b9050620007456001600160a01b0385168383620014ab565b60006200088386876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200078b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007b5919081019062002c0a565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200081e919081019062002c0a565b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062002c43565b90506000836001600160a01b031663624488506040518060c001604052808c81526020018b6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001888152508152602001621e84808152602001600067ffffffffffffffff811115620008ff57620008ff62002620565b60405190808252806020026020018201604052801562000929578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162000951919062002ca9565b6020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000997919062002d2b565b60008a81526004602090815260408083206001600160a01b03808e16808652918452828520908d16808652935292819020805460ff1916600117905551929350918b907f3800d3f6af9e0e73fee531cb134766d3dae314dd340599073c396d9e5e8736bd9062000a0a9086815260200190565b60405180910390a45050505062000a216001600055565b5050505050565b62000a3262001597565b62000a3e6000620015f3565b565b6060600084848460405160200162000a5b9392919062002d45565b604051602081830303815290604052905060018160405160200162000a8292919062002b2b565b6040516020818303038152906040529150505b9392505050565b60408051602081018890526001600160a01b0387811682840152868116606080840191909152908616608083015260a0820185905260c08083018590528351808403909101815260e08301909352919062000b009060029083906101000162002b2b565b6040516020818303038152906040529150509695505050505050565b62000b26620011c0565b7f0000000000000000000000000000000000000000000000000000000000000000870362000b685760405162461bcd60e51b8152600401620004839062002d69565b6001600160a01b03841662000b915760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b03861662000bba5760405162461bcd60e51b8152600401620004839062002b65565b6001600160a01b03851660009081526006602052604090205460ff161562000ca55762000be8818362002e0a565b831162000c475760405162461bcd60e51b815260206004820152602660248201527f45524332304272696467653a20696e73756666696369656e7420746f74616c20604482015265185b5bdd5b9d60d21b606482015260840162000483565b62000c9f6040518060e00160405280898152602001886001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381525062001645565b62000dbc565b60008781526004602090815260408083206001600160a01b03808b168552908352818420908916845290915290205460ff1662000d375760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e76616c69642062726964676520746f6b656044820152686e206164647265737360b81b606482015260840162000483565b600062000d45868562001335565b905082811162000daa5760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e73756666696369656e742061646a757374604482015268195908185b5bdd5b9d60ba1b606482015260840162000483565b62000dba88888888858862001a31565b505b62000dc76001600055565b50505050505050565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000e48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6e919062002d2b565b101562000ed75760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840162000483565b62000ee23362000373565b1562000f4a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840162000483565b62000f8d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001ced92505050565b50505050565b62000f9d62001597565b6001600160a01b038116620010045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000483565b620006d481620015f3565b62000a3e62001597565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200107a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010a0919062002d2b565b60025490915081831115620011125760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840162000483565b808311620011895760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840162000483565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b600260005403620012145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000483565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a3919062002e20565b9050620012c8816001600160a01b031660009081526001602052604090205460ff1690565b15620013305760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840162000483565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a5919062002d2b565b9050620013be6001600160a01b03851633308662001e6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562001406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142c919062002d2b565b9050818111620014945760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840162000483565b620014a0828262002e40565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015620014fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001523919062002d2b565b6200152f919062002e0a565b6040516001600160a01b03851660248201526044810182905290915062000f8d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e8f565b6003546001600160a01b0316331462000a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000483565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000620016516200121b565b90506000808360a00151111562001694576200167683604001518460a0015162001335565b604084015190915062001694906001600160a01b03168383620014ab565b60008360a001518460800151620016ac919062002e40565b604085810151905163079cc67960e41b815233600482015260248101839052919250906001600160a01b038216906379cc679090604401600060405180830381600087803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b505050506000816001600160a01b031663f72539686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062002d2b565b90506000826001600160a01b0316631a0b79bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e7919062002e20565b9050818760000151036200182d57806001600160a01b031687602001516001600160a01b0316146200182d5760405162461bcd60e51b8152600401620004839062002e56565b6000620018b388600001518960200151866001600160a01b03166374d32ad46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062002e20565b8b60600151898d60c0015162000a9c565b90506000876001600160a01b031663624488506040518060c00160405280878152602001866001600160a01b0316815260200160405180604001604052808e604001516001600160a01b031681526020018c8152508152602001620493e08152602001600067ffffffffffffffff81111562001933576200193362002620565b6040519080825280602002602001820160405280156200195d578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001985919062002ca9565b6020604051808303816000875af1158015620019a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cb919062002d2b565b90508089600001518a604001516001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c602001518d606001518b60405162001a1e9392919062002d45565b60405180910390a4505050505050505050565b6001600160a01b03841660009081526006602052604090205460ff161562001aad5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2063616e6e6f742062726964676520777261707060448201526732b2103a37b5b2b760c11b606482015260840162000483565b7f0000000000000000000000000000000000000000000000000000000000000000860362001aef5760405162461bcd60e51b8152600401620004839062002d69565b600062001afb6200121b565b9050811562001b1a5762001b1a6001600160a01b0386168284620014ab565b600062001b28838562002e40565b60008981526005602090815260408083206001600160a01b03808d168552908352818420908b16845290915281208054929350839290919062001b6d90849062002e0a565b909155506000905062001b8287878462000a40565b90506000836001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b031681526020018a815250815260200162030d408152602001600067ffffffffffffffff81111562001bfe5762001bfe62002620565b60405190808252806020026020018201604052801562001c28578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001c50919062002ca9565b6020604051808303816000875af115801562001c70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c96919062002d2b565b9050808a896001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c8b8860405162001cd99392919062002d45565b60405180910390a450505050505050505050565b6000808280602001905181019062001d06919062002ea5565b9092509050600082600281111562001d225762001d2262002b15565b0362001d66576000806000808480602001905181019062001d44919062002f14565b935093509350935062001d5c89898686868662001f6d565b5050505062000a21565b600182600281111562001d7d5762001d7d62002b15565b0362001dbc5760008060008380602001905181019062001d9e919062002f9e565b92509250925062001db38888858585620020dc565b50505062000a21565b600282600281111562001dd35762001dd362002b15565b0362001e22576000806000806000808680602001905181019062001df8919062002fe6565b95509550955095509550955062001e168b8b88888888888862002256565b50505050505062000a21565b60405162461bcd60e51b815260206004820152601b60248201527f45524332304272696467653a20696e76616c696420616374696f6e0000000000604482015260640162000483565b62000f8d846323b872dd60e01b8585856040516024016200155f9392919062002d45565b600062001ee6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200240f9092919063ffffffff16565b80519091501562001f68578080602001905181019062001f07919062003056565b62001f685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000483565b505050565b60008681526007602090815260408083206001600160a01b038981168552908352818420888216855290925290912054161562001ffe5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20616c72656164604482015267792065786973747360c01b606482015260840162000483565b60008686868686866040516200201490620025dc565b62002025969594939291906200307a565b604051809103906000f08015801562002042573d6000803e3d6000fd5b506001600160a01b038181166000818152600660209081526040808320805460ff191660011790558c8352600782528083208c8616808552908352818420958c168085529583529281902080546001600160a01b031916851790555192835293945091928a917fe1c61a845f79534e11924517ddbedc668d0c20e467eafb4d3bd2858e2815f3b5910160405180910390a450505050505050565b620020e6620011c0565b6001600160a01b0382166200210f5760405162461bcd60e51b8152600401620004839062002db1565b60008581526007602090815260408083206001600160a01b0380891685529083528184208782168552909252909120541680620021a05760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20646f6573206e6044820152671bdd08195e1a5cdd60c21b606482015260840162000483565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528216906340c10f1990604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050604080516001600160a01b03878116825260208201879052851693507fc0767f158f0d5394b598489a51ed607cd55a8be2dcef113ba1626efcf4c6395492500160405180910390a25062000a216001600055565b62002260620011c0565b6001600160a01b038316620022895760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b038516620022b25760405162461bcd60e51b8152600401620004839062002b65565b60008881526005602090815260408083206001600160a01b03808c1685529083528184209088168452909152902054828110156200233d5760405162461bcd60e51b815260206004820152602160248201527f45524332304272696467653a20696e73756666696369656e742062616c616e636044820152606560f81b606482015260840162000483565b62002349838262002e40565b60008a81526005602090815260408083206001600160a01b03808e168552908352818420908a1684529091529020557f00000000000000000000000000000000000000000000000000000000000000008703620023e8576001600160a01b0386163014620023cb5760405162461bcd60e51b8152600401620004839062002e56565b620023e16001600160a01b038616858562002420565b50620023fa565b620023f887878787878762001a31565b505b620024056001600055565b5050505050505050565b6060620005b3848460008562002452565b6040516001600160a01b03831660248201526044810182905262001f6890849063a9059cbb60e01b906064016200155f565b606082471015620024b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000483565b600080866001600160a01b03168587604051620024d39190620030d9565b60006040518083038185875af1925050503d806000811462002512576040519150601f19603f3d011682016040523d82523d6000602084013e62002517565b606091505b50915091506200252a8783838762002535565b979650505050505050565b60608315620025a9578251600003620025a1576001600160a01b0385163b620025a15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000483565b5081620005b3565b620005b38383815115620025c05781518083602001fd5b8060405162461bcd60e51b8152600401620004839190620027e9565b61116880620030f883390190565b6001600160a01b0381168114620006d457600080fd5b6000602082840312156200261357600080fd5b813562000a9581620025ea565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002662576200266262002620565b604052919050565b600067ffffffffffffffff82111562002687576200268762002620565b50601f01601f191660200190565b600082601f830112620026a757600080fd5b8135620026be620026b8826200266a565b62002636565b818152846020838601011115620026d457600080fd5b816020850160208301376000918101602001919091529392505050565b60ff81168114620006d457600080fd5b600080600080608085870312156200271857600080fd5b84356200272581620025ea565b9350602085013567ffffffffffffffff808211156200274357600080fd5b620027518883890162002695565b945060408701359150808211156200276857600080fd5b50620027778782880162002695565b92505060608501356200278a81620026f1565b939692955090935050565b60005b83811015620027b257818101518382015260200162002798565b50506000910152565b60008151808452620027d581602086016020860162002795565b601f01601f19169290920160200192915050565b60208152600062000a956020830184620027bb565b6000602082840312156200281157600080fd5b5035919050565b6000806000606084860312156200282e57600080fd5b8335925060208401356200284281620025ea565b915060408401356200285481620025ea565b809150509250925092565b600080600080600060a086880312156200287857600080fd5b8535945060208601356200288c81620025ea565b935060408601356200289e81620025ea565b92506060860135620028b081620025ea565b949793965091946080013592915050565b600080600060608486031215620028d757600080fd5b8335620028e481620025ea565b92506020840135620028f681620025ea565b929592945050506040919091013590565b60008060008060008060c087890312156200292157600080fd5b8635955060208701356200293581620025ea565b945060408701356200294781620025ea565b935060608701356200295981620025ea565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156200298f57600080fd5b873596506020880135620029a381620025ea565b95506040880135620029b581620025ea565b94506060880135620029c781620025ea565b9699959850939660808101359560a0820135955060c0909101359350915050565b60008060008060608587031215620029ff57600080fd5b84359350602085013562002a1381620025ea565b9250604085013567ffffffffffffffff8082111562002a3157600080fd5b818701915087601f83011262002a4657600080fd5b81358181111562002a5657600080fd5b88602082850101111562002a6957600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b6001600160a01b038516815260806020820181905260009062002aec90830186620027bb565b828103604084015262002b008186620027bb565b91505060ff8316606083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b60006003841062002b4c57634e487b7160e01b600052602160045260246000fd5b83825260406020830152620005b36040830184620027bb565b6020808252602c908201527f45524332304272696467653a207a65726f2064657374696e6174696f6e20627260408201526b69646765206164647265737360a01b606082015260800190565b600062002bc2620026b8846200266a565b905082815283838301111562002bd757600080fd5b62000a9583602083018462002795565b600082601f83011262002bf957600080fd5b62000a958383516020850162002bb1565b60006020828403121562002c1d57600080fd5b815167ffffffffffffffff81111562002c3557600080fd5b620005b38482850162002be7565b60006020828403121562002c5657600080fd5b815162000a9581620026f1565b600081518084526020808501945080840160005b8381101562002c9e5781516001600160a01b03168752958201959082019060010162002c77565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015262002d0c61010084018262002c63565b905060a0840151601f198483030160e0850152620014a08282620027bb565b60006020828403121562002d3e57600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526028908201527f45524332304272696467653a2063616e6e6f742062726964676520746f20736160408201526736b29031b430b4b760c11b606082015260800190565b60208082526023908201527f45524332304272696467653a207a65726f20726563697069656e74206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620014a557620014a562002df4565b60006020828403121562002e3357600080fd5b815162000a9581620025ea565b81810381811115620014a557620014a562002df4565b6020808252602f908201527f45524332304272696467653a20696e76616c69642064657374696e6174696f6e60408201526e20627269646765206164647265737360881b606082015260800190565b6000806040838503121562002eb957600080fd5b82516003811062002ec957600080fd5b602084015190925067ffffffffffffffff81111562002ee757600080fd5b8301601f8101851362002ef957600080fd5b62002f0a8582516020840162002bb1565b9150509250929050565b6000806000806080858703121562002f2b57600080fd5b845162002f3881620025ea565b602086015190945067ffffffffffffffff8082111562002f5757600080fd5b62002f658883890162002be7565b9450604087015191508082111562002f7c57600080fd5b5062002f8b8782880162002be7565b92505060608501516200278a81620026f1565b60008060006060848603121562002fb457600080fd5b835162002fc181620025ea565b602085015190935062002fd481620025ea565b80925050604084015190509250925092565b60008060008060008060c087890312156200300057600080fd5b8651955060208701516200301481620025ea565b60408801519095506200302781620025ea565b60608801519094506200303a81620025ea565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200306957600080fd5b8151801515811462000a9557600080fd5b8681526001600160a01b0386811660208301528516604082015260c060608201819052600090620030ae90830186620027bb565b8281036080840152620030c28186620027bb565b91505060ff831660a0830152979650505050505050565b60008251620030ed81846020870162002795565b919091019291505056fe6101206040523480156200001257600080fd5b506040516200116838038062001168833981016040819052620000359162000292565b82826003620000458382620003d5565b506004620000548282620003d5565b50879150620000b690505760405162461bcd60e51b815260206004820152602160248201527f427269646765546f6b656e3a207a65726f20736f7572636520636861696e20696044820152601960fa1b60648201526084015b60405180910390fd5b6001600160a01b0385166200011e5760405162461bcd60e51b815260206004820152602760248201527f427269646765546f6b656e3a207a65726f20736f7572636520627269646765206044820152666164647265737360c81b6064820152608401620000ad565b6001600160a01b038416620001855760405162461bcd60e51b815260206004820152602660248201527f427269646765546f6b656e3a207a65726f20736f75726365206173736574206160448201526564647265737360d01b6064820152608401620000ad565b3360805260a09590955250506001600160a01b0391821660c0521660e05260ff1661010052620004a1565b80516001600160a01b0381168114620001c857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f557600080fd5b81516001600160401b0380821115620002125762000212620001cd565b604051601f8301601f19908116603f011681019082821181831017156200023d576200023d620001cd565b816040528381526020925086838588010111156200025a57600080fd5b600091505b838210156200027e57858201830151818301840152908201906200025f565b600093810190920192909252949350505050565b60008060008060008060c08789031215620002ac57600080fd5b86519550620002be60208801620001b0565b9450620002ce60408801620001b0565b60608801519094506001600160401b0380821115620002ec57600080fd5b620002fa8a838b01620001e3565b945060808901519150808211156200031157600080fd5b506200032089828a01620001e3565b92505060a087015160ff811681146200033857600080fd5b809150509295509295509295565b600181811c908216806200035b57607f821691505b6020821081036200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d057600081815260208120601f850160051c81016020861015620003ab5750805b601f850160051c820191505b81811015620003cc57828155600101620003b7565b5050505b505050565b81516001600160401b03811115620003f157620003f1620001cd565b620004098162000402845462000346565b8462000382565b602080601f831160018114620004415760008415620004285750858301515b600019600386901b1c1916600185901b178555620003cc565b600085815260208120601f198616915b82811015620004725788860151825594840194600190910190840162000451565b5085821015620004915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610c7b620004ed60003960006101c70152600061025a01526000610173015260006102fc0152600081816102c2015261041b0152610c7b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610297578063a9059cbb146102aa578063cd596583146102bd578063dd62ed3e146102e4578063f7253968146102f757600080fd5b806370a082311461022c57806374d32ad41461025557806379cc67901461027c57806395d89b411461028f57600080fd5b806323b872dd116100e957806323b872dd146101ad578063313ce567146101c057806339509351146101f157806340c10f191461020457806342966c681461021957600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c5780631a0b79bf1461016e575b600080fd5b61012361031e565b6040516101309190610aac565b60405180910390f35b61014c610147366004610b16565b6103b0565b6040519015158152602001610130565b6002545b604051908152602001610130565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c6101bb366004610b40565b6103ca565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610130565b61014c6101ff366004610b16565b6103ee565b610217610212366004610b16565b610410565b005b610217610227366004610b7c565b61049b565b61016061023a366004610b95565b6001600160a01b031660009081526020819052604090205490565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b61021761028a366004610b16565b6104a8565b6101236104bd565b61014c6102a5366004610b16565b6104cc565b61014c6102b8366004610b16565b610547565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6101606102f2366004610bb7565b610555565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461032d90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461035990610bea565b80156103a65780601f1061037b576101008083540402835291602001916103a6565b820191906000526020600020905b81548152906001019060200180831161038957829003601f168201915b5050505050905090565b6000336103be818585610580565b60019150505b92915050565b6000336103d88582856106a5565b6103e385858561071f565b506001949350505050565b6000336103be8185856104018383610555565b61040b9190610c24565b610580565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461048d5760405162461bcd60e51b815260206004820152601960248201527f427269646765546f6b656e3a20756e617574686f72697a65640000000000000060448201526064015b60405180910390fd5b61049782826108c3565b5050565b6104a53382610982565b50565b6104b38233836106a5565b6104978282610982565b60606004805461032d90610bea565b600033816104da8286610555565b90508381101561053a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610484565b6103e38286868403610580565b6000336103be81858561071f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166106435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006106b18484610555565b90506000198114610719578181101561070c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610484565b6107198484848403610580565b50505050565b6001600160a01b0383166107835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b0382166107e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b0383166000908152602081905260409020548181101561085d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610484565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610719565b6001600160a01b0382166109195760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610484565b806002600082825461092b9190610c24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610484565b6001600160a01b03821660009081526020819052604090205481811015610a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610484565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610698565b600060208083528351808285015260005b81811015610ad957858101830151858201604001528201610abd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b1157600080fd5b919050565b60008060408385031215610b2957600080fd5b610b3283610afa565b946020939093013593505050565b600080600060608486031215610b5557600080fd5b610b5e84610afa565b9250610b6c60208501610afa565b9150604084013590509250925092565b600060208284031215610b8e57600080fd5b5035919050565b600060208284031215610ba757600080fd5b610bb082610afa565b9392505050565b60008060408385031215610bca57600080fd5b610bd383610afa565b9150610be160208401610afa565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103c457634e487b7160e01b600052601160045260246000fdfea264697066735822122006690182a743c0253aa6f387a5d058ee9eff125f5ef030c538f31f1c0cdf4c1564736f6c63430008120033a26469706673582212200c30673250d43b193bdd76c945a1bb8ee2290f16b0932f2b660c075a566b3fe564736f6c63430008120033", + Bin: "0x60c06040523480156200001157600080fd5b506040516200454338038062004543833981016040819052620000349162000212565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d919062000244565b600255506200013c33620001c0565b507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b6919062000244565b60a052506200025e565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200022557600080fd5b81516001600160a01b03811681146200023d57600080fd5b9392505050565b6000602082840312156200025757600080fd5b5051919050565b60805160a051614295620002ae6000396000818161021b01528181610b2801528181611aaf015261237a01526000818161018001528181610ddd0152818161101d015261122001526142956000f3fe60806040523480156200001157600080fd5b5060043610620001755760003560e01c80637a465fd911620000d3578063b9e55da11162000086578063b9e55da114620003b7578063c60da61214620003eb578063c63d22071462000402578063c868efaa1462000419578063d2cc7a701462000430578063f2fde38b146200043957600080fd5b80637a465fd914620002e65780638343f66114620002f15780638c56fcf014620003395780638da5cb5b14620003505780639731429714620003625780639bd9abc0146200039157600080fd5b80635f217bcc116200012c5780635f217bcc146200026357806365435568146200026e5780636b47cd9a14620002ab5780636c7e40d114620002b6578063715018a614620002cd5780637497185614620002d757600080fd5b80631a7f5bec146200017a5780632b0d8f1814620001bf578063367e958414620001d85780634511243e14620001fe5780634950d2d014620002155780635eb99514146200024c575b600080fd5b620001a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620001d6620001d036600462002600565b62000450565b005b620001ef620001e936600462002701565b6200055c565b604051620001b69190620027e9565b620001d66200020f36600462002600565b620005bb565b6200023d7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620001b6565b620001d66200025d366004620027fe565b620006bf565b6200023d621e848081565b620001a26200027f36600462002818565b60076020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6200023d620493e081565b620001d6620002c73660046200285f565b620006d7565b620001d662000a28565b620001a26005600160991b0181565b6200023d62030d4081565b620003286200030236600462002818565b600460209081526000938452604080852082529284528284209052825290205460ff1681565b6040519015158152602001620001b6565b620001ef6200034a366004620028c1565b62000a40565b6003546001600160a01b0316620001a2565b620003286200037336600462002600565b6001600160a01b031660009081526001602052604090205460ff1690565b62000328620003a236600462002600565b60066020526000908152604090205460ff1681565b6200023d620003c836600462002818565b600560209081526000938452604080852082529284528284209052825290205481565b620001ef620003fc36600462002907565b62000a9c565b620001d66200041336600462002973565b62000b1c565b620001d66200042a366004620029e8565b62000dd0565b6002546200023d565b620001d66200044a36600462002600565b62000f93565b6200045a6200100f565b6001600160a01b0381166200048c5760405162461bcd60e51b8152600401620004839062002a78565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156200050d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840162000483565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b606060008585858560405160200162000579949392919062002ac6565b6040516020818303038152906040529050600081604051602001620005a092919062002b2b565b6040516020818303038152906040529150505b949350505050565b620005c56200100f565b6001600160a01b038116620005ee5760405162461bcd60e51b8152600401620004839062002a78565b6001600160a01b03811660009081526001602052604090205460ff166200066a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840162000483565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b620006c96200100f565b620006d48162001019565b50565b620006e1620011c0565b6001600160a01b0384166200070a5760405162461bcd60e51b8152600401620004839062002b65565b6000620007166200121b565b90506000821562000745576200072d848462001335565b9050620007456001600160a01b0385168383620014ab565b60006200088386876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200078b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007b5919081019062002c0a565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200081e919081019062002c0a565b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062002c43565b90506000836001600160a01b031663624488506040518060c001604052808c81526020018b6001600160a01b0316815260200160405180604001604052808b6001600160a01b03168152602001888152508152602001621e84808152602001600067ffffffffffffffff811115620008ff57620008ff62002620565b60405190808252806020026020018201604052801562000929578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162000951919062002ca9565b6020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000997919062002d2b565b60008a81526004602090815260408083206001600160a01b03808e16808652918452828520908d16808652935292819020805460ff1916600117905551929350918b907f3800d3f6af9e0e73fee531cb134766d3dae314dd340599073c396d9e5e8736bd9062000a0a9086815260200190565b60405180910390a45050505062000a216001600055565b5050505050565b62000a3262001597565b62000a3e6000620015f3565b565b6060600084848460405160200162000a5b9392919062002d45565b604051602081830303815290604052905060018160405160200162000a8292919062002b2b565b6040516020818303038152906040529150505b9392505050565b60408051602081018890526001600160a01b0387811682840152868116606080840191909152908616608083015260a0820185905260c08083018590528351808403909101815260e08301909352919062000b009060029083906101000162002b2b565b6040516020818303038152906040529150509695505050505050565b62000b26620011c0565b7f0000000000000000000000000000000000000000000000000000000000000000870362000b685760405162461bcd60e51b8152600401620004839062002d69565b6001600160a01b03841662000b915760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b03861662000bba5760405162461bcd60e51b8152600401620004839062002b65565b6001600160a01b03851660009081526006602052604090205460ff161562000ca55762000be8818362002e0a565b831162000c475760405162461bcd60e51b815260206004820152602660248201527f45524332304272696467653a20696e73756666696369656e7420746f74616c20604482015265185b5bdd5b9d60d21b606482015260840162000483565b62000c9f6040518060e00160405280898152602001886001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031681526020018581526020018481526020018381525062001645565b62000dbc565b60008781526004602090815260408083206001600160a01b03808b168552908352818420908916845290915290205460ff1662000d375760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e76616c69642062726964676520746f6b656044820152686e206164647265737360b81b606482015260840162000483565b600062000d45868562001335565b905082811162000daa5760405162461bcd60e51b815260206004820152602960248201527f45524332304272696467653a20696e73756666696369656e742061646a757374604482015268195908185b5bdd5b9d60ba1b606482015260840162000483565b62000dba88888888858862001a31565b505b62000dc76001600055565b50505050505050565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000e48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6e919062002d2b565b101562000ed75760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840162000483565b62000ee23362000373565b1562000f4a5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840162000483565b62000f8d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001ced92505050565b50505050565b62000f9d62001597565b6001600160a01b038116620010045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000483565b620006d481620015f3565b62000a3e62001597565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200107a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010a0919062002d2b565b60025490915081831115620011125760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840162000483565b808311620011895760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840162000483565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b600260005403620012145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000483565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a3919062002e20565b9050620012c8816001600160a01b031660009081526001602052604090205460ff1690565b15620013305760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840162000483565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a5919062002d2b565b9050620013be6001600160a01b03851633308662001e6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801562001406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142c919062002d2b565b9050818111620014945760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840162000483565b620014a0828262002e40565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015620014fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001523919062002d2b565b6200152f919062002e0a565b6040516001600160a01b03851660248201526044810182905290915062000f8d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e8f565b6003546001600160a01b0316331462000a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000483565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000620016516200121b565b90506000808360a00151111562001694576200167683604001518460a0015162001335565b604084015190915062001694906001600160a01b03168383620014ab565b60008360a001518460800151620016ac919062002e40565b604085810151905163079cc67960e41b815233600482015260248101839052919250906001600160a01b038216906379cc679090604401600060405180830381600087803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b505050506000816001600160a01b031663f72539686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062002d2b565b90506000826001600160a01b0316631a0b79bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e7919062002e20565b9050818760000151036200182d57806001600160a01b031687602001516001600160a01b0316146200182d5760405162461bcd60e51b8152600401620004839062002e56565b6000620018b388600001518960200151866001600160a01b03166374d32ad46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200187c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018a2919062002e20565b8b60600151898d60c0015162000a9c565b90506000876001600160a01b031663624488506040518060c00160405280878152602001866001600160a01b0316815260200160405180604001604052808e604001516001600160a01b031681526020018c8152508152602001620493e08152602001600067ffffffffffffffff81111562001933576200193362002620565b6040519080825280602002602001820160405280156200195d578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001985919062002ca9565b6020604051808303816000875af1158015620019a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019cb919062002d2b565b90508089600001518a604001516001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c602001518d606001518b60405162001a1e9392919062002d45565b60405180910390a4505050505050505050565b6001600160a01b03841660009081526006602052604090205460ff161562001aad5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2063616e6e6f742062726964676520777261707060448201526732b2103a37b5b2b760c11b606482015260840162000483565b7f0000000000000000000000000000000000000000000000000000000000000000860362001aef5760405162461bcd60e51b8152600401620004839062002d69565b600062001afb6200121b565b9050811562001b1a5762001b1a6001600160a01b0386168284620014ab565b600062001b28838562002e40565b60008981526005602090815260408083206001600160a01b03808d168552908352818420908b16845290915281208054929350839290919062001b6d90849062002e0a565b909155506000905062001b8287878462000a40565b90506000836001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b031681526020018a815250815260200162030d408152602001600067ffffffffffffffff81111562001bfe5762001bfe62002620565b60405190808252806020026020018201604052801562001c28578160200160208202803683370190505b508152602001858152506040518263ffffffff1660e01b815260040162001c50919062002ca9565b6020604051808303816000875af115801562001c70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c96919062002d2b565b9050808a896001600160a01b03167f217c87a6d6d3d58781939a048638f7802a91151cc9eb573762b268bf8ec9c2578c8b8860405162001cd99392919062002d45565b60405180910390a450505050505050505050565b6000808280602001905181019062001d06919062002ea5565b9092509050600082600281111562001d225762001d2262002b15565b0362001d66576000806000808480602001905181019062001d44919062002f14565b935093509350935062001d5c89898686868662001f6d565b5050505062000a21565b600182600281111562001d7d5762001d7d62002b15565b0362001dbc5760008060008380602001905181019062001d9e919062002f9e565b92509250925062001db38888858585620020dc565b50505062000a21565b600282600281111562001dd35762001dd362002b15565b0362001e22576000806000806000808680602001905181019062001df8919062002fe6565b95509550955095509550955062001e168b8b88888888888862002256565b50505050505062000a21565b60405162461bcd60e51b815260206004820152601b60248201527f45524332304272696467653a20696e76616c696420616374696f6e0000000000604482015260640162000483565b62000f8d846323b872dd60e01b8585856040516024016200155f9392919062002d45565b600062001ee6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200240f9092919063ffffffff16565b80519091501562001f68578080602001905181019062001f07919062003056565b62001f685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000483565b505050565b60008681526007602090815260408083206001600160a01b038981168552908352818420888216855290925290912054161562001ffe5760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20616c72656164604482015267792065786973747360c01b606482015260840162000483565b60008686868686866040516200201490620025dc565b62002025969594939291906200307a565b604051809103906000f08015801562002042573d6000803e3d6000fd5b506001600160a01b038181166000818152600660209081526040808320805460ff191660011790558c8352600782528083208c8616808552908352818420958c168085529583529281902080546001600160a01b031916851790555192835293945091928a917fe1c61a845f79534e11924517ddbedc668d0c20e467eafb4d3bd2858e2815f3b5910160405180910390a450505050505050565b620020e6620011c0565b6001600160a01b0382166200210f5760405162461bcd60e51b8152600401620004839062002db1565b60008581526007602090815260408083206001600160a01b0380891685529083528184208782168552909252909120541680620021a05760405162461bcd60e51b815260206004820152602860248201527f45524332304272696467653a2062726964676520746f6b656e20646f6573206e6044820152671bdd08195e1a5cdd60c21b606482015260840162000483565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528216906340c10f1990604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050604080516001600160a01b03878116825260208201879052851693507fc0767f158f0d5394b598489a51ed607cd55a8be2dcef113ba1626efcf4c6395492500160405180910390a25062000a216001600055565b62002260620011c0565b6001600160a01b038316620022895760405162461bcd60e51b8152600401620004839062002db1565b6001600160a01b038516620022b25760405162461bcd60e51b8152600401620004839062002b65565b60008881526005602090815260408083206001600160a01b03808c1685529083528184209088168452909152902054828110156200233d5760405162461bcd60e51b815260206004820152602160248201527f45524332304272696467653a20696e73756666696369656e742062616c616e636044820152606560f81b606482015260840162000483565b62002349838262002e40565b60008a81526005602090815260408083206001600160a01b03808e168552908352818420908a1684529091529020557f00000000000000000000000000000000000000000000000000000000000000008703620023e8576001600160a01b0386163014620023cb5760405162461bcd60e51b8152600401620004839062002e56565b620023e16001600160a01b038616858562002420565b50620023fa565b620023f887878787878762001a31565b505b620024056001600055565b5050505050505050565b6060620005b3848460008562002452565b6040516001600160a01b03831660248201526044810182905262001f6890849063a9059cbb60e01b906064016200155f565b606082471015620024b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000483565b600080866001600160a01b03168587604051620024d39190620030d9565b60006040518083038185875af1925050503d806000811462002512576040519150601f19603f3d011682016040523d82523d6000602084013e62002517565b606091505b50915091506200252a8783838762002535565b979650505050505050565b60608315620025a9578251600003620025a1576001600160a01b0385163b620025a15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000483565b5081620005b3565b620005b38383815115620025c05781518083602001fd5b8060405162461bcd60e51b8152600401620004839190620027e9565b61116880620030f883390190565b6001600160a01b0381168114620006d457600080fd5b6000602082840312156200261357600080fd5b813562000a9581620025ea565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562002662576200266262002620565b604052919050565b600067ffffffffffffffff82111562002687576200268762002620565b50601f01601f191660200190565b600082601f830112620026a757600080fd5b8135620026be620026b8826200266a565b62002636565b818152846020838601011115620026d457600080fd5b816020850160208301376000918101602001919091529392505050565b60ff81168114620006d457600080fd5b600080600080608085870312156200271857600080fd5b84356200272581620025ea565b9350602085013567ffffffffffffffff808211156200274357600080fd5b620027518883890162002695565b945060408701359150808211156200276857600080fd5b50620027778782880162002695565b92505060608501356200278a81620026f1565b939692955090935050565b60005b83811015620027b257818101518382015260200162002798565b50506000910152565b60008151808452620027d581602086016020860162002795565b601f01601f19169290920160200192915050565b60208152600062000a956020830184620027bb565b6000602082840312156200281157600080fd5b5035919050565b6000806000606084860312156200282e57600080fd5b8335925060208401356200284281620025ea565b915060408401356200285481620025ea565b809150509250925092565b600080600080600060a086880312156200287857600080fd5b8535945060208601356200288c81620025ea565b935060408601356200289e81620025ea565b92506060860135620028b081620025ea565b949793965091946080013592915050565b600080600060608486031215620028d757600080fd5b8335620028e481620025ea565b92506020840135620028f681620025ea565b929592945050506040919091013590565b60008060008060008060c087890312156200292157600080fd5b8635955060208701356200293581620025ea565b945060408701356200294781620025ea565b935060608701356200295981620025ea565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156200298f57600080fd5b873596506020880135620029a381620025ea565b95506040880135620029b581620025ea565b94506060880135620029c781620025ea565b9699959850939660808101359560a0820135955060c0909101359350915050565b60008060008060608587031215620029ff57600080fd5b84359350602085013562002a1381620025ea565b9250604085013567ffffffffffffffff8082111562002a3157600080fd5b818701915087601f83011262002a4657600080fd5b81358181111562002a5657600080fd5b88602082850101111562002a6957600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b6001600160a01b038516815260806020820181905260009062002aec90830186620027bb565b828103604084015262002b008186620027bb565b91505060ff8316606083015295945050505050565b634e487b7160e01b600052602160045260246000fd5b60006003841062002b4c57634e487b7160e01b600052602160045260246000fd5b83825260406020830152620005b36040830184620027bb565b6020808252602c908201527f45524332304272696467653a207a65726f2064657374696e6174696f6e20627260408201526b69646765206164647265737360a01b606082015260800190565b600062002bc2620026b8846200266a565b905082815283838301111562002bd757600080fd5b62000a9583602083018462002795565b600082601f83011262002bf957600080fd5b62000a958383516020850162002bb1565b60006020828403121562002c1d57600080fd5b815167ffffffffffffffff81111562002c3557600080fd5b620005b38482850162002be7565b60006020828403121562002c5657600080fd5b815162000a9581620026f1565b600081518084526020808501945080840160005b8381101562002c9e5781516001600160a01b03168752958201959082019060010162002c77565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015262002d0c61010084018262002c63565b905060a0840151601f198483030160e0850152620014a08282620027bb565b60006020828403121562002d3e57600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526028908201527f45524332304272696467653a2063616e6e6f742062726964676520746f20736160408201526736b29031b430b4b760c11b606082015260800190565b60208082526023908201527f45524332304272696467653a207a65726f20726563697069656e74206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620014a557620014a562002df4565b60006020828403121562002e3357600080fd5b815162000a9581620025ea565b81810381811115620014a557620014a562002df4565b6020808252602f908201527f45524332304272696467653a20696e76616c69642064657374696e6174696f6e60408201526e20627269646765206164647265737360881b606082015260800190565b6000806040838503121562002eb957600080fd5b82516003811062002ec957600080fd5b602084015190925067ffffffffffffffff81111562002ee757600080fd5b8301601f8101851362002ef957600080fd5b62002f0a8582516020840162002bb1565b9150509250929050565b6000806000806080858703121562002f2b57600080fd5b845162002f3881620025ea565b602086015190945067ffffffffffffffff8082111562002f5757600080fd5b62002f658883890162002be7565b9450604087015191508082111562002f7c57600080fd5b5062002f8b8782880162002be7565b92505060608501516200278a81620026f1565b60008060006060848603121562002fb457600080fd5b835162002fc181620025ea565b602085015190935062002fd481620025ea565b80925050604084015190509250925092565b60008060008060008060c087890312156200300057600080fd5b8651955060208701516200301481620025ea565b60408801519095506200302781620025ea565b60608801519094506200303a81620025ea565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200306957600080fd5b8151801515811462000a9557600080fd5b8681526001600160a01b0386811660208301528516604082015260c060608201819052600090620030ae90830186620027bb565b8281036080840152620030c28186620027bb565b91505060ff831660a0830152979650505050505050565b60008251620030ed81846020870162002795565b919091019291505056fe6101206040523480156200001257600080fd5b506040516200116838038062001168833981016040819052620000359162000292565b82826003620000458382620003d5565b506004620000548282620003d5565b50879150620000b690505760405162461bcd60e51b815260206004820152602160248201527f427269646765546f6b656e3a207a65726f20736f7572636520636861696e20696044820152601960fa1b60648201526084015b60405180910390fd5b6001600160a01b0385166200011e5760405162461bcd60e51b815260206004820152602760248201527f427269646765546f6b656e3a207a65726f20736f7572636520627269646765206044820152666164647265737360c81b6064820152608401620000ad565b6001600160a01b038416620001855760405162461bcd60e51b815260206004820152602660248201527f427269646765546f6b656e3a207a65726f20736f75726365206173736574206160448201526564647265737360d01b6064820152608401620000ad565b3360805260a09590955250506001600160a01b0391821660c0521660e05260ff1661010052620004a1565b80516001600160a01b0381168114620001c857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f557600080fd5b81516001600160401b0380821115620002125762000212620001cd565b604051601f8301601f19908116603f011681019082821181831017156200023d576200023d620001cd565b816040528381526020925086838588010111156200025a57600080fd5b600091505b838210156200027e57858201830151818301840152908201906200025f565b600093810190920192909252949350505050565b60008060008060008060c08789031215620002ac57600080fd5b86519550620002be60208801620001b0565b9450620002ce60408801620001b0565b60608801519094506001600160401b0380821115620002ec57600080fd5b620002fa8a838b01620001e3565b945060808901519150808211156200031157600080fd5b506200032089828a01620001e3565b92505060a087015160ff811681146200033857600080fd5b809150509295509295509295565b600181811c908216806200035b57607f821691505b6020821081036200037c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d057600081815260208120601f850160051c81016020861015620003ab5750805b601f850160051c820191505b81811015620003cc57828155600101620003b7565b5050505b505050565b81516001600160401b03811115620003f157620003f1620001cd565b620004098162000402845462000346565b8462000382565b602080601f831160018114620004415760008415620004285750858301515b600019600386901b1c1916600185901b178555620003cc565b600085815260208120601f198616915b82811015620004725788860151825594840194600190910190840162000451565b5085821015620004915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610c7b620004ed60003960006101c70152600061025a01526000610173015260006102fc0152600081816102c2015261041b0152610c7b6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610297578063a9059cbb146102aa578063cd596583146102bd578063dd62ed3e146102e4578063f7253968146102f757600080fd5b806370a082311461022c57806374d32ad41461025557806379cc67901461027c57806395d89b411461028f57600080fd5b806323b872dd116100e957806323b872dd146101ad578063313ce567146101c057806339509351146101f157806340c10f191461020457806342966c681461021957600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c5780631a0b79bf1461016e575b600080fd5b61012361031e565b6040516101309190610aac565b60405180910390f35b61014c610147366004610b16565b6103b0565b6040519015158152602001610130565b6002545b604051908152602001610130565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c6101bb366004610b40565b6103ca565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610130565b61014c6101ff366004610b16565b6103ee565b610217610212366004610b16565b610410565b005b610217610227366004610b7c565b61049b565b61016061023a366004610b95565b6001600160a01b031660009081526020819052604090205490565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b61021761028a366004610b16565b6104a8565b6101236104bd565b61014c6102a5366004610b16565b6104cc565b61014c6102b8366004610b16565b610547565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6101606102f2366004610bb7565b610555565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461032d90610bea565b80601f016020809104026020016040519081016040528092919081815260200182805461035990610bea565b80156103a65780601f1061037b576101008083540402835291602001916103a6565b820191906000526020600020905b81548152906001019060200180831161038957829003601f168201915b5050505050905090565b6000336103be818585610580565b60019150505b92915050565b6000336103d88582856106a5565b6103e385858561071f565b506001949350505050565b6000336103be8185856104018383610555565b61040b9190610c24565b610580565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461048d5760405162461bcd60e51b815260206004820152601960248201527f427269646765546f6b656e3a20756e617574686f72697a65640000000000000060448201526064015b60405180910390fd5b61049782826108c3565b5050565b6104a53382610982565b50565b6104b38233836106a5565b6104978282610982565b60606004805461032d90610bea565b600033816104da8286610555565b90508381101561053a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610484565b6103e38286868403610580565b6000336103be81858561071f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610484565b6001600160a01b0382166106435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610484565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006106b18484610555565b90506000198114610719578181101561070c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610484565b6107198484848403610580565b50505050565b6001600160a01b0383166107835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610484565b6001600160a01b0382166107e55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610484565b6001600160a01b0383166000908152602081905260409020548181101561085d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610484565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610719565b6001600160a01b0382166109195760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610484565b806002600082825461092b9190610c24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166109e25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610484565b6001600160a01b03821660009081526020819052604090205481811015610a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610484565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610698565b600060208083528351808285015260005b81811015610ad957858101830151858201604001528201610abd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b1157600080fd5b919050565b60008060408385031215610b2957600080fd5b610b3283610afa565b946020939093013593505050565b600080600060608486031215610b5557600080fd5b610b5e84610afa565b9250610b6c60208501610afa565b9150604084013590509250925092565b600060208284031215610b8e57600080fd5b5035919050565b600060208284031215610ba757600080fd5b610bb082610afa565b9392505050565b60008060408385031215610bca57600080fd5b610bd383610afa565b9150610be160208401610afa565b90509250929050565b600181811c90821680610bfe57607f821691505b602082108103610c1e57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103c457634e487b7160e01b600052601160045260246000fdfea264697066735822122006690182a743c0253aa6f387a5d058ee9eff125f5ef030c538f31f1c0cdf4c1564736f6c63430008120033a2646970667358221220ae3c8ef63d7ebf730c9f09ea2ef6982dd124b25dd7c1698b9ac77390cd6dc0b164736f6c63430008120033", } // ERC20BridgeABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go b/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go index 370816520..da5f1fe29 100644 --- a/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go +++ b/abi-bindings/go/CrossChainApplications/examples/ExampleMessenger/ExampleCrossChainMessenger/ExampleCrossChainMessenger.go @@ -32,7 +32,7 @@ var ( // ExampleCrossChainMessengerMetaData contains all meta data concerning the ExampleCrossChainMessenger contract. var ExampleCrossChainMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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: "0x60a06040523480156200001157600080fd5b5060405162001abd38038062001abd833981016040819052620000349162000196565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d9190620001c8565b600255506200013c3362000144565b5050620001e2565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215620001a957600080fd5b81516001600160a01b0381168114620001c157600080fd5b9392505050565b600060208284031215620001db57600080fd5b5051919050565b6080516118ab620002126000396000818160be01528181610508015281816108fb0152610c5901526118ab6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806397314297116100715780639731429714610151578063b33fead41461018d578063c868efaa146101ae578063d2cc7a70146101c1578063f2fde38b146101d3578063f63d09d7146101e657600080fd5b80631a7f5bec146100b95780632b0d8f18146100fd5780634511243e146101125780635eb9951414610125578063715018a6146101385780638da5cb5b14610140575b600080fd5b6100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61011061010b36600461125b565b6101f9565b005b61011061012036600461125b565b6102fe565b61011061013336600461127f565b6103fb565b61011061040f565b6003546001600160a01b03166100e0565b61017d61015f36600461125b565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100f4565b6101a061019b36600461127f565b610423565b6040516100f49291906112e8565b6101106101bc366004611355565b6104fb565b6002545b6040519081526020016100f4565b6101106101e136600461125b565b6106b3565b6101c56101f43660046113b1565b610729565b6102016108ef565b6001600160a01b0381166102305760405162461bcd60e51b815260040161022790611437565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610227565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103066108ef565b6001600160a01b03811661032c5760405162461bcd60e51b815260040161022790611437565b6001600160a01b03811660009081526001602052604090205460ff166103a65760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610227565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b6104036108ef565b61040c816108f7565b50565b610417610a97565b6104216000610af1565b565b6000818152600460209081526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161046390611485565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90611485565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059691906114bf565b10156105fd5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610227565b6106063361015f565b1561066c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610227565b6106ad848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4392505050565b50505050565b6106bb610a97565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610227565b61040c81610af1565b6000610733610bfb565b600061073d610c54565b905060008615610767576107518888610d68565b90506107676001600160a01b0389168383610ed2565b886001600160a01b03168a7fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8a848a8a8a6040516107a9959493929190611501565b60405180910390a3816001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b03168152602001868152508152602001898152602001600067ffffffffffffffff8111156108235761082361152f565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5081526020018888604051602001610865929190611545565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610893919061159d565b6020604051808303816000875af11580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906114bf565b925050506108e46001600055565b979650505050505050565b610421610a97565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906114bf565b600254909150818311156109eb5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610227565b808311610a605760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610227565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146104215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610227565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081806020019051810190610b59919061161b565b6040805180820182526001600160a01b038681168252602080830185815260008a81526004909252939020825181546001600160a01b03191692169190911781559151929350916001820190610baf908261170b565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bed91906117cb565b60405180910390a350505050565b600260005403610c4d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610227565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906117de565b9050610cfd816001600160a01b031660009081526001602052604090205460ff1690565b15610d635760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610227565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906114bf565b9050610dec6001600160a01b038516333086610fb7565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5791906114bf565b9050818111610ebd5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610227565b610ec78282611811565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4791906114bf565b610f519190611824565b6040516001600160a01b0385166024820152604481018290529091506106ad90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fef565b6040516001600160a01b03808516602483015283166044820152606481018290526106ad9085906323b872dd60e01b90608401610f80565b6000611044826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110c69092919063ffffffff16565b8051909150156110c157808060200190518101906110629190611837565b6110c15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610227565b505050565b60606110d584846000856110dd565b949350505050565b60608247101561113e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610227565b600080866001600160a01b0316858760405161115a9190611859565b60006040518083038185875af1925050503d8060008114611197576040519150601f19603f3d011682016040523d82523d6000602084013e61119c565b606091505b50915091506108e48783838760608315611217578251600003611210576001600160a01b0385163b6112105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610227565b50816110d5565b6110d5838381511561122c5781518083602001fd5b8060405162461bcd60e51b815260040161022791906117cb565b6001600160a01b038116811461040c57600080fd5b60006020828403121561126d57600080fd5b813561127881611246565b9392505050565b60006020828403121561129157600080fd5b5035919050565b60005b838110156112b357818101518382015260200161129b565b50506000910152565b600081518084526112d4816020860160208601611298565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906110d5908301846112bc565b60008083601f84011261131e57600080fd5b50813567ffffffffffffffff81111561133657600080fd5b60208301915083602082850101111561134e57600080fd5b9250929050565b6000806000806060858703121561136b57600080fd5b84359350602085013561137d81611246565b9250604085013567ffffffffffffffff81111561139957600080fd5b6113a58782880161130c565b95989497509550505050565b600080600080600080600060c0888a0312156113cc57600080fd5b8735965060208801356113de81611246565b955060408801356113ee81611246565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561141857600080fd5b6114248a828b0161130c565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061149957607f821691505b6020821081036114b957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156114d157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03861681528460208201528360408201526080606082015260006108e46080830184866114d8565b634e487b7160e01b600052604160045260246000fd5b6020815260006110d56020830184866114d8565b600081518084526020808501945080840160005b838110156115925781516001600160a01b03168752958201959082019060010161156d565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526115fe610100840182611559565b905060a0840151601f198483030160e0850152610ec782826112bc565b60006020828403121561162d57600080fd5b815167ffffffffffffffff8082111561164557600080fd5b818401915084601f83011261165957600080fd5b81518181111561166b5761166b61152f565b604051601f8201601f19908116603f011681019083821181831017156116935761169361152f565b816040528281528760208487010111156116ac57600080fd5b6108e4836020830160208801611298565b601f8211156110c157600081815260208120601f850160051c810160208610156116e45750805b601f850160051c820191505b81811015611703578281556001016116f0565b505050505050565b815167ffffffffffffffff8111156117255761172561152f565b611739816117338454611485565b846116bd565b602080601f83116001811461176e57600084156117565750858301515b600019600386901b1c1916600185901b178555611703565b600085815260208120601f198616915b8281101561179d5788860151825594840194600190910190840161177e565b50858210156117bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600061127860208301846112bc565b6000602082840312156117f057600080fd5b815161127881611246565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ecc57610ecc6117fb565b80820180821115610ecc57610ecc6117fb565b60006020828403121561184957600080fd5b8151801515811461127857600080fd5b6000825161186b818460208701611298565b919091019291505056fea2646970667358221220eb85f988c7aa3be2efed3c580f13fd9b32d9e9bc5ec15fc96ec6ea0a80ae641264736f6c63430008120033", + Bin: "0x60a06040523480156200001157600080fd5b5060405162001abd38038062001abd833981016040819052620000349162000196565b600160005580806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f727465722072656769737472792061646472657373000000000000000000606482015260840160405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012d9190620001c8565b600255506200013c3362000144565b5050620001e2565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215620001a957600080fd5b81516001600160a01b0381168114620001c157600080fd5b9392505050565b600060208284031215620001db57600080fd5b5051919050565b6080516118ab620002126000396000818160be01528181610508015281816108fb0152610c5901526118ab6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806397314297116100715780639731429714610151578063b33fead41461018d578063c868efaa146101ae578063d2cc7a70146101c1578063f2fde38b146101d3578063f63d09d7146101e657600080fd5b80631a7f5bec146100b95780632b0d8f18146100fd5780634511243e146101125780635eb9951414610125578063715018a6146101385780638da5cb5b14610140575b600080fd5b6100e07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61011061010b36600461125b565b6101f9565b005b61011061012036600461125b565b6102fe565b61011061013336600461127f565b6103fb565b61011061040f565b6003546001600160a01b03166100e0565b61017d61015f36600461125b565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100f4565b6101a061019b36600461127f565b610423565b6040516100f49291906112e8565b6101106101bc366004611355565b6104fb565b6002545b6040519081526020016100f4565b6101106101e136600461125b565b6106b3565b6101c56101f43660046113b1565b610729565b6102016108ef565b6001600160a01b0381166102305760405162461bcd60e51b815260040161022790611437565b60405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16156102af5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610227565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103066108ef565b6001600160a01b03811661032c5760405162461bcd60e51b815260040161022790611437565b6001600160a01b03811660009081526001602052604090205460ff166103a65760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610227565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600160205260409020805460ff19169055565b6104036108ef565b61040c816108f7565b50565b610417610a97565b6104216000610af1565b565b6000818152600460209081526040808320815180830190925280546001600160a01b03168252600181018054606094869493929084019161046390611485565b80601f016020809104026020016040519081016040528092919081815260200182805461048f90611485565b80156104dc5780601f106104b1576101008083540402835291602001916104dc565b820191906000526020600020905b8154815290600101906020018083116104bf57829003601f168201915b5050505050815250509050806000015181602001519250925050915091565b6002546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059691906114bf565b10156105fd5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610227565b6106063361015f565b1561066c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610227565b6106ad848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4392505050565b50505050565b6106bb610a97565b6001600160a01b0381166107205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610227565b61040c81610af1565b6000610733610bfb565b600061073d610c54565b905060008615610767576107518888610d68565b90506107676001600160a01b0389168383610ed2565b886001600160a01b03168a7fa06eff1edd0c66b8dc96d086dda7ba263edf88d7417e6cb15073b5e7bff8a8ca8a848a8a8a6040516107a9959493929190611501565b60405180910390a3816001600160a01b031663624488506040518060c001604052808d81526020018c6001600160a01b0316815260200160405180604001604052808d6001600160a01b03168152602001868152508152602001898152602001600067ffffffffffffffff8111156108235761082361152f565b60405190808252806020026020018201604052801561084c578160200160208202803683370190505b5081526020018888604051602001610865929190611545565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610893919061159d565b6020604051808303816000875af11580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d691906114bf565b925050506108e46001600055565b979650505050505050565b610421610a97565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906114bf565b600254909150818311156109eb5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610227565b808311610a605760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610227565b6002839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6003546001600160a01b031633146104215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610227565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081806020019051810190610b59919061161b565b6040805180820182526001600160a01b038681168252602080830185815260008a81526004909252939020825181546001600160a01b03191692169190911781559151929350916001820190610baf908261170b565b50905050826001600160a01b0316847f1f5c800b5f2b573929a7948f82a199c2a212851b53a6c5bd703ece23999d24aa83604051610bed91906117cb565b60405180910390a350505050565b600260005403610c4d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610227565b6002600055565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906117de565b9050610cfd816001600160a01b031660009081526001602052604090205460ff1690565b15610d635760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610227565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906114bf565b9050610dec6001600160a01b038516333086610fb7565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5791906114bf565b9050818111610ebd5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610227565b610ec78282611811565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4791906114bf565b610f519190611824565b6040516001600160a01b0385166024820152604481018290529091506106ad90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fef565b6040516001600160a01b03808516602483015283166044820152606481018290526106ad9085906323b872dd60e01b90608401610f80565b6000611044826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110c69092919063ffffffff16565b8051909150156110c157808060200190518101906110629190611837565b6110c15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610227565b505050565b60606110d584846000856110dd565b949350505050565b60608247101561113e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610227565b600080866001600160a01b0316858760405161115a9190611859565b60006040518083038185875af1925050503d8060008114611197576040519150601f19603f3d011682016040523d82523d6000602084013e61119c565b606091505b50915091506108e48783838760608315611217578251600003611210576001600160a01b0385163b6112105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610227565b50816110d5565b6110d5838381511561122c5781518083602001fd5b8060405162461bcd60e51b815260040161022791906117cb565b6001600160a01b038116811461040c57600080fd5b60006020828403121561126d57600080fd5b813561127881611246565b9392505050565b60006020828403121561129157600080fd5b5035919050565b60005b838110156112b357818101518382015260200161129b565b50506000910152565b600081518084526112d4816020860160208601611298565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906110d5908301846112bc565b60008083601f84011261131e57600080fd5b50813567ffffffffffffffff81111561133657600080fd5b60208301915083602082850101111561134e57600080fd5b9250929050565b6000806000806060858703121561136b57600080fd5b84359350602085013561137d81611246565b9250604085013567ffffffffffffffff81111561139957600080fd5b6113a58782880161130c565b95989497509550505050565b600080600080600080600060c0888a0312156113cc57600080fd5b8735965060208801356113de81611246565b955060408801356113ee81611246565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561141857600080fd5b6114248a828b0161130c565b989b979a50959850939692959293505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600181811c9082168061149957607f821691505b6020821081036114b957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156114d157600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03861681528460208201528360408201526080606082015260006108e46080830184866114d8565b634e487b7160e01b600052604160045260246000fd5b6020815260006110d56020830184866114d8565b600081518084526020808501945080840160005b838110156115925781516001600160a01b03168752958201959082019060010161156d565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c08401526115fe610100840182611559565b905060a0840151601f198483030160e0850152610ec782826112bc565b60006020828403121561162d57600080fd5b815167ffffffffffffffff8082111561164557600080fd5b818401915084601f83011261165957600080fd5b81518181111561166b5761166b61152f565b604051601f8201601f19908116603f011681019083821181831017156116935761169361152f565b816040528281528760208487010111156116ac57600080fd5b6108e4836020830160208801611298565b601f8211156110c157600081815260208120601f850160051c810160208610156116e45750805b601f850160051c820191505b81811015611703578281556001016116f0565b505050505050565b815167ffffffffffffffff8111156117255761172561152f565b611739816117338454611485565b846116bd565b602080601f83116001811461176e57600084156117565750858301515b600019600386901b1c1916600185901b178555611703565b600085815260208120601f198616915b8281101561179d5788860151825594840194600190910190840161177e565b50858210156117bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600061127860208301846112bc565b6000602082840312156117f057600080fd5b815161127881611246565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ecc57610ecc6117fb565b80820180821115610ecc57610ecc6117fb565b60006020828403121561184957600080fd5b8151801515811461127857600080fd5b6000825161186b818460208701611298565b919091019291505056fea26469706673582212201e2a44c3bdee340d18118f0cd3cee8906050ce1e432f94c033fb605c8d4f9b3564736f6c63430008120033", } // ExampleCrossChainMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go index 9e9a3e67c..b09786fc1 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go @@ -32,7 +32,7 @@ var ( // ERC20TokenSourceMetaData contains all meta data concerning the ERC20TokenSource contract. var ERC20TokenSourceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20ContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20ContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"transferToDestination\",\"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: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea26469706673582212202d34a35b43901de6e551572c9fee078a14e3567ae6a9fc2399b2b5680a0a622c64736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", + Bin: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea2646970667358221220ac3cb53950b6129adfd8e69e3c62839501ad58717ac401f7f3d363f48291580064736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", } // ERC20TokenSourceABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go index c9f0089e9..5d13bc501 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go @@ -38,7 +38,7 @@ type TeleporterFeeInfo struct { // NativeTokenDestinationMetaData contains all meta data concerning the NativeTokenDestination contract. var NativeTokenDestinationMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenSourceAddress_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"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\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensMinted\",\"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\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnAddressBalance\",\"type\":\"uint256\"}],\"name\":\"ReportTotalBurnedTxFees\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToSource\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPORT_BURNED_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"nativeTokenSourceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"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\":\"reportTotalBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToSource\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea2646970667358221220d4d6bcd64fc309a947629ef01285af204550795c5b2e88b295406e8e727feea464736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", + Bin: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea26469706673582212209c13d96c549d7ebe0196efff19170cfee5a17a9a4ebda7ad1fd9dd4511b4fa7d64736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", } // NativeTokenDestinationABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go index b8c0e9983..f373949bf 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go @@ -38,7 +38,7 @@ type TeleporterFeeInfo struct { // NativeTokenSourceMetaData contains all meta data concerning the NativeTokenSource contract. var NativeTokenSourceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToDestination\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea264697066735822122046979d97626c306edb2e31c005ec54f57d271f72ded049930f1b94992965cbb664736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", + Bin: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea2646970667358221220e80e726270e4104a650b17536b61559d89ad6153eb51c1c5ca2f1d7eebb76cd464736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", } // NativeTokenSourceABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go index ff2c3dc3c..3229506bc 100644 --- a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go +++ b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashPublisher/BlockHashPublisher.go @@ -32,7 +32,7 @@ var ( // BlockHashPublisherMetaData contains all meta data concerning the BlockHashPublisher contract. var BlockHashPublisherMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"PublishBlockHash\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"RECEIVE_BLOCK_HASH_REQUIRED_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"}],\"name\":\"publishLatestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b506040516105cf3803806105cf83398101604081905261002f916100c0565b6001600160a01b0381166100af5760405162461bcd60e51b815260206004820152603460248201527f426c6f636b486173685075626c69736865723a207a65726f2074656c65706f7260448201527f7465722072656769737472792061646472657373000000000000000000000000606482015260840160405180910390fd5b6001600160a01b03166080526100f0565b6000602082840312156100d257600080fd5b81516001600160a01b03811681146100e957600080fd5b9392505050565b6080516104be610111600039600081816068015261012701526104be6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806318aef19b146100465780631a7f5bec1461006357806382ab2b86146100a2575b600080fd5b610050620249f081565b6040519081526020015b60405180910390f35b61008a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005a565b6100506100b03660046102d3565b6000806100be600143610303565b6040805160208101839052824081830181905282518083038401815260608301938490529281905292935083906001600160a01b0387169088907fe13623d33d18131ce960c33b1282ceac1fe7b5ccfcf7f8c0f6dad32dd61e3bdd9060800160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a79190610324565b6001600160a01b031663624488506040518060c00160405280898152602001886001600160a01b03168152602001604051806040016040528060006001600160a01b0316815260200160008152508152602001620249f08152602001600067ffffffffffffffff81111561021d5761021d610348565b604051908082528060200260200182016040528015610246578160200160208202803683370190505b508152602001848152506040518263ffffffff1660e01b815260040161026c91906103e8565b6020604051808303816000875af115801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af919061046f565b93505050505b92915050565b6001600160a01b03811681146102d057600080fd5b50565b600080604083850312156102e657600080fd5b8235915060208301356102f8816102bb565b809150509250929050565b818103818111156102b557634e487b7160e01b600052601160045260246000fd5b60006020828403121561033657600080fd5b8151610341816102bb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156103975781516001600160a01b031687529582019590820190600101610372565b509495945050505050565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261044961010084018261035e565b905060a0840151601f198483030160e085015261046682826103a2565b95945050505050565b60006020828403121561048157600080fd5b505191905056fea264697066735822122078de7fb7346c7cd00f55ddf40911ef6016935014662910b81cc89c6faa9fe9c964736f6c63430008120033", + Bin: "0x60a060405234801561001057600080fd5b506040516105cf3803806105cf83398101604081905261002f916100c0565b6001600160a01b0381166100af5760405162461bcd60e51b815260206004820152603460248201527f426c6f636b486173685075626c69736865723a207a65726f2074656c65706f7260448201527f7465722072656769737472792061646472657373000000000000000000000000606482015260840160405180910390fd5b6001600160a01b03166080526100f0565b6000602082840312156100d257600080fd5b81516001600160a01b03811681146100e957600080fd5b9392505050565b6080516104be610111600039600081816068015261012701526104be6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806318aef19b146100465780631a7f5bec1461006357806382ab2b86146100a2575b600080fd5b610050620249f081565b6040519081526020015b60405180910390f35b61008a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005a565b6100506100b03660046102d3565b6000806100be600143610303565b6040805160208101839052824081830181905282518083038401815260608301938490529281905292935083906001600160a01b0387169088907fe13623d33d18131ce960c33b1282ceac1fe7b5ccfcf7f8c0f6dad32dd61e3bdd9060800160405180910390a47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a79190610324565b6001600160a01b031663624488506040518060c00160405280898152602001886001600160a01b03168152602001604051806040016040528060006001600160a01b0316815260200160008152508152602001620249f08152602001600067ffffffffffffffff81111561021d5761021d610348565b604051908082528060200260200182016040528015610246578160200160208202803683370190505b508152602001848152506040518263ffffffff1660e01b815260040161026c91906103e8565b6020604051808303816000875af115801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af919061046f565b93505050505b92915050565b6001600160a01b03811681146102d057600080fd5b50565b600080604083850312156102e657600080fd5b8235915060208301356102f8816102bb565b809150509250929050565b818103818111156102b557634e487b7160e01b600052601160045260246000fd5b60006020828403121561033657600080fd5b8151610341816102bb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156103975781516001600160a01b031687529582019590820190600101610372565b509495945050505050565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c084015261044961010084018261035e565b905060a0840151601f198483030160e085015261046682826103a2565b95945050505050565b60006020828403121561048157600080fd5b505191905056fea2646970667358221220e4e5e12aa16dcbf77da10f2fe145f67ea9d72bb69750afc2231203a8e5fe47d264736f6c63430008120033", } // BlockHashPublisherABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go index 5ad498bfa..1a1054f6b 100644 --- a/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go +++ b/abi-bindings/go/CrossChainApplications/examples/VerifiedBlockHash/BlockHashReceiver/BlockHashReceiver.go @@ -32,7 +32,7 @@ var ( // BlockHashReceiverMetaData contains all meta data concerning the BlockHashReceiver contract. var BlockHashReceiverMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"publisherBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"publisherContractAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":true,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"ReceiveBlockHash\",\"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\":[],\"name\":\"getLatestBlockInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"latestBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourcePublisherContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x60e060405234801561001057600080fd5b5060405162000f2138038062000f218339810160408190526100319161021e565b82806001600160a01b0381166100b45760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610122919061025a565b6001555061012f336101b0565b506001600160a01b0381166101985760405162461bcd60e51b815260206004820152602960248201527f426c6f636b4861736852656365697665723a207a65726f207075626c6973686560448201526872206164647265737360b81b60648201526084016100ab565b60a0919091526001600160a01b031660c05250610273565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b038116811461021957600080fd5b919050565b60008060006060848603121561023357600080fd5b61023c84610202565b92506020840151915061025160408501610202565b90509250925092565b60006020828403121561026c57600080fd5b5051919050565b60805160a05160c051610c63620002be600039600081816101c401526109b2015260008181610143015261093001526000818160ff015281816104b901526106e60152610c636000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806379a0710c11610097578063c868efaa11610066578063c868efaa1461024e578063d2cc7a7014610261578063f2fde38b14610269578063f3f39ee51461027c57600080fd5b806379a0710c146101bf5780638da5cb5b146101e657806397314297146101f7578063b17810be1461023357600080fd5b80634511243e116100d35780634511243e146101885780635eb995141461019b5780636c4f6ba9146101ae578063715018a6146101b757600080fd5b80631a7f5bec146100fa57806329b7b3fd1461013e5780632b0d8f1814610173575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101657f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610135565b610186610181366004610ae0565b610285565b005b610186610196366004610ae0565b610387565b6101866101a9366004610b02565b610484565b61016560045481565b610186610498565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b0316610121565b610223610205366004610ae0565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610135565b60035460045460408051928352602083019190915201610135565b61018661025c366004610b1b565b6104ac565b600154610165565b610186610277366004610ae0565b610664565b61016560035481565b61028d6106da565b6001600160a01b0381166102bc5760405162461bcd60e51b81526004016102b390610ba2565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff161561033b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102b3565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b61038f6106da565b6001600160a01b0381166103b55760405162461bcd60e51b81526004016102b390610ba2565b6001600160a01b03811660009081526020819052604090205460ff1661042f5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102b3565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61048c6106da565b610495816106e2565b50565b6104a0610882565b6104aa60006108dc565b565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190610bf0565b10156105ae5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102b3565b6105b733610205565b1561061d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102b3565b61065e848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061092e92505050565b50505050565b61066c610882565b6001600160a01b0381166106d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b3565b610495816108dc565b6104aa610882565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190610bf0565b600154909150818311156107d65760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102b3565b80831161084b5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102b3565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b3565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000083146109b05760405162461bcd60e51b815260206004820152602a60248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015269194818da185a5b88125160b21b60648201526084016102b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a4b5760405162461bcd60e51b815260206004820152603160248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015270329031b430b4b710383ab13634b9b432b960791b60648201526084016102b3565b60008082806020019051810190610a629190610c09565b91509150600354821115610abd576003829055600481905560405181815282906001600160a01b0386169087907f0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d9060200160405180910390a45b5050505050565b80356001600160a01b0381168114610adb57600080fd5b919050565b600060208284031215610af257600080fd5b610afb82610ac4565b9392505050565b600060208284031215610b1457600080fd5b5035919050565b60008060008060608587031215610b3157600080fd5b84359350610b4160208601610ac4565b9250604085013567ffffffffffffffff80821115610b5e57600080fd5b818701915087601f830112610b7257600080fd5b813581811115610b8157600080fd5b886020828501011115610b9357600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060208284031215610c0257600080fd5b5051919050565b60008060408385031215610c1c57600080fd5b50508051602090910151909290915056fea2646970667358221220ef674924eeec79d319e27fe1fddd6aeef3b1beafb8640081a1addd8893430fc464736f6c63430008120033", + Bin: "0x60e060405234801561001057600080fd5b5060405162000f2138038062000f218339810160408190526100319161021e565b82806001600160a01b0381166100b45760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610122919061025a565b6001555061012f336101b0565b506001600160a01b0381166101985760405162461bcd60e51b815260206004820152602960248201527f426c6f636b4861736852656365697665723a207a65726f207075626c6973686560448201526872206164647265737360b81b60648201526084016100ab565b60a0919091526001600160a01b031660c05250610273565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b038116811461021957600080fd5b919050565b60008060006060848603121561023357600080fd5b61023c84610202565b92506020840151915061025160408501610202565b90509250925092565b60006020828403121561026c57600080fd5b5051919050565b60805160a05160c051610c63620002be600039600081816101c401526109b2015260008181610143015261093001526000818160ff015281816104b901526106e60152610c636000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806379a0710c11610097578063c868efaa11610066578063c868efaa1461024e578063d2cc7a7014610261578063f2fde38b14610269578063f3f39ee51461027c57600080fd5b806379a0710c146101bf5780638da5cb5b146101e657806397314297146101f7578063b17810be1461023357600080fd5b80634511243e116100d35780634511243e146101885780635eb995141461019b5780636c4f6ba9146101ae578063715018a6146101b757600080fd5b80631a7f5bec146100fa57806329b7b3fd1461013e5780632b0d8f1814610173575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101657f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610135565b610186610181366004610ae0565b610285565b005b610186610196366004610ae0565b610387565b6101866101a9366004610b02565b610484565b61016560045481565b610186610498565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b0316610121565b610223610205366004610ae0565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610135565b60035460045460408051928352602083019190915201610135565b61018661025c366004610b1b565b6104ac565b600154610165565b610186610277366004610ae0565b610664565b61016560035481565b61028d6106da565b6001600160a01b0381166102bc5760405162461bcd60e51b81526004016102b390610ba2565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff161561033b5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102b3565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b61038f6106da565b6001600160a01b0381166103b55760405162461bcd60e51b81526004016102b390610ba2565b6001600160a01b03811660009081526020819052604090205460ff1661042f5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102b3565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61048c6106da565b610495816106e2565b50565b6104a0610882565b6104aa60006108dc565b565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190610bf0565b10156105ae5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102b3565b6105b733610205565b1561061d5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102b3565b61065e848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061092e92505050565b50505050565b61066c610882565b6001600160a01b0381166106d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b3565b610495816108dc565b6104aa610882565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190610bf0565b600154909150818311156107d65760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102b3565b80831161084b5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102b3565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b3565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000083146109b05760405162461bcd60e51b815260206004820152602a60248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015269194818da185a5b88125160b21b60648201526084016102b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a4b5760405162461bcd60e51b815260206004820152603160248201527f426c6f636b4861736852656365697665723a20696e76616c696420736f757263604482015270329031b430b4b710383ab13634b9b432b960791b60648201526084016102b3565b60008082806020019051810190610a629190610c09565b91509150600354821115610abd576003829055600481905560405181815282906001600160a01b0386169087907f0bca78aa82d7575f42e4b4b2fe04765a4b2f3661786403788ce987e065ac590d9060200160405180910390a45b5050505050565b80356001600160a01b0381168114610adb57600080fd5b919050565b600060208284031215610af257600080fd5b610afb82610ac4565b9392505050565b600060208284031215610b1457600080fd5b5035919050565b60008060008060608587031215610b3157600080fd5b84359350610b4160208601610ac4565b9250604085013567ffffffffffffffff80821115610b5e57600080fd5b818701915087601f830112610b7257600080fd5b813581811115610b8157600080fd5b886020828501011115610b9357600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060208284031215610c0257600080fd5b5051919050565b60008060408385031215610c1c57600080fd5b50508051602090910151909290915056fea264697066735822122003731745f9b7068c0423e8ceb09fe70a8b572559d3396fcc2d2071a6b72cd60864736f6c63430008120033", } // BlockHashReceiverABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go index d11c81aa8..e6d6c3d20 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -38,7 +38,7 @@ type TeleporterFeeInfo struct { // TeleporterMessage is an auto generated low-level Go binding around an user-defined struct. type TeleporterMessage struct { MessageNonce *big.Int - SenderAddress common.Address + OriginSenderAddress common.Address DestinationBlockchainID [32]byte DestinationAddress common.Address RequiredGasLimit *big.Int @@ -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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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\":\"senderAddress\",\"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: "0x608060405234801561001057600080fd5b506001600081905580556132d5806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612251565b610503565b005b61015a61019036600461226e565b6105f8565b6101e06101a336600461226e565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b604051610164929190612287565b6102016101fc36600461226e565b610615565b6040516001600160a01b039091168152602001610164565b61015a61022736600461226e565b60009081526005602052604090205490565b61015a6102473660046122ae565b61069e565b61018061025a366004612301565b6106fc565b61015a61026d36600461226e565b60066020526000908152604090205481565b61029261028d366004612335565b6108a7565b6040516101649190612357565b6101806102ad366004612377565b6108da565b61015a6102c03660046123af565b610b19565b61015a6102d3366004612426565b610b5c565b6102016005600160991b0181565b61015a6102f43660046124be565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124f7565b610e03565b61015a60025481565b61015a61034936600461226e565b61123d565b61039761035c36600461226e565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c436600461226e565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b61040561040036600461226e565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c36600461251e565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190612564565b9050806104cd5760405162461bcd60e51b81526004016104c49061257d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155f565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c4906125c4565b60026000556106f16106d383612804565b833560009081526004602052604090206106ec90611572565b61167c565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c4906125c4565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128a7565b6000836040516020016107b29190612b42565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612b55565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b9e565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c23565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612564565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118bc565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c4906125c4565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c36565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612c7b565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128a7565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611981565b600085815260056020526040812060020180549293508392909190610aa1908490612ce5565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c4906125c4565b60026000818155905490866001600160401b03811115610ba257610ba2612607565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612cf8565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612cf8565b602002602001018190525050505080610d6590612d0e565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d27565b8152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505060408051928352602080840190915290920152508361167c565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c36565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612da3565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f40565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae9565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b61565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612cf8565b6020026020010151611bd3565b61118b81612d0e565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cfb565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d929190613150565b60405180910390a460e0840151511561122f5761122f82876000015186611d57565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c49061257d565b600060035460016112719190612ce5565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612c36565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c4906128a7565b80836040516020016113169190612b42565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612b55565b600061135b6080850160608601612251565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a360008281526006602090815260408083208390558691611420918701908701612251565b61142d60e0870187613174565b60405160240161144094939291906131ba565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052905060006114886114816080870160608801612251565b5a84611e8a565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261155a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea4565b505050565b8054600182015460009161060f916131e5565b6060600061158960056115848561155f565b611f76565b9050806000036115d85760408051600080825260208201909252906115d0565b60408051808201909152600080825260208201528152602001906001900390816115a95790505b509392505050565b6000816001600160401b038111156115f2576115f2612607565b60405190808252806020026020018201604052801561163757816020015b60408051808201909152600080825260208201528152602001906001900390816116105790505b50905060005b828110156115d05761164e85611f8c565b82828151811061166057611660612cf8565b60200260200101819052508061167590612d0e565b905061163d565b600080611687610431565b9050600060036000815461169a90612d0e565b919050819055905060006116b383876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a00151815250905060008160405160200161172c91906131f8565b60405160208183030381529060405290506000808960400151602001511115611794576040890151516001600160a01b031661177a5760405162461bcd60e51b81526004016104c490612c7b565b604089015180516020909101516117919190611981565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df890611838908890869061320b565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061186a908690600401612c23565b6020604051808303816000875af1158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190612564565b50939998505050505050505050565b60408051808201909152600080825260208201526118d98361155f565b82106119315760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119479190612ce5565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612564565b9050611a056001600160a01b038516333086612058565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190612564565b9050818111611ad65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ae082826131e5565b95945050505050565b60008151600003611afc5750600161060f565b815160005b81811015611b5657846001600160a01b0316848281518110611b2557611b25612cf8565b60200260200101516001600160a01b031603611b465760019250505061060f565b611b4f81612d0e565b9050611b01565b506000949350505050565b80600003611bc15760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be484848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c3b575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611ca2908490612ce5565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cec919061321e565b60405180910390a45050505050565b6001820180548291600285019160009182611d1583612d0e565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db95760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dda5761155a838383612096565b602081015160e0820151604051600092611df892869260240161323e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e3d919084611e8a565b905080611e5657611e4f858585612096565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ef9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661210b9092919063ffffffff16565b80519091501561155a5780806020019051810190611f179190613268565b61155a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f8557816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611ff65760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559061204e908390612ce5565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120909085906323b872dd60e01b90608401611523565b50505050565b806040516020016120a791906131f8565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120fe9085906131f8565b60405180910390a3505050565b606061127e848460008585600080866001600160a01b031685876040516121329190613283565b60006040518083038185875af1925050503d806000811461216f576040519150601f19603f3d011682016040523d82523d6000602084013e612174565b606091505b509150915061218587838387612190565b979650505050505050565b606083156121ff5782516000036121f8576001600160a01b0385163b6121f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b508161127e565b61127e83838151156122145781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c23565b6001600160a01b038116811461224357600080fd5b50565b80356104fe8161222e565b60006020828403121561226357600080fd5b81356108d38161222e565b60006020828403121561228057600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b6000602082840312156122c057600080fd5b81356001600160401b038111156122d657600080fd5b820160e081850312156108d357600080fd5b600061010082840312156122fb57600080fd5b50919050565b60006020828403121561231357600080fd5b81356001600160401b0381111561232957600080fd5b61127e848285016122e8565b6000806040838503121561234857600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b60008060006060848603121561238c57600080fd5b83359250602084013561239e8161222e565b929592945050506040919091013590565b6000806000606084860312156123c457600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123ed57600080fd5b5081356001600160401b0381111561240457600080fd5b6020830191508360208260051b850101111561241f57600080fd5b9250929050565b60008060008060008086880360a081121561244057600080fd5b8735965060208801356001600160401b038082111561245e57600080fd5b61246a8b838c016123db565b90985096508691506040603f198401121561248457600080fd5b60408a01955060808a013592508083111561249e57600080fd5b50506124ac89828a016123db565b979a9699509497509295939492505050565b600080604083850312156124d157600080fd5b82356124dc8161222e565b915060208301356124ec8161222e565b809150509250929050565b6000806040838503121561250a57600080fd5b823563ffffffff811681146124dc57600080fd5b6000806040838503121561253157600080fd5b8235915060208301356001600160401b0381111561254e57600080fd5b61255a858286016122e8565b9150509250929050565b60006020828403121561257657600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561263f5761263f612607565b60405290565b60405160c081016001600160401b038111828210171561263f5761263f612607565b60405161010081016001600160401b038111828210171561263f5761263f612607565b604051601f8201601f191681016001600160401b03811182821017156126b2576126b2612607565b604052919050565b6000604082840312156126cc57600080fd5b6126d461261d565b905081356126e18161222e565b808252506020820135602082015292915050565b60006001600160401b0382111561270e5761270e612607565b5060051b60200190565b600082601f83011261272957600080fd5b8135602061273e612739836126f5565b61268a565b82815260059290921b8401810191818101908684111561275d57600080fd5b8286015b848110156127815780356127748161222e565b8352918301918301612761565b509695505050505050565b60006001600160401b038211156127a5576127a5612607565b50601f01601f191660200190565b600082601f8301126127c457600080fd5b81356127d26127398261278c565b8181528460208386010111156127e757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561281657600080fd5b61281e612645565b8235815261282e60208401612246565b602082015261284036604085016126ba565b60408201526080830135606082015260a08301356001600160401b038082111561286957600080fd5b61287536838701612718565b608084015260c085013591508082111561288e57600080fd5b5061289b368286016127b3565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261290457600080fd5b83016020810192503590506001600160401b0381111561292357600080fd5b8060051b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781356129588161222e565b6001600160a01b031687529582019590820190600101612945565b509495945050505050565b6000808335601e1984360301811261299557600080fd5b83016020810192503590506001600160401b038111156129b457600080fd5b8060061b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781358752828201356129ef8161222e565b6001600160a01b03168784015260409687019691909101906001016129d6565b6000808335601e19843603018112612a2657600080fd5b83016020810192503590506001600160401b03811115612a4557600080fd5b80360382131561241f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a948161222e565b6001600160a01b0316602085015260408381013590850152612ab860608401612246565b6001600160a01b0316606085015260808381013590850152612add60a08401846128ed565b8260a0870152612af08387018284612935565b92505050612b0160c084018461297e565b85830360c0870152612b148382846129c6565b92505050612b2560e0840184612a0f565b85830360e0870152612b38838284612a54565b9695505050505050565b6020815260006108d36020830184612a7d565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612bb16060830185612a7d565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612bee578181015183820152602001612bd6565b50506000910152565b60008151808452612c0f816020860160208601612bd3565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612bf7565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612ccf565b634e487b7160e01b600052603260045260246000fd5b600060018201612d2057612d20612ccf565b5060010190565b600060408284031215612d3957600080fd5b6108d383836126ba565b80516104fe8161222e565b600082601f830112612d5f57600080fd5b8151612d6d6127398261278c565b818152846020838601011115612d8257600080fd5b61127e826020830160208701612bd3565b805180151581146104fe57600080fd5b60008060408385031215612db657600080fd5b82516001600160401b0380821115612dcd57600080fd5b9084019060608287031215612de157600080fd5b604051606081018181108382111715612dfc57612dfc612607565b604052825181526020830151612e118161222e565b6020820152604083015182811115612e2857600080fd5b612e3488828601612d4e565b6040830152509350612e4b91505060208401612d93565b90509250929050565b600082601f830112612e6557600080fd5b81516020612e75612739836126f5565b82815260059290921b84018101918181019086841115612e9457600080fd5b8286015b84811015612781578051612eab8161222e565b8352918301918301612e98565b600082601f830112612ec957600080fd5b81516020612ed9612739836126f5565b82815260069290921b84018101918181019086841115612ef857600080fd5b8286015b848110156127815760408189031215612f155760008081fd5b612f1d61261d565b8151815284820151612f2e8161222e565b81860152835291830191604001612efc565b600060208284031215612f5257600080fd5b81516001600160401b0380821115612f6957600080fd5b908301906101008286031215612f7e57600080fd5b612f86612667565b82518152612f9660208401612d43565b602082015260408301516040820152612fb160608401612d43565b60608201526080830151608082015260a083015182811115612fd257600080fd5b612fde87828601612e54565b60a08301525060c083015182811115612ff657600080fd5b61300287828601612eb8565b60c08301525060e08301518281111561301a57600080fd5b61302687828601612d4e565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129735781516001600160a01b031687529582019590820190600101613049565b600081518084526020808501945080840160005b83811015612973576130a8878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613082565b60006101008251845260018060a01b0360208401511660208501526040830151604085015260608301516130fa60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261311c82860182613035565b91505060c083015184820360c0860152613136828261306e565b91505060e083015184820360e0860152611ae08282612bf7565b6001600160a01b038316815260406020820181905260009061127e908301846130bb565b6000808335601e1984360301811261318b57600080fd5b8301803591506001600160401b038211156131a557600080fd5b60200191503681900382131561241f57600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b389083018486612a54565b8181038181111561060f5761060f612ccf565b6020815260006108d360208301846130bb565b606081526000612bb160608301856130bb565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ae090830184612bf7565b60006020828403121561327a57600080fd5b6108d382612d93565b60008251613295818460208701612bd3565b919091019291505056fea26469706673582212201c776e83b028c5c515aed46e29910c8b406fe810a5ac98d02e2e085be7696f2264736f6c63430008120033", + 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: "0x608060405234801561001057600080fd5b506001600081905580556132d5806100296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612251565b610503565b005b61015a61019036600461226e565b6105f8565b6101e06101a336600461226e565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b604051610164929190612287565b6102016101fc36600461226e565b610615565b6040516001600160a01b039091168152602001610164565b61015a61022736600461226e565b60009081526005602052604090205490565b61015a6102473660046122ae565b61069e565b61018061025a366004612301565b6106fc565b61015a61026d36600461226e565b60066020526000908152604090205481565b61029261028d366004612335565b6108a7565b6040516101649190612357565b6101806102ad366004612377565b6108da565b61015a6102c03660046123af565b610b19565b61015a6102d3366004612426565b610b5c565b6102016005600160991b0181565b61015a6102f43660046124be565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124f7565b610e03565b61015a60025481565b61015a61034936600461226e565b61123d565b61039761035c36600461226e565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c436600461226e565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b61040561040036600461226e565b611286565b6040519015158152602001610164565b61015a60035481565b61018061042c36600461251e565b61129c565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a59190612564565b9050806104cd5760405162461bcd60e51b81526004016104c49061257d565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114f7565b5050565b600081815260046020526040812061060f9061155f565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c4906125c4565b60026000556106f16106d383612804565b833560009081526004602052604090206106ec90611572565b61167c565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c4906125c4565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128a7565b6000836040516020016107b29190612b42565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612b55565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612b9e565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c23565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612564565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118bc565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c4906125c4565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c36565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612c7b565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128a7565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611981565b600085815260056020526040812060020180549293508392909190610aa1908490612ce5565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c4906125c4565b60026000818155905490866001600160401b03811115610ba257610ba2612607565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612cf8565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612cf8565b602002602001018190525050505080610d6590612d0e565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d27565b8152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505060408051928352602080840190915290920152508361167c565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c36565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612da3565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f40565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ae9565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b61565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612cf8565b6020026020010151611bd3565b61118b81612d0e565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611cfb565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d929190613150565b60405180910390a460e0840151511561122f5761122f82876000015186611d57565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c49061257d565b600060035460016112719190612ce5565b905061127e828583610b19565b949350505050565b600081815260076020526040812054151561060f565b60018054146112bd5760405162461bcd60e51b81526004016104c490612c36565b60026001819055546000906112d59084908435610b19565b600081815260066020526040902054909150806113045760405162461bcd60e51b81526004016104c4906128a7565b80836040516020016113169190612b42565b60405160208183030381529060405280519060200120146113495760405162461bcd60e51b81526004016104c490612b55565b600061135b6080850160608601612251565b6001600160a01b03163b116113cf5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a360008281526006602090815260408083208390558691611420918701908701612251565b61142d60e0870187613174565b60405160240161144094939291906131ba565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052905060006114886114816080870160608801612251565b5a84611e8a565b9050806114eb5760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261155a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea4565b505050565b8054600182015460009161060f916131e5565b6060600061158960056115848561155f565b611f76565b9050806000036115d85760408051600080825260208201909252906115d0565b60408051808201909152600080825260208201528152602001906001900390816115a95790505b509392505050565b6000816001600160401b038111156115f2576115f2612607565b60405190808252806020026020018201604052801561163757816020015b60408051808201909152600080825260208201528152602001906001900390816116105790505b50905060005b828110156115d05761164e85611f8c565b82828151811061166057611660612cf8565b60200260200101819052508061167590612d0e565b905061163d565b600080611687610431565b9050600060036000815461169a90612d0e565b919050819055905060006116b383876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a00151815250905060008160405160200161172c91906131f8565b60405160208183030381529060405290506000808960400151602001511115611794576040890151516001600160a01b031661177a5760405162461bcd60e51b81526004016104c490612c7b565b604089015180516020909101516117919190611981565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df890611838908890869061320b565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061186a908690600401612c23565b6020604051808303816000875af1158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad9190612564565b50939998505050505050505050565b60408051808201909152600080825260208201526118d98361155f565b82106119315760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b8260020160008385600001546119479190612ce5565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612564565b9050611a056001600160a01b038516333086612058565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190612564565b9050818111611ad65760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ae082826131e5565b95945050505050565b60008151600003611afc5750600161060f565b815160005b81811015611b5657846001600160a01b0316848281518110611b2557611b25612cf8565b60200260200101516001600160a01b031603611b465760019250505061060f565b611b4f81612d0e565b9050611b01565b506000949350505050565b80600003611bc15760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611be484848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c3b575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611ca2908490612ce5565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cec919061321e565b60405180910390a45050505050565b6001820180548291600285019160009182611d1583612d0e565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611db95760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dda5761155a838383612096565b602081015160e0820151604051600092611df892869260240161323e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e3d919084611e8a565b905080611e5657611e4f858585612096565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ef9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661210b9092919063ffffffff16565b80519091501561155a5780806020019051810190611f179190613268565b61155a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f8557816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611ff65760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559061204e908390612ce5565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120909085906323b872dd60e01b90608401611523565b50505050565b806040516020016120a791906131f8565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120fe9085906131f8565b60405180910390a3505050565b606061127e848460008585600080866001600160a01b031685876040516121329190613283565b60006040518083038185875af1925050503d806000811461216f576040519150601f19603f3d011682016040523d82523d6000602084013e612174565b606091505b509150915061218587838387612190565b979650505050505050565b606083156121ff5782516000036121f8576001600160a01b0385163b6121f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b508161127e565b61127e83838151156122145781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c23565b6001600160a01b038116811461224357600080fd5b50565b80356104fe8161222e565b60006020828403121561226357600080fd5b81356108d38161222e565b60006020828403121561228057600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b6000602082840312156122c057600080fd5b81356001600160401b038111156122d657600080fd5b820160e081850312156108d357600080fd5b600061010082840312156122fb57600080fd5b50919050565b60006020828403121561231357600080fd5b81356001600160401b0381111561232957600080fd5b61127e848285016122e8565b6000806040838503121561234857600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b60008060006060848603121561238c57600080fd5b83359250602084013561239e8161222e565b929592945050506040919091013590565b6000806000606084860312156123c457600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123ed57600080fd5b5081356001600160401b0381111561240457600080fd5b6020830191508360208260051b850101111561241f57600080fd5b9250929050565b60008060008060008086880360a081121561244057600080fd5b8735965060208801356001600160401b038082111561245e57600080fd5b61246a8b838c016123db565b90985096508691506040603f198401121561248457600080fd5b60408a01955060808a013592508083111561249e57600080fd5b50506124ac89828a016123db565b979a9699509497509295939492505050565b600080604083850312156124d157600080fd5b82356124dc8161222e565b915060208301356124ec8161222e565b809150509250929050565b6000806040838503121561250a57600080fd5b823563ffffffff811681146124dc57600080fd5b6000806040838503121561253157600080fd5b8235915060208301356001600160401b0381111561254e57600080fd5b61255a858286016122e8565b9150509250929050565b60006020828403121561257657600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561263f5761263f612607565b60405290565b60405160c081016001600160401b038111828210171561263f5761263f612607565b60405161010081016001600160401b038111828210171561263f5761263f612607565b604051601f8201601f191681016001600160401b03811182821017156126b2576126b2612607565b604052919050565b6000604082840312156126cc57600080fd5b6126d461261d565b905081356126e18161222e565b808252506020820135602082015292915050565b60006001600160401b0382111561270e5761270e612607565b5060051b60200190565b600082601f83011261272957600080fd5b8135602061273e612739836126f5565b61268a565b82815260059290921b8401810191818101908684111561275d57600080fd5b8286015b848110156127815780356127748161222e565b8352918301918301612761565b509695505050505050565b60006001600160401b038211156127a5576127a5612607565b50601f01601f191660200190565b600082601f8301126127c457600080fd5b81356127d26127398261278c565b8181528460208386010111156127e757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561281657600080fd5b61281e612645565b8235815261282e60208401612246565b602082015261284036604085016126ba565b60408201526080830135606082015260a08301356001600160401b038082111561286957600080fd5b61287536838701612718565b608084015260c085013591508082111561288e57600080fd5b5061289b368286016127b3565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261290457600080fd5b83016020810192503590506001600160401b0381111561292357600080fd5b8060051b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781356129588161222e565b6001600160a01b031687529582019590820190600101612945565b509495945050505050565b6000808335601e1984360301811261299557600080fd5b83016020810192503590506001600160401b038111156129b457600080fd5b8060061b360382131561241f57600080fd5b8183526000602080850194508260005b858110156129735781358752828201356129ef8161222e565b6001600160a01b03168784015260409687019691909101906001016129d6565b6000808335601e19843603018112612a2657600080fd5b83016020810192503590506001600160401b03811115612a4557600080fd5b80360382131561241f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a948161222e565b6001600160a01b0316602085015260408381013590850152612ab860608401612246565b6001600160a01b0316606085015260808381013590850152612add60a08401846128ed565b8260a0870152612af08387018284612935565b92505050612b0160c084018461297e565b85830360c0870152612b148382846129c6565b92505050612b2560e0840184612a0f565b85830360e0870152612b38838284612a54565b9695505050505050565b6020815260006108d36020830184612a7d565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612bb16060830185612a7d565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612bee578181015183820152602001612bd6565b50506000910152565b60008151808452612c0f816020860160208601612bd3565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612bf7565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612ccf565b634e487b7160e01b600052603260045260246000fd5b600060018201612d2057612d20612ccf565b5060010190565b600060408284031215612d3957600080fd5b6108d383836126ba565b80516104fe8161222e565b600082601f830112612d5f57600080fd5b8151612d6d6127398261278c565b818152846020838601011115612d8257600080fd5b61127e826020830160208701612bd3565b805180151581146104fe57600080fd5b60008060408385031215612db657600080fd5b82516001600160401b0380821115612dcd57600080fd5b9084019060608287031215612de157600080fd5b604051606081018181108382111715612dfc57612dfc612607565b604052825181526020830151612e118161222e565b6020820152604083015182811115612e2857600080fd5b612e3488828601612d4e565b6040830152509350612e4b91505060208401612d93565b90509250929050565b600082601f830112612e6557600080fd5b81516020612e75612739836126f5565b82815260059290921b84018101918181019086841115612e9457600080fd5b8286015b84811015612781578051612eab8161222e565b8352918301918301612e98565b600082601f830112612ec957600080fd5b81516020612ed9612739836126f5565b82815260069290921b84018101918181019086841115612ef857600080fd5b8286015b848110156127815760408189031215612f155760008081fd5b612f1d61261d565b8151815284820151612f2e8161222e565b81860152835291830191604001612efc565b600060208284031215612f5257600080fd5b81516001600160401b0380821115612f6957600080fd5b908301906101008286031215612f7e57600080fd5b612f86612667565b82518152612f9660208401612d43565b602082015260408301516040820152612fb160608401612d43565b60608201526080830151608082015260a083015182811115612fd257600080fd5b612fde87828601612e54565b60a08301525060c083015182811115612ff657600080fd5b61300287828601612eb8565b60c08301525060e08301518281111561301a57600080fd5b61302687828601612d4e565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129735781516001600160a01b031687529582019590820190600101613049565b600081518084526020808501945080840160005b83811015612973576130a8878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613082565b60006101008251845260018060a01b0360208401511660208501526040830151604085015260608301516130fa60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261311c82860182613035565b91505060c083015184820360c0860152613136828261306e565b91505060e083015184820360e0860152611ae08282612bf7565b6001600160a01b038316815260406020820181905260009061127e908301846130bb565b6000808335601e1984360301811261318b57600080fd5b8301803591506001600160401b038211156131a557600080fd5b60200191503681900382131561241f57600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b389083018486612a54565b8181038181111561060f5761060f612ccf565b6020815260006108d360208301846130bb565b606081526000612bb160608301856130bb565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ae090830184612bf7565b60006020828403121561327a57600080fd5b6108d382612d93565b60008251613295818460208701612bd3565b919091019291505056fea26469706673582212208d88568c9bf94c2c142372eb5ef7360448854c0329fbba33f25ff697e50ae97d64736f6c63430008120033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/event_test.go b/abi-bindings/go/Teleporter/TeleporterMessenger/event_test.go index 051a66a99..de2f29e02 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/event_test.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/event_test.go @@ -111,7 +111,7 @@ func TestFilterTeleporterEvents(t *testing.T) { }, expected: &TeleporterMessengerReceiveCrossChainMessage{ MessageID: mockMessageID, - OriginBlockchainID: mockBlockchainID, + SourceBlockchainID: mockBlockchainID, Deliverer: deliverer, RewardRedeemer: deliverer, Message: message, @@ -125,7 +125,7 @@ func TestFilterTeleporterEvents(t *testing.T) { }, expected: &TeleporterMessengerMessageExecuted{ MessageID: mockMessageID, - OriginBlockchainID: mockBlockchainID, + SourceBlockchainID: mockBlockchainID, }, }, } diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go b/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go index 356e28385..be2ed35dd 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go @@ -19,7 +19,7 @@ func init() { var err error teleporterMessageType, err = abi.NewType("tuple", "struct Overloader.F", []abi.ArgumentMarshaling{ {Name: "messageNonce", Type: "uint256"}, - {Name: "senderAddress", Type: "address"}, + {Name: "originSenderAddress", Type: "address"}, {Name: "destinationBlockchainID", Type: "bytes32"}, {Name: "destinationAddress", Type: "address"}, {Name: "requiredGasLimit", Type: "uint256"}, diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go b/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go index 1e036cfa7..44e1045c1 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go @@ -109,7 +109,7 @@ func TestUnpackEvent(t *testing.T) { }, out: new(TeleporterMessengerReceiveCrossChainMessage), expected: &TeleporterMessengerReceiveCrossChainMessage{ - OriginBlockchainID: mockBlockchainID, + SourceBlockchainID: mockBlockchainID, MessageID: mockMessageID, Deliverer: deliverer, RewardRedeemer: deliverer, @@ -125,7 +125,7 @@ func TestUnpackEvent(t *testing.T) { out: new(TeleporterMessengerMessageExecuted), expected: &TeleporterMessengerMessageExecuted{ MessageID: mockMessageID, - OriginBlockchainID: mockBlockchainID, + SourceBlockchainID: mockBlockchainID, }, }, } diff --git a/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go b/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go index 6f8f1438f..7cca79e95 100644 --- a/abi-bindings/go/Teleporter/upgrades/TeleporterRegistry/TeleporterRegistry.go +++ b/abi-bindings/go/Teleporter/upgrades/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: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea2646970667358221220322a2b1a682b1ded2b648e61d3bc751c9040e33f15154af49031517892b27ab764736f6c63430008120033", + Bin: "0x60a06040523480156200001157600080fd5b50604051620010963803806200109683398101604081905262000034916200041a565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad91906200050c565b608052805160005b81811015620000fe57620000eb838281518110620000d757620000d762000526565b60200260200101516200010760201b60201c565b620000f68162000552565b9050620000b5565b5050506200058a565b80516000036200015e5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e60448201526064015b60405180910390fd5b80516000908152600160205260409020546001600160a01b031615620001da5760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b606482015260840162000155565b60208101516001600160a01b0316620002485760405162461bcd60e51b815260206004820152602960248201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6044820152686c206164647265737360b81b606482015260840162000155565b600054620002596101f4826200056e565b82511115620002c25760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b606482015260840162000155565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b03948516179055925190911681526002909252902054825111156200032c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a38151811015620003a2578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003e157620003e1620003a6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004125762000412620003a6565b604052919050565b600060208083850312156200042e57600080fd5b82516001600160401b03808211156200044657600080fd5b818501915085601f8301126200045b57600080fd5b815181811115620004705762000470620003a6565b62000480848260051b01620003e7565b818152848101925060069190911b830184019087821115620004a157600080fd5b928401925b81841015620005015760408489031215620004c15760008081fd5b620004cb620003bc565b84518152858501516001600160a01b0381168114620004ea5760008081fd5b8187015283526040939093019291840191620004a6565b979650505050505050565b6000602082840312156200051f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200056757620005676200053c565b5060010190565b808201808211156200058457620005846200053c565b92915050565b608051610ae9620005ad6000396000818161014901526102640152610ae96000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ac473ac311610066578063ac473ac314610124578063b771b3bc1461012d578063c07f47d41461013b578063d127dc9b14610144578063d820e64f1461016b57600080fd5b80630731775d146100a3578063215abce9146100c857806341f34ed9146100db57806346f9ef49146100f05780634c1f08ce14610103575b600080fd5b6100ab600081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100d63660046107c5565b610173565b6100ee6100e93660046107de565b610184565b005b6100ab6100fe3660046107c5565b6103f9565b610116610111366004610823565b6104be565b6040519081526020016100bf565b6101166101f481565b6100ab6005600160991b0181565b61011660005481565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100ab610566565b600061017e826103f9565b92915050565b6040516306f8253560e41b815263ffffffff8216600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f991908101906108c5565b91509150806102605760405162461bcd60e51b815260206004820152602860248201527f54656c65706f7274657252656769737472793a20696e76616c69642077617270604482015267206d65737361676560c01b60648201526084015b60405180910390fd5b81517f0000000000000000000000000000000000000000000000000000000000000000146102e45760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f7274657252656769737472793a20696e76616c696420736f757260448201526a18d94818da185a5b88125160aa1b6064820152608401610257565b60208201516001600160a01b0316156103595760405162461bcd60e51b815260206004820152603160248201527f54656c65706f7274657252656769737472793a20696e76616c6964206f726967604482015270696e2073656e646572206164647265737360781b6064820152608401610257565b600080836040015180602001905181019061037491906109cd565b90925090506001600160a01b03811630146103e95760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f7274657252656769737472793a20696e76616c6964206465737460448201526e696e6174696f6e206164647265737360881b6064820152608401610257565b6103f282610578565b5050505050565b60008160000361044b5760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b6000828152600160205260409020546001600160a01b03168061017e5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f7274657252656769737472793a2076657273696f6e206e6f7420604482015264199bdd5b9960da1b6064820152608401610257565b60006001600160a01b0382166104e65760405162461bcd60e51b815260040161025790610a49565b6001600160a01b0382166000908152600260205260408120549081900361017e5760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2070726f746f636f6c2061646460448201526d1c995cdcc81b9bdd08199bdd5b9960921b6064820152608401610257565b60006105736000546103f9565b905090565b80516000036105c95760405162461bcd60e51b815260206004820181905260248201527f54656c65706f7274657252656769737472793a207a65726f2076657273696f6e6044820152606401610257565b80516000908152600160205260409020546001600160a01b0316156106435760405162461bcd60e51b815260206004820152602a60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20616c72656044820152696164792065786973747360b01b6064820152608401610257565b60208101516001600160a01b031661066d5760405162461bcd60e51b815260040161025790610a49565b60005461067c6101f482610a92565b825111156106e35760405162461bcd60e51b815260206004820152602e60248201527f54656c65706f7274657252656769737472793a2076657273696f6e20696e637260448201526d0cadacadce840e8dede40d0d2ced60931b6064820152608401610257565b602082810180518451600090815260018452604080822080546001600160a01b0319166001600160a01b039485161790559251909116815260029092529020548251111561074c5781516020808401516001600160a01b03166000908152600290915260409020555b602082015182516040516001600160a01b03909216917fa5eed93d951a9603d5f7c0a57de79a299dd3dbd5e51429be209d8053a42ab43a90600090a381518110156107c1578151600081815560405183917f30623e953733f6474dabdfbef1103ce15ab73cdc77c6dfad0f9874d167e8a9b091a35b5050565b6000602082840312156107d757600080fd5b5035919050565b6000602082840312156107f057600080fd5b813563ffffffff8116811461080457600080fd5b9392505050565b6001600160a01b038116811461082057600080fd5b50565b60006020828403121561083557600080fd5b81356108048161080b565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561087957610879610840565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156108a8576108a8610840565b604052919050565b805180151581146108c057600080fd5b919050565b600080604083850312156108d857600080fd5b825167ffffffffffffffff808211156108f057600080fd5b908401906060828703121561090457600080fd5b61090c610856565b8251815260208084015161091f8161080b565b8282015260408401518381111561093557600080fd5b80850194505087601f85011261094a57600080fd5b83518381111561095c5761095c610840565b61096e601f8201601f1916830161087f565b9350808452888282870101111561098457600080fd5b60005b818110156109a2578581018301518582018401528201610987565b506000828286010152508260408301528195506109c08188016108b0565b9450505050509250929050565b60008082840360608112156109e157600080fd5b60408112156109ef57600080fd5b506040516040810181811067ffffffffffffffff82111715610a1357610a13610840565b604052835181526020840151610a288161080b565b60208201526040840151909250610a3e8161080b565b809150509250929050565b60208082526029908201527f54656c65706f7274657252656769737472793a207a65726f2070726f746f636f6040820152686c206164647265737360b81b606082015260800190565b8082018082111561017e57634e487b7160e01b600052601160045260246000fdfea2646970667358221220fd4a11574ce89eb8aa625fb5b2a0d050c064294b4a2a607de18c1dba7e0f1a2a64736f6c63430008120033", } // TeleporterRegistryABI is the input ABI used to generate the binding from. diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol index a7dea8dd4..8ebba0404 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol @@ -128,7 +128,7 @@ contract ERC20TokenSource is */ function _receiveTeleporterMessage( bytes32 senderBlockchainID, - address senderAddress, + address originSenderAddress, bytes memory message ) internal override { // Only allow messages from the destination chain. @@ -139,7 +139,7 @@ contract ERC20TokenSource is // Only allow the partner contract to send messages. require( - senderAddress == nativeTokenDestinationAddress, "ERC20TokenSource: unauthorized sender" + originSenderAddress == nativeTokenDestinationAddress, "ERC20TokenSource: unauthorized sender" ); // Decode the payload to recover the action and corresponding function parameters diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol index 64b9bac2c..639e2477d 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol @@ -189,7 +189,7 @@ contract NativeTokenDestination is */ function _receiveTeleporterMessage( bytes32 senderBlockchainID, - address senderAddress, + address originSenderAddress, bytes memory message ) internal override { // Only allow messages from the source chain. @@ -199,7 +199,7 @@ contract NativeTokenDestination is // Only allow the partner contract to send messages. require( - senderAddress == nativeTokenSourceAddress, "NativeTokenDestination: unauthorized sender" + originSenderAddress == nativeTokenSourceAddress, "NativeTokenDestination: unauthorized sender" ); (address recipient, uint256 amount) = abi.decode(message, (address, uint256)); diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol index 499e2ef93..d65801a81 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol @@ -116,7 +116,7 @@ contract NativeTokenSource is */ function _receiveTeleporterMessage( bytes32 senderBlockchainID, - address senderAddress, + address originSenderAddress, bytes memory message ) internal override { // Only allow messages from the destination chain. @@ -127,7 +127,7 @@ contract NativeTokenSource is // Only allow the partner contract to send messages. require( - senderAddress == nativeTokenDestinationAddress, "NativeTokenSource: unauthorized sender" + originSenderAddress == nativeTokenDestinationAddress, "NativeTokenSource: unauthorized sender" ); // Decode the payload to recover the action and corresponding function parameters diff --git a/contracts/src/Teleporter/ITeleporterMessenger.sol b/contracts/src/Teleporter/ITeleporterMessenger.sol index f2814a163..b5f236987 100644 --- a/contracts/src/Teleporter/ITeleporterMessenger.sol +++ b/contracts/src/Teleporter/ITeleporterMessenger.sol @@ -29,7 +29,7 @@ struct TeleporterMessageInput { // Represents a message sent or received by an implementation of {ITeleporterMessenger}. struct TeleporterMessage { uint256 messageNonce; - address senderAddress; + address originSenderAddress; bytes32 destinationBlockchainID; address destinationAddress; uint256 requiredGasLimit; diff --git a/contracts/src/Teleporter/TeleporterMessenger.sol b/contracts/src/Teleporter/TeleporterMessenger.sol index 3eb2fbaf9..b115ed040 100644 --- a/contracts/src/Teleporter/TeleporterMessenger.sol +++ b/contracts/src/Teleporter/TeleporterMessenger.sol @@ -358,7 +358,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // a fallback function, then the fallback function will be called instead. bytes memory payload = abi.encodeCall( ITeleporterReceiver.receiveTeleporterMessage, - (sourceBlockchainID, message.senderAddress, message.message) + (sourceBlockchainID, message.originSenderAddress, message.message) ); // Reattempt the message execution with all of the gas left available for execution of this transaction. @@ -605,7 +605,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // Construct and serialize the message. TeleporterMessage memory teleporterMessage = TeleporterMessage({ messageNonce: messageNonce_, - senderAddress: msg.sender, + originSenderAddress: msg.sender, destinationBlockchainID: messageInput.destinationBlockchainID, destinationAddress: messageInput.destinationAddress, requiredGasLimit: messageInput.requiredGasLimit, @@ -742,7 +742,7 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { // defined by the {ITeleporterReceiver} interface. bytes memory payload = abi.encodeCall( ITeleporterReceiver.receiveTeleporterMessage, - (sourceBlockchainID, message.senderAddress, message.message) + (sourceBlockchainID, message.originSenderAddress, message.message) ); // Call the destination address of the message with the formatted call data. Only provide the required diff --git a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol index 9b0ab4e3c..f27ae5dd0 100644 --- a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol @@ -76,7 +76,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { // Construct the mock message to be received. TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: _getNextMessageNonce(), - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -118,7 +118,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { // Construct the mock message to be received. TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: _getNextMessageNonce(), - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/GetMessageHashTests.t.sol b/contracts/src/Teleporter/tests/GetMessageHashTests.t.sol index 14abe37f4..d8e29e614 100644 --- a/contracts/src/Teleporter/tests/GetMessageHashTests.t.sol +++ b/contracts/src/Teleporter/tests/GetMessageHashTests.t.sol @@ -23,7 +23,7 @@ contract GetMessageHashTest is TeleporterMessengerTest { // Submit a message TeleporterMessage memory expectedMessage = TeleporterMessage({ messageNonce: _getNextMessageNonce(), - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol index f8e96b9f2..9f3a433a2 100644 --- a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol @@ -96,7 +96,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { string memory messageString = "Testing successful message"; TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -143,7 +143,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { string memory messageString = "Testing successful message"; TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: uint256( @@ -169,7 +169,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { string memory messageString = "Testing successful message"; TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -219,7 +219,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { string memory messageString = "Testing successful message"; TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol b/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol index c76640875..163617834 100644 --- a/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol +++ b/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol @@ -79,7 +79,7 @@ contract InitializeBlockchainIDTest is Test { function testInitializedByReceiving() public { TeleporterMessage memory teleporterMessage = TeleporterMessage({ messageNonce: 1, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(1), requiredGasLimit: 100, diff --git a/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol b/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol index 149d70ab8..609116fbb 100644 --- a/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol +++ b/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol @@ -37,7 +37,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { // Construct the test message to be received. TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 987, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -177,7 +177,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { // Construct the test message to be received. TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 0, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -240,7 +240,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { // Construct the test message to be received. TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol index f538a7aa4..65b1102b7 100644 --- a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol @@ -113,7 +113,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { // Retrying a message that never was delivered should always fail. TeleporterMessage memory fakeMessage = TeleporterMessage({ messageNonce: 12345, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -192,7 +192,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { } TeleporterMessage memory messageToReceive = TeleporterMessage({ messageNonce: 42, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(destinationContract), requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/RetrySendCrossChainMessageTests.t.sol b/contracts/src/Teleporter/tests/RetrySendCrossChainMessageTests.t.sol index f3a375905..2f924794d 100644 --- a/contracts/src/Teleporter/tests/RetrySendCrossChainMessageTests.t.sol +++ b/contracts/src/Teleporter/tests/RetrySendCrossChainMessageTests.t.sol @@ -25,7 +25,7 @@ contract RetrySendCrossChainMessageTest is TeleporterMessengerTest { _sendTestMessageWithFee(DEFAULT_DESTINATION_BLOCKCHAIN_ID, 654456); TeleporterMessage memory expectedMessage = TeleporterMessage({ messageNonce: expectedNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -41,7 +41,7 @@ contract RetrySendCrossChainMessageTest is TeleporterMessengerTest { function testMessageNotFound() public { TeleporterMessage memory fakeMessage = TeleporterMessage({ messageNonce: 345, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -59,7 +59,7 @@ contract RetrySendCrossChainMessageTest is TeleporterMessengerTest { _sendTestMessageWithFee(DEFAULT_DESTINATION_BLOCKCHAIN_ID, 654456); TeleporterMessage memory alteredMessage = TeleporterMessage({ messageNonce: expectedNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol index d8a0b519a..09e86598b 100644 --- a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol +++ b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol @@ -48,7 +48,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { uint256 expectedMessageNonce = _getNextMessageNonce(); TeleporterMessage memory expectedMessage = TeleporterMessage({ messageNonce: expectedMessageNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_ORIGIN_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, @@ -90,7 +90,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { teleporterMessenger.getNextMessageID(DEFAULT_ORIGIN_BLOCKCHAIN_ID); TeleporterMessage memory newExpectedMessage = TeleporterMessage({ messageNonce: newExpectedMessageNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_ORIGIN_BLOCKCHAIN_ID, destinationAddress: address(0), requiredGasLimit: uint256(0), @@ -163,7 +163,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { teleporterMessenger.getNextMessageID(DEFAULT_DESTINATION_BLOCKCHAIN_ID); TeleporterMessage memory expectedMessage = TeleporterMessage({ messageNonce: expectedMessageNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: address(0), requiredGasLimit: uint256(0), diff --git a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol index 91799e769..6a7ee2a7e 100644 --- a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol +++ b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol @@ -246,7 +246,7 @@ contract TeleporterMessengerTest is Test { ) internal view returns (TeleporterMessage memory) { return TeleporterMessage({ messageNonce: messageNonce, - senderAddress: address(this), + originSenderAddress: address(this), destinationBlockchainID: DEFAULT_DESTINATION_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, diff --git a/tests/flows/insufficient_gas.go b/tests/flows/insufficient_gas.go index 34f0fd879..747d99245 100644 --- a/tests/flows/insufficient_gas.go +++ b/tests/flows/insufficient_gas.go @@ -57,7 +57,7 @@ func InsufficientGas(network interfaces.Network) { ) Expect(err).Should(BeNil()) Expect(failedMessageExecutionEvent.MessageID[:]).Should(Equal(messageID[:])) - Expect(failedMessageExecutionEvent.OriginBlockchainID[:]).Should(Equal(subnetAInfo.BlockchainID[:])) + Expect(failedMessageExecutionEvent.SourceBlockchainID[:]).Should(Equal(subnetAInfo.BlockchainID[:])) // Retry message execution. This will execute the message with as much gas as needed // (up to the transaction gas limit), rather than using the required gas specified in the message itself. @@ -71,7 +71,7 @@ func InsufficientGas(network interfaces.Network) { executedEvent, err := utils.GetEventFromLogs(receipt.Logs, subnetBInfo.TeleporterMessenger.ParseMessageExecuted) Expect(err).Should(BeNil()) Expect(executedEvent.MessageID[:]).Should(Equal(messageID[:])) - Expect(executedEvent.OriginBlockchainID[:]).Should(Equal(subnetAInfo.BlockchainID[:])) + Expect(executedEvent.SourceBlockchainID[:]).Should(Equal(subnetAInfo.BlockchainID[:])) // // Verify we received the expected string diff --git a/tests/local/network.go b/tests/local/network.go index 2d94ffbfc..e591a8f62 100644 --- a/tests/local/network.go +++ b/tests/local/network.go @@ -439,7 +439,7 @@ func (n *LocalNetwork) RelayMessage(ctx context.Context, destination.TeleporterMessenger.ParseReceiveCrossChainMessage, ) Expect(err).Should(BeNil()) - Expect(receiveEvent.OriginBlockchainID[:]).Should(Equal(source.BlockchainID[:])) + Expect(receiveEvent.SourceBlockchainID[:]).Should(Equal(source.BlockchainID[:])) return receipt } From 750a319fbb57dafe2413e047220463d9d1ca1154 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:23:36 +0000 Subject: [PATCH 03/12] fix test --- contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol index 09e86598b..3daf7788e 100644 --- a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol +++ b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol @@ -137,7 +137,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { // different chain than they were delivered by. bytes32 otherBlockchainID = bytes32(hex"11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff"); - vm.expectRevert(_formatTeleporterErrorMessage("message ID not from origin blockchain")); + vm.expectRevert(_formatTeleporterErrorMessage("message ID not from source blockchain")); _sendSpecifiedReceiptsWithNoFee(otherBlockchainID, receiptIDs); } From c4fe69d1906bbefb833b17b005c772f371e6ad8b Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:29:58 +0000 Subject: [PATCH 04/12] sol lint --- .../examples/NativeTokenBridge/ERC20TokenSource.sol | 3 ++- .../examples/NativeTokenBridge/NativeTokenDestination.sol | 3 ++- .../examples/NativeTokenBridge/NativeTokenSource.sol | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol index 8ebba0404..11a24a89a 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource.sol @@ -139,7 +139,8 @@ contract ERC20TokenSource is // Only allow the partner contract to send messages. require( - originSenderAddress == nativeTokenDestinationAddress, "ERC20TokenSource: unauthorized sender" + originSenderAddress == nativeTokenDestinationAddress, + "ERC20TokenSource: unauthorized sender" ); // Decode the payload to recover the action and corresponding function parameters diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol index 639e2477d..bfda5b6c7 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination.sol @@ -199,7 +199,8 @@ contract NativeTokenDestination is // Only allow the partner contract to send messages. require( - originSenderAddress == nativeTokenSourceAddress, "NativeTokenDestination: unauthorized sender" + originSenderAddress == nativeTokenSourceAddress, + "NativeTokenDestination: unauthorized sender" ); (address recipient, uint256 amount) = abi.decode(message, (address, uint256)); diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol index d65801a81..b8a33ff6c 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource.sol @@ -127,7 +127,8 @@ contract NativeTokenSource is // Only allow the partner contract to send messages. require( - originSenderAddress == nativeTokenDestinationAddress, "NativeTokenSource: unauthorized sender" + originSenderAddress == nativeTokenDestinationAddress, + "NativeTokenSource: unauthorized sender" ); // Decode the payload to recover the action and corresponding function parameters From 4dedebf01e1649022626d61f0e9d32c568c89bcc Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:30:32 +0000 Subject: [PATCH 05/12] fix test --- abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go b/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go index 44e1045c1..33b95b3ce 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/packing_test.go @@ -16,7 +16,7 @@ import ( func createTestTeleporterMessage(messageNonce *big.Int) TeleporterMessage { m := TeleporterMessage{ MessageNonce: messageNonce, - SenderAddress: common.HexToAddress("0x0123456789abcdef0123456789abcdef01234567"), + OriginSenderAddress: common.HexToAddress("0x0123456789abcdef0123456789abcdef01234567"), DestinationBlockchainID: ids.ID{1, 2, 3, 4}, DestinationAddress: common.HexToAddress("0x0123456789abcdef0123456789abcdef01234567"), RequiredGasLimit: big.NewInt(2), From 542992c589542f732b888046f4250b2683ede02b Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Thu, 11 Jan 2024 21:35:19 +0000 Subject: [PATCH 06/12] abigen --- .../NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go | 2 +- .../NativeTokenDestination/NativeTokenDestination.go | 2 +- .../NativeTokenBridge/NativeTokenSource/NativeTokenSource.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go index b09786fc1..7a9ee5ee8 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/ERC20TokenSource/ERC20TokenSource.go @@ -32,7 +32,7 @@ var ( // ERC20TokenSourceMetaData contains all meta data concerning the ERC20TokenSource contract. var ERC20TokenSourceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20ContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20ContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"transferToDestination\",\"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: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea2646970667358221220ac3cb53950b6129adfd8e69e3c62839501ad58717ac401f7f3d363f48291580064736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", + Bin: "0x6101006040523480156200001257600080fd5b506040516200205f3803806200205f8339810160408190526200003591620003f0565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000444565b60015550620001393362000381565b50600160035582620001965760405162461bcd60e51b815260206004820152603060248201526000805160206200203f83398151915260448201526f1bdb88189b1bd8dad8da185a5b88125160821b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000444565b8303620002855760405162461bcd60e51b815260206004820152603460248201527f4552433230546f6b656e536f757263653a2063616e6e6f74206272696467652060448201527f776974682073616d6520626c6f636b636861696e0000000000000000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f75760405162461bcd60e51b815260206004820152603360248201526000805160206200203f83398151915260448201527f6f6e20636f6e74726163742061646472657373000000000000000000000000006064820152608401620000b0565b6001600160a01b0380831660c05281166200036b5760405162461bcd60e51b815260206004820152602d60248201527f4552433230546f6b656e536f757263653a207a65726f20455243323020636f6e60448201526c7472616374206164647265737360981b6064820152608401620000b0565b6001600160a01b031660e052506200045e915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003eb57600080fd5b919050565b600080600080608085870312156200040757600080fd5b6200041285620003d3565b9350602085015192506200042960408601620003d3565b91506200043960608601620003d3565b905092959194509250565b6000602082840312156200045757600080fd5b5051919050565b60805160a05160c05160e051611b53620004ec6000396000818161028601528181610533015281816105cb0152818161067d015281816113a101526114750152600081816102440152818161064301526110ae01526000818161016e0152818161061d015261102b015260008181610115015281816107f801528181610a250152610ccb0152611b536000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063c868efaa11610071578063c868efaa14610266578063d2cc7a7014610279578063e486df1514610281578063f2fde38b146102a8578063fccc2813146102bb57600080fd5b80638da5cb5b146101e857806397314297146101f9578063b6171f7314610235578063b8c9091a1461023f57600080fd5b806355db3e9e116100de57806355db3e9e146101b15780635eb99514146101ba578063715018a6146101cd57806387a2edba146101d557600080fd5b80631a7f5bec146101105780632b0d8f181461015457806341d3014d146101695780634511243e1461019e575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610167610162366004611632565b6102cb565b005b6101907f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161014b565b6101676101ac366004611632565b6103cd565b61019060045481565b6101676101c8366004611656565b6104ca565b6101676104de565b6101676101e336600461166f565b6104f2565b6002546001600160a01b0316610137565b610225610207366004611632565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200161014b565b610190620186a081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b610167610274366004611708565b6107eb565b600154610190565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101676102b6366004611632565b6109a3565b61013762010203600160981b0181565b6102d3610a19565b6001600160a01b0381166103025760405162461bcd60e51b81526004016102f990611791565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156103815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016102f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6103d5610a19565b6001600160a01b0381166103fb5760405162461bcd60e51b81526004016102f990611791565b6001600160a01b03811660009081526020819052604090205460ff166104755760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016102f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6104d2610a19565b6104db81610a21565b50565b6104e6610bc1565b6104f06000610c1b565b565b6104fa610c6d565b6000610504610cc6565b90506001600160a01b03861661052c5760405162461bcd60e51b81526004016102f9906117df565b60006105587f000000000000000000000000000000000000000000000000000000000000000087610dda565b90508481116105c05760405162461bcd60e51b815260206004820152602e60248201527f4552433230546f6b656e536f757263653a20696e73756666696369656e74206160448201526d191a9d5cdd195908185b5bdd5b9d60921b60648201526084016102f9565b84156105f1576105f17f00000000000000000000000000000000000000000000000000000000000000008387610f44565b60006105fd868361183d565b90506000836001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018c8152508152602001620186a08152602001898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516001600160a01b038f166020808301919091529181018890529101906060016040516020818303038152906040528152506040518263ffffffff1660e01b815260040161074391906118e4565b6020604051808303816000875af1158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190611962565b905080896001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf99856040516107ce91815260200190565b60405180910390a4505050506107e46001600355565b5050505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611962565b10156108ed5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016102f9565b6108f633610207565b1561095c5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016102f9565b61099d848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102992505050565b50505050565b6109ab610bc1565b6001600160a01b038116610a105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f9565b6104db81610c1b565b6104f0610bc1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611962565b60015490915081831115610b155760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016102f9565b808311610b8a5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016102f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610cbf5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102f9565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061197b565b9050610d6f816001600160a01b031660009081526020819052604090205460ff1690565b15610dd55760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016102f9565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611962565b9050610e5e6001600160a01b038516333086611224565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611962565b9050818111610f2f5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016102f9565b610f39828261183d565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb99190611962565b610fc39190611998565b6040516001600160a01b03851660248201526044810182905290915061099d90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261125c565b7f000000000000000000000000000000000000000000000000000000000000000083146110ac5760405162461bcd60e51b815260206004820152602b60248201527f4552433230546f6b656e536f757263653a20696e76616c69642064657374696e60448201526a30ba34b7b71031b430b4b760a91b60648201526084016102f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113b5760405162461bcd60e51b815260206004820152602560248201527f4552433230546f6b656e536f757263653a20756e617574686f72697a6564207360448201526432b73232b960d91b60648201526084016102f9565b6000808280602001905181019061115291906119c1565b9092509050600082600181111561116b5761116b611a88565b0361119c57600080828060200190518101906111879190611a9e565b915091506111958282611333565b50506107e4565b60018260018111156111b0576111b0611a88565b036111dc576000818060200190518101906111cb9190611962565b90506111d6816113cb565b506107e4565b60405162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e536f757263653a20696e76616c696420616374696f6e60448201526064016102f9565b6040516001600160a01b038085166024830152831660448201526064810182905261099d9085906323b872dd60e01b90608401610ff2565b60006112b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113f69092919063ffffffff16565b80519091501561132e57808060200190518101906112cf9190611acc565b61132e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102f9565b505050565b6001600160a01b0382166113595760405162461bcd60e51b81526004016102f9906117df565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb4078260405161139491815260200190565b60405180910390a26113c77f0000000000000000000000000000000000000000000000000000000000000000838361140d565b5050565b6004548111156104db576000600454826113e5919061183d565b90506113f08161143d565b50600455565b606061140584846000856114a4565b949350505050565b6040516001600160a01b03831660248201526044810182905261132e90849063a9059cbb60e01b90606401610ff2565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a16104db7f000000000000000000000000000000000000000000000000000000000000000062010203600160981b018361140d565b6060824710156115055760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102f9565b600080866001600160a01b031685876040516115219190611aee565b60006040518083038185875af1925050503d806000811461155e576040519150601f19603f3d011682016040523d82523d6000602084013e611563565b606091505b50915091506115748783838761157f565b979650505050505050565b606083156115ee5782516000036115e7576001600160a01b0385163b6115e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f9565b5081611405565b61140583838151156116035781518083602001fd5b8060405162461bcd60e51b81526004016102f99190611b0a565b6001600160a01b03811681146104db57600080fd5b60006020828403121561164457600080fd5b813561164f8161161d565b9392505050565b60006020828403121561166857600080fd5b5035919050565b60008060008060006080868803121561168757600080fd5b85356116928161161d565b94506020860135935060408601359250606086013567ffffffffffffffff808211156116bd57600080fd5b818801915088601f8301126116d157600080fd5b8135818111156116e057600080fd5b8960208260051b85010111156116f557600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561171e57600080fd5b8435935060208501356117308161161d565b9250604085013567ffffffffffffffff8082111561174d57600080fd5b818701915087601f83011261176157600080fd5b81358181111561177057600080fd5b88602082850101111561178257600080fd5b95989497505060200194505050565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526028908201527f4552433230546f6b656e536f757263653a207a65726f20726563697069656e74604082015267206164647265737360c01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f3e57610f3e611827565b600081518084526020808501945080840160005b838110156118895781516001600160a01b031687529582019590820190600101611864565b509495945050505050565b60005b838110156118af578181015183820152602001611897565b50506000910152565b600081518084526118d0816020860160208601611894565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611945610100840182611850565b905060a0840151601f198483030160e0850152610f3982826118b8565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815161164f8161161d565b80820180821115610f3e57610f3e611827565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156119d457600080fd5b8251600281106119e357600080fd5b602084015190925067ffffffffffffffff80821115611a0157600080fd5b818501915085601f830112611a1557600080fd5b815181811115611a2757611a276119ab565b604051601f8201601f19908116603f01168101908382118183101715611a4f57611a4f6119ab565b81604052828152886020848701011115611a6857600080fd5b611a79836020830160208801611894565b80955050505050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611ab157600080fd5b8251611abc8161161d565b6020939093015192949293505050565b600060208284031215611ade57600080fd5b8151801515811461164f57600080fd5b60008251611b00818460208701611894565b9190910192915050565b60208152600061164f60208301846118b856fea264697066735822122054a5c099de98832022ca2ac7273b2318aaca6e37f0fa69db0f427777ecdc4e3b64736f6c634300081200334552433230546f6b656e536f757263653a207a65726f2064657374696e617469", } // ERC20TokenSourceABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go index 5d13bc501..5be376a49 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenDestination/NativeTokenDestination.go @@ -38,7 +38,7 @@ type TeleporterFeeInfo struct { // NativeTokenDestinationMetaData contains all meta data concerning the NativeTokenDestination contract. var NativeTokenDestinationMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenSourceAddress_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialReserveImbalance_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"CollateralAdded\",\"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\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensMinted\",\"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\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnAddressBalance\",\"type\":\"uint256\"}],\"name\":\"ReportTotalBurnedTxFees\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToSource\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURNED_TX_FEES_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_FOR_TRANSFER_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPORT_BURNED_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinTeleporterVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialReserveImbalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCollateralized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"nativeTokenSourceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"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\":\"reportTotalBurnedTxFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"teleporterRegistry\",\"outputs\":[{\"internalType\":\"contractTeleporterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToSource\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea26469706673582212209c13d96c549d7ebe0196efff19170cfee5a17a9a4ebda7ad1fd9dd4511b4fa7d64736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", + Bin: "0x6101006040523480156200001257600080fd5b50604051620025b9380380620025b98339810160408190526200003591620003ff565b83806001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a919062000448565b60015550620001393362000390565b50600160035582620001975760405162461bcd60e51b81526020600482015260316024820152600080516020620025998339815191526044820152701c98d948189b1bd8dad8da185a5b881251607a1b6064820152608401620000b0565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000448565b8303620002865760405162461bcd60e51b815260206004820152603a60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a2063616e6e6f74206260448201527f726964676520776974682073616d6520626c6f636b636861696e0000000000006064820152608401620000b0565b60a08390526001600160a01b038216620002f85760405162461bcd60e51b815260206004820152603460248201526000805160206200259983398151915260448201527f72636520636f6e747261637420616464726573730000000000000000000000006064820152608401620000b0565b6001600160a01b03821660c05260008190036200037e5760405162461bcd60e51b815260206004820152603660248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20696e6960448201527f7469616c207265736572766520696d62616c616e6365000000000000000000006064820152608401620000b0565b60e08190526004555062000462915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b0381168114620003fa57600080fd5b919050565b600080600080608085870312156200041657600080fd5b6200042185620003e2565b9350602085015192506200043860408601620003e2565b6060959095015193969295505050565b6000602082840312156200045b57600080fd5b5051919050565b60805160a05160c05160e0516120b0620004e96000396000818161033a015261048c0152600081816102be0152818161063001528181610a7101526115eb0152600081816101eb0152818161060a01528181610a4b015261156701526000818161019f015281816108c601528181610c1c01528181610e440152610f5701526120b06000f3fe60806040526004361061014a5760003560e01c806375846562116100b6578063ab2852301161006f578063ab285230146103e6578063c452165e146103fd578063c868efaa14610415578063d2cc7a7014610435578063d3095126146103e6578063f2fde38b1461044a57600080fd5b806375846562146103155780638ac7dd20146103285780638da5cb5b1461035c578063973142971461037a578063a2309ff8146103b3578063a2a95017146103c957600080fd5b80633a94fe51116101085780633a94fe511461024a5780634511243e1461026a57806349e3284e1461028a5780635d93f9af146102ac5780635eb99514146102e0578063715018a61461030057600080fd5b8062d872ae1461014f57806318160ddd146101785780631a7f5bec1461018d57806329b7b3fd146101d95780632b0d8f181461020d578063329c3e121461022f575b600080fd5b34801561015b57600080fd5b5061016560045481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b5061016561046a565b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016f565b3480156101e557600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561021957600080fd5b5061022d610228366004611b5c565b6104cb565b005b34801561023b57600080fd5b506101c16001600160991b0181565b34801561025657600080fd5b5061022d610265366004611be4565b6105cd565b34801561027657600080fd5b5061022d610285366004611b5c565b610795565b34801561029657600080fd5b50600454155b604051901515815260200161016f565b3480156102b857600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec57600080fd5b5061022d6102fb366004611c38565b610892565b34801561030c57600080fd5b5061022d6108a6565b61022d610323366004611c51565b6108ba565b34801561033457600080fd5b506101657f000000000000000000000000000000000000000000000000000000000000000081565b34801561036857600080fd5b506002546001600160a01b03166101c1565b34801561038657600080fd5b5061029c610395366004611b5c565b6001600160a01b031660009081526020819052604090205460ff1690565b3480156103bf57600080fd5b5061016560055481565b3480156103d557600080fd5b506101c162010203600160981b0181565b3480156103f257600080fd5b50610165620186a081565b34801561040957600080fd5b506101c1600160981b81565b34801561042157600080fd5b5061022d610430366004611cb5565b610c0f565b34801561044157600080fd5b50600154610165565b34801561045657600080fd5b5061022d610465366004611b5c565b610dc1565b60008061048662010203600160981b0131600160981b31611d54565b905060007f00000000000000000000000000000000000000000000000000000000000000006005546104b89190611d54565b90506104c48282611d67565b9250505090565b6104d3610e37565b6001600160a01b0381166105025760405162461bcd60e51b81526004016104f990611d7a565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156105815760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b60648201526084016104f9565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b60006105d7610e3f565b90506000600160981b6001600160a01b03163190506000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018980360381019061066e9190611dc8565b8152602001620186a08152602001888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020808201899052825180830382018152828401909352909201916106e091600191606001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611ef9565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611f77565b9050807f4c37b521cdeedd09975d7697ea18c95dc3c46dea1ca09dfcdd2e17f1061915098360405161078591815260200190565b60405180910390a2505050505050565b61079d610e37565b6001600160a01b0381166107c35760405162461bcd60e51b81526004016104f990611d7a565b6001600160a01b03811660009081526020819052604090205460ff1661083d5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b60648201526084016104f9565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b61089a610e37565b6108a381610f53565b50565b6108ae6110f3565b6108b8600061114d565b565b6108c261119f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611f90565b90506001600160a01b03851661096e5760405162461bcd60e51b81526004016104f990611fad565b600454156109db5760405162461bcd60e51b815260206004820152603460248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20636f6e7472616374604482015273081d5b99195c98dbdb1b185d195c985b1a5e995960621b60648201526084016104f9565b6000602085013515610a1a57610a016109f76020870187611b5c565b86602001356111f8565b9050610a1a610a136020870187611b5c565b8383611362565b610a2d62010203600160981b0134611447565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200189803603810190610aaf9190611dc8565b8152602001620186a0815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604051602093840193610b1d92508e913491016001600160a01b03929092168252602082015260400190565b60408051601f1981840301815290829052610b3b9291602001611e7e565b6040516020818303038152906040528152506040518263ffffffff1660e01b8152600401610b699190611ef9565b6020604051808303816000875af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190611f77565b905080876001600160a01b0316336001600160a01b03167f8adc7b22fb27c91bbad9f38633adae809888623a9aee14c1adec44ee7e7cf2c034604051610bf491815260200190565b60405180910390a4505050610c096001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611f77565b1015610d115760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b60648201526084016104f9565b610d1a33610395565b15610d805760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b60648201526084016104f9565b610c09848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156592505050565b610dc96110f3565b6001600160a01b038116610e2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f9565b6108a38161114d565b6108b86110f3565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611f90565b9050610ee8816001600160a01b031660009081526020819052604090205460ff1690565b15610f4e5760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b60648201526084016104f9565b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611f77565b600154909150818311156110475760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b60648201526084016104f9565b8083116110bc5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e0060648201526084016104f9565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f9565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6002600354036111f15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104f9565b6002600355565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112659190611f77565b905061127c6001600160a01b0385163330866118ad565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e79190611f77565b905081811161134d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104f9565b6113578282611d67565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156113b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d79190611f77565b6113e19190611d54565b6040516001600160a01b038516602482015260448101829052909150610c0990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e5565b804710156114975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016104f9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114e4576040519150601f19603f3d011682016040523d82523d6000602084013e6114e9565b606091505b50509050806115605760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016104f9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000083146115e95760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20696e76616c69642060448201526b39b7bab931b29031b430b4b760a11b60648201526084016104f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461167e5760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a20756e617574686f7260448201526a34bd32b21039b2b73232b960a91b60648201526084016104f9565b600080828060200190518101906116959190611ffb565b90925090506001600160a01b0382166116c05760405162461bcd60e51b81526004016104f990611fad565b806000036117245760405162461bcd60e51b815260206004820152602b60248201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2074726160448201526a6e736665722076616c756560a81b60648201526084016104f9565b6004548190156117e95760045482111561178d5760045460408051918252600060208301527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a16004546117819083611d67565b600060045590506117e9565b816004600082825461179f9190611d67565b90915550506004546040805184815260208101929092527f244160b15e69cc411f041d94ae7fab6f6bba85dade8403216c05ff4b920d5449910160405180910390a1505050505050565b80600560008282546117fb9190611d54565b90915550506040518181526001600160a01b038416907fd949ea0e9d5db53492d77f28fd5467fb2f6c4f5b88e3350e3c36729b76e99cf29060200160405180910390a26040516327ad555d60e11b81526001600160a01b0384166004820152602481018290526001600160991b0190634f5aaaba90604401600060405180830381600087803b15801561188d57600080fd5b505af11580156118a1573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c099085906323b872dd60e01b90608401611410565b600061193a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119b79092919063ffffffff16565b80519091501561156057808060200190518101906119589190612029565b6115605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104f9565b60606119c684846000856119ce565b949350505050565b606082471015611a2f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104f9565b600080866001600160a01b03168587604051611a4b919061204b565b60006040518083038185875af1925050503d8060008114611a88576040519150601f19603f3d011682016040523d82523d6000602084013e611a8d565b606091505b5091509150611a9e87838387611aa9565b979650505050505050565b60608315611b18578251600003611b11576001600160a01b0385163b611b115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104f9565b50816119c6565b6119c68383815115611b2d5781518083602001fd5b8060405162461bcd60e51b81526004016104f99190612067565b6001600160a01b03811681146108a357600080fd5b600060208284031215611b6e57600080fd5b8135611b7981611b47565b9392505050565b600060408284031215611b9257600080fd5b50919050565b60008083601f840112611baa57600080fd5b50813567ffffffffffffffff811115611bc257600080fd5b6020830191508360208260051b8501011115611bdd57600080fd5b9250929050565b600080600060608486031215611bf957600080fd5b611c038585611b80565b9250604084013567ffffffffffffffff811115611c1f57600080fd5b611c2b86828701611b98565b9497909650939450505050565b600060208284031215611c4a57600080fd5b5035919050565b60008060008060808587031215611c6757600080fd5b8435611c7281611b47565b9350611c818660208701611b80565b9250606085013567ffffffffffffffff811115611c9d57600080fd5b611ca987828801611b98565b95989497509550505050565b60008060008060608587031215611ccb57600080fd5b843593506020850135611cdd81611b47565b9250604085013567ffffffffffffffff80821115611cfa57600080fd5b818701915087601f830112611d0e57600080fd5b813581811115611d1d57600080fd5b886020828501011115611d2f57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135c5761135c611d3e565b8181038181111561135c5761135c611d3e565b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b600060408284031215611dda57600080fd5b6040516040810181811067ffffffffffffffff82111715611e0b57634e487b7160e01b600052604160045260246000fd5b6040528235611e1981611b47565b81526020928301359281019290925250919050565b60005b83811015611e49578181015183820152602001611e31565b50506000910152565b60008151808452611e6a816020860160208601611e2e565b601f01601f19169290920160200192915050565b600060028410611e9e57634e487b7160e01b600052602160045260246000fd5b838252604060208301526119c66040830184611e52565b600081518084526020808501945080840160005b83811015611eee5781516001600160a01b031687529582019590820190600101611ec9565b509495945050505050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611f5a610100840182611eb5565b905060a0840151601f198483030160e08501526113578282611e52565b600060208284031215611f8957600080fd5b5051919050565b600060208284031215611fa257600080fd5b8151611b7981611b47565b6020808252602e908201527f4e6174697665546f6b656e44657374696e6174696f6e3a207a65726f2072656360408201526d697069656e74206164647265737360901b606082015260800190565b6000806040838503121561200e57600080fd5b825161201981611b47565b6020939093015192949293505050565b60006020828403121561203b57600080fd5b81518015158114611b7957600080fd5b6000825161205d818460208701611e2e565b9190910192915050565b602081526000611b796020830184611e5256fea26469706673582212202e5cba7e4c50b8d9f3c6234cebcb82b6ce488d2b738b7b056ca4b9cd0256583b64736f6c634300081200334e6174697665546f6b656e44657374696e6174696f6e3a207a65726f20736f75", } // NativeTokenDestinationABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go index f373949bf..0bd302e5c 100644 --- a/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go +++ b/abi-bindings/go/CrossChainApplications/examples/NativeTokenBridge/NativeTokenSource/NativeTokenSource.go @@ -38,7 +38,7 @@ type TeleporterFeeInfo struct { // NativeTokenSourceMetaData contains all meta data concerning the NativeTokenSource contract. var NativeTokenSourceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"teleporterRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nativeTokenDestinationAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BurnTokens\",\"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\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teleporterAddress\",\"type\":\"address\"}],\"name\":\"TeleporterAddressUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"teleporterMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferToDestination\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINT_NATIVE_TOKENS_REQUIRED_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationBurnedTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"nativeTokenDestinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"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\":\"recipient\",\"type\":\"address\"},{\"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\":\"transferToDestination\",\"outputs\":[],\"stateMutability\":\"payable\",\"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: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea2646970667358221220e80e726270e4104a650b17536b61559d89ad6153eb51c1c5ca2f1d7eebb76cd464736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", + Bin: "0x60e06040523480156200001157600080fd5b50604051620020f2380380620020f283398101604081905262000034916200037b565b82806001600160a01b038116620000b85760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620003bc565b6001555062000138336200030c565b50600160035581620001965760405162461bcd60e51b81526020600482015260316024820152600080516020620020d28339815191526044820152701a5bdb88189b1bd8dad8da185a5b881251607a1b6064820152608401620000af565b7302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620003bc565b8203620002855760405162461bcd60e51b815260206004820152603560248201527f4e6174697665546f6b656e536f757263653a2063616e6e6f742062726964676560448201527f20776974682073616d6520626c6f636b636861696e00000000000000000000006064820152608401620000af565b60a08290526001600160a01b038116620002f75760405162461bcd60e51b81526020600482015260346024820152600080516020620020d283398151915260448201527f696f6e20636f6e747261637420616464726573730000000000000000000000006064820152608401620000af565b6001600160a01b031660c05250620003d69050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200037657600080fd5b919050565b6000806000606084860312156200039157600080fd5b6200039c846200035e565b925060208401519150620003b3604085016200035e565b90509250925092565b600060208284031215620003cf57600080fd5b5051919050565b60805160a05160c051611c9b62000437600039600081816102bb01528181610633015261107201526000818161017d0152818161060d0152610fee01526000818161010a015281816107c1015281816109e80152610c8e0152611c9b6000f3fe6080604052600436106100f35760003560e01c8063973142971161008a578063c868efaa11610059578063c868efaa146102dd578063d2cc7a70146102fd578063f2fde38b14610312578063fccc28131461033257600080fd5b80639731429714610236578063ad0aee251461027f578063b6171f7314610292578063b8c9091a146102a957600080fd5b806355db3e9e116100c657806355db3e9e146101cd5780635eb99514146101e3578063715018a6146102035780638da5cb5b1461021857600080fd5b80631a7f5bec146100f85780632b0d8f181461014957806341d3014d1461016b5780634511243e146101ad575b600080fd5b34801561010457600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015557600080fd5b50610169610164366004611712565b61034f565b005b34801561017757600080fd5b5061019f7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610140565b3480156101b957600080fd5b506101696101c8366004611712565b610451565b3480156101d957600080fd5b5061019f60045481565b3480156101ef57600080fd5b506101696101fe366004611736565b61054e565b34801561020f57600080fd5b50610169610562565b34801561022457600080fd5b506002546001600160a01b031661012c565b34801561024257600080fd5b5061026f610251366004611712565b6001600160a01b031660009081526020819052604090205460ff1690565b6040519015158152602001610140565b61016961028d36600461174f565b610576565b34801561029e57600080fd5b5061019f620186a081565b3480156102b557600080fd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e957600080fd5b506101696102f83660046117ee565b6107b4565b34801561030957600080fd5b5060015461019f565b34801561031e57600080fd5b5061016961032d366004611712565b610966565b34801561033e57600080fd5b5061012c62010203600160981b0181565b6103576109dc565b6001600160a01b0381166103865760405162461bcd60e51b815260040161037d90611868565b60405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff16156104055760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b606482015260840161037d565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6104596109dc565b6001600160a01b03811661047f5760405162461bcd60e51b815260040161037d90611868565b6001600160a01b03811660009081526020819052604090205460ff166104f95760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b606482015260840161037d565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152602081905260409020805460ff19169055565b6105566109dc565b61055f816109e4565b50565b61056a610b84565b6105746000610bde565b565b61057e610c30565b6000610588610c89565b90506001600160a01b0385166105b05760405162461bcd60e51b815260040161037d906118b6565b60006020850135156105ef576105d66105cc6020870187611712565b8660200135610d9d565b90506105ef6105e86020870187611712565b8383610f07565b6000826001600160a01b031663624488506040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001898036038101906106719190611946565b8152602001620186a081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040516020918201916106e0918d913491016001600160a01b03929092168252602082015260400190565b6040516020818303038152906040528152506040518263ffffffff1660e01b815260040161070e9190611a32565b6020604051808303816000875af115801561072d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107519190611ab0565b905080876001600160a01b0316336001600160a01b03167f6cf14fdf618c440df3de7de7dcacf59541a464e55f360cbe73724c12e0c4cf993460405161079991815260200190565b60405180910390a45050506107ae6001600355565b50505050565b6001546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190611ab0565b10156108b65760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b606482015260840161037d565b6108bf33610251565b156109255760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b606482015260840161037d565b6107ae848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fec92505050565b61096e610b84565b6001600160a01b0381166109d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037d565b61055f81610bde565b610574610b84565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611ab0565b60015490915081831115610ad85760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b606482015260840161037d565b808311610b4d5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e00606482015260840161037d565b6001839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6002546001600160a01b031633146105745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037d565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260035403610c825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037d565b6002600355565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611ac9565b9050610d32816001600160a01b031660009081526020819052604090205460ff1690565b15610d985760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b606482015260840161037d565b919050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190611ab0565b9050610e216001600160a01b0385163330866111fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611ab0565b9050818111610ef25760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161037d565b610efc8282611afc565b925050505b92915050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c9190611ab0565b610f869190611b0f565b6040516001600160a01b0385166024820152604481018290529091506107ae90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611232565b7f000000000000000000000000000000000000000000000000000000000000000083146110705760405162461bcd60e51b815260206004820152602c60248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420646573746960448201526b3730ba34b7b71031b430b4b760a11b606482015260840161037d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146111005760405162461bcd60e51b815260206004820152602660248201527f4e6174697665546f6b656e536f757263653a20756e617574686f72697a65642060448201526539b2b73232b960d11b606482015260840161037d565b600080828060200190518101906111179190611b22565b9092509050600082600181111561113057611130611bd0565b03611161576000808280602001905181019061114c9190611be6565b9150915061115a8282611309565b50506111f3565b600182600181111561117557611175611bd0565b036111a1576000818060200190518101906111909190611ab0565b905061119b816113e3565b506111f3565b60405162461bcd60e51b815260206004820152602160248201527f4e6174697665546f6b656e536f757263653a20696e76616c696420616374696f6044820152603760f91b606482015260840161037d565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107ae9085906323b872dd60e01b90608401610fb5565b6000611287826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661140e9092919063ffffffff16565b80519091501561130457808060200190518101906112a59190611c14565b6113045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037d565b505050565b6001600160a01b03821661132f5760405162461bcd60e51b815260040161037d906118b6565b804710156113925760405162461bcd60e51b815260206004820152602a60248201527f4e6174697665546f6b656e536f757263653a20696e73756666696369656e742060448201526918dbdb1b185d195c985b60b21b606482015260840161037d565b816001600160a01b03167f55aaef8fd8c07238c3618a93c8a1627194187d3b0952908e58f2ab0f944fb407826040516113cd91815260200190565b60405180910390a26113df8282611425565b5050565b60045481111561055f576000600454826113fd9190611afc565b90506114088161153e565b50600455565b606061141d8484600085611584565b949350505050565b804710156114755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146114c2576040519150601f19603f3d011682016040523d82523d6000602084013e6114c7565b606091505b50509050806113045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037d565b6040518181527f2cd3fd70cd5a5d6d805e90d22741aa1a84590ace7cf01b244719558d266143829060200160405180910390a161055f62010203600160981b0182611425565b6060824710156115e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037d565b600080866001600160a01b031685876040516116019190611c36565b60006040518083038185875af1925050503d806000811461163e576040519150601f19603f3d011682016040523d82523d6000602084013e611643565b606091505b50915091506116548783838761165f565b979650505050505050565b606083156116ce5782516000036116c7576001600160a01b0385163b6116c75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037d565b508161141d565b61141d83838151156116e35781518083602001fd5b8060405162461bcd60e51b815260040161037d9190611c52565b6001600160a01b038116811461055f57600080fd5b60006020828403121561172457600080fd5b813561172f816116fd565b9392505050565b60006020828403121561174857600080fd5b5035919050565b600080600080848603608081121561176657600080fd5b8535611771816116fd565b94506040601f198201121561178557600080fd5b50602085019250606085013567ffffffffffffffff808211156117a757600080fd5b818701915087601f8301126117bb57600080fd5b8135818111156117ca57600080fd5b8860208260051b85010111156117df57600080fd5b95989497505060200194505050565b6000806000806060858703121561180457600080fd5b843593506020850135611816816116fd565b9250604085013567ffffffffffffffff8082111561183357600080fd5b818701915087601f83011261184757600080fd5b81358181111561185657600080fd5b8860208285010111156117df57600080fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b60208082526029908201527f4e6174697665546f6b656e536f757263653a207a65726f20726563697069656e60408201526874206164647265737360b81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561193e5761193e6118ff565b604052919050565b60006040828403121561195857600080fd5b6040516040810181811067ffffffffffffffff8211171561197b5761197b6118ff565b6040528235611989816116fd565b81526020928301359281019290925250919050565b600081518084526020808501945080840160005b838110156119d75781516001600160a01b0316875295820195908201906001016119b2565b509495945050505050565b60005b838110156119fd5781810151838201526020016119e5565b50506000910152565b60008151808452611a1e8160208601602086016119e2565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b03808216604085015260408501519150808251166060850152506020810151608084015250606083015160a0830152608083015160e060c0840152611a9361010084018261199e565b905060a0840151601f198483030160e0850152610efc8282611a06565b600060208284031215611ac257600080fd5b5051919050565b600060208284031215611adb57600080fd5b815161172f816116fd565b634e487b7160e01b600052601160045260246000fd5b81810381811115610f0157610f01611ae6565b80820180821115610f0157610f01611ae6565b60008060408385031215611b3557600080fd5b825160028110611b4457600080fd5b602084015190925067ffffffffffffffff80821115611b6257600080fd5b818501915085601f830112611b7657600080fd5b815181811115611b8857611b886118ff565b611b9b601f8201601f1916602001611915565b9150808252866020828501011115611bb257600080fd5b611bc38160208401602086016119e2565b5080925050509250929050565b634e487b7160e01b600052602160045260246000fd5b60008060408385031215611bf957600080fd5b8251611c04816116fd565b6020939093015192949293505050565b600060208284031215611c2657600080fd5b8151801515811461172f57600080fd5b60008251611c488184602087016119e2565b9190910192915050565b60208152600061172f6020830184611a0656fea2646970667358221220e2a6e36a2e97c7d4187860b3f4a726c2a5a6f0dfc8ba9a459c156f9cd7e7adb464736f6c634300081200334e6174697665546f6b656e536f757263653a207a65726f2064657374696e6174", } // NativeTokenSourceABI is the input ABI used to generate the binding from. From d0e64dda9021436e8ce6f574e91b09b1f67d492c Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 20:14:00 +0000 Subject: [PATCH 07/12] rename vars in readmes --- .../CrossChainApplications/GETTING_STARTED.md | 22 +++++++++---------- contracts/src/Teleporter/upgrades/README.md | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/contracts/src/CrossChainApplications/GETTING_STARTED.md b/contracts/src/CrossChainApplications/GETTING_STARTED.md index b3e541966..3d46e94a9 100644 --- a/contracts/src/CrossChainApplications/GETTING_STARTED.md +++ b/contracts/src/CrossChainApplications/GETTING_STARTED.md @@ -57,7 +57,7 @@ event SendMessage( * @dev Emitted when a new message is received from a given chain ID. */ event ReceiveMessage( - bytes32 indexed originBlockchainID, + bytes32 indexed sourceBlockchainID, address indexed originSenderAddress, string message ); @@ -106,7 +106,7 @@ function sendMessage( ```solidity // Receive a new message from another chain. function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external {} @@ -195,7 +195,7 @@ With the sending side complete, the next step is to implement `ITeleporterReceiv ```solidity // Receive a new message from another chain. function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external { @@ -210,10 +210,10 @@ The base of sending and receiving messages cross chain is complete. `MyExampleCr ## Step 4: Storing the Message -Start by adding a map where the key is the `originBlockchainID`, and the value is the latest `message` sent from that chain. The `message` is of type `Message`, which is already declared in the contract. +Start by adding a map where the key is the `sourceBlockchainID`, and the value is the latest `message` sent from that chain. The `message` is of type `Message`, which is already declared in the contract. ```solidity -mapping(bytes32 originBlockchainID => Message message) private _messages; +mapping(bytes32 sourceBlockchainID => Message message) private _messages; ``` Next, update `receiveTeleporterMessage` to save the message into the mapping after it is received and verified that it's sent from Teleporter. ABI decode the `message` bytes into a string. Also, emit the `ReceiveMessage` event. @@ -223,7 +223,7 @@ Next, update `receiveTeleporterMessage` to save the message into the mapping aft ```solidity // Receive a new message from another chain. function receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes calldata message ) external { @@ -232,12 +232,12 @@ function receiveTeleporterMessage( // Store the message. string memory messageString = abi.decode(message, (string)); - _messages[originBlockchainID] = Message( + _messages[sourceBlockchainID] = Message( originSenderAddress, messageString ); emit ReceiveMessage( - originBlockchainID, + sourceBlockchainID, originSenderAddress, messageString ); @@ -249,9 +249,9 @@ Next, add a function called `getCurrentMessage` that allows users or contracts t ```solidity // Check the current message from another chain. function getCurrentMessage( - bytes32 originBlockchainID + bytes32 sourceBlockchainID ) external view returns (address, string memory) { - Message memory messageInfo = messages[originBlockchainID]; + Message memory messageInfo = messages[sourceBlockchainID]; return (messageInfo.sender, messageInfo.message); } ``` @@ -301,7 +301,7 @@ And finally, change `receiveTeleporterMessage` to `_receiveTeleporterMessage`, a ```diff - function receiveTeleporterMessage( + function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message - external { diff --git a/contracts/src/Teleporter/upgrades/README.md b/contracts/src/Teleporter/upgrades/README.md index f4fb31f73..02e99d6fd 100644 --- a/contracts/src/Teleporter/upgrades/README.md +++ b/contracts/src/Teleporter/upgrades/README.md @@ -52,7 +52,7 @@ contract ExampleApp is // Handles receiving Teleporter messages, // and also checks that the sender is a valid Teleporter contract. function _receiveTeleporterMessage( - bytes32 originBlockchainID, + bytes32 sourceBlockchainID, address originSenderAddress, bytes memory message ) internal override { From 1c0773a4666f11d4a454e5f46b4d7dde14755fa4 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 20:14:14 +0000 Subject: [PATCH 08/12] rename DEFAULT_SOURCE_BLOCKCHAIN_ID --- .../tests/FallbackReceiveTests.t.sol | 14 ++++---- .../tests/GetRelayerRewardAddressTests.t.sol | 10 +++--- .../HandleInitialMessageExecutionTests.t.sol | 26 +++++++------- .../tests/InitializeBlockchainIDTests.t.sol | 4 +-- .../Teleporter/tests/MarkReceiptTests.t.sol | 22 ++++++------ .../tests/ReceiveCrossChainMessageTests.t.sol | 28 +++++++-------- .../tests/RedeemRelayerRewardsTests.t.sol | 6 ++-- .../tests/RetryMessageExecutionTests.t.sol | 10 +++--- .../tests/SendSpecifiedReceiptsTests.t.sol | 34 +++++++++---------- .../tests/TeleporterMessengerTest.t.sol | 10 +++--- .../tests/PauseTeleporterAddressTests.t.sol | 14 ++++---- .../TeleporterOwnerUpgradeableTests.t.sol | 4 +-- .../tests/TeleporterUpgradeableTests.t.sol | 12 +++---- .../tests/UnpauseTeleporterAddressTests.t.sol | 16 ++++----- .../UpdateMinTeleporterVersionTests.t.sol | 12 +++---- 15 files changed, 111 insertions(+), 111 deletions(-) diff --git a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol index f27ae5dd0..8b9b92091 100644 --- a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol @@ -65,7 +65,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { function setUp() public virtual override { TeleporterMessengerTest.setUp(); destinationContract = new FallbackReceiveApp( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, address(this) ); } @@ -85,12 +85,12 @@ contract FallbackReceiveTest is TeleporterMessengerTest { message: abi.encode(FallbackReceiveAction.Succeed) }); bytes32 receivedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -105,7 +105,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecuted(receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); + emit MessageExecuted(receivedMessageID, DEFAULT_SOURCE_BLOCKCHAIN_ID); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the nonce was incremented. @@ -127,12 +127,12 @@ contract FallbackReceiveTest is TeleporterMessengerTest { message: abi.encode(FallbackReceiveAction.Fail) }); bytes32 receivedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -148,7 +148,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit MessageExecutionFailed( - receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive + receivedMessageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive ); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); diff --git a/contracts/src/Teleporter/tests/GetRelayerRewardAddressTests.t.sol b/contracts/src/Teleporter/tests/GetRelayerRewardAddressTests.t.sol index 3621c27e6..f3ca8d4e5 100644 --- a/contracts/src/Teleporter/tests/GetRelayerRewardAddressTests.t.sol +++ b/contracts/src/Teleporter/tests/GetRelayerRewardAddressTests.t.sol @@ -19,11 +19,11 @@ contract GetRelayerRewardAddressTest is TeleporterMessengerTest { // Receive a message uint256 mockNonce = 8; bytes32 mockMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, mockNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, mockNonce ); address relayerRewardAddress = 0xCAFebAbeDc0D4D7B7EEdCf61eb863fF413BB6234; _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, mockNonce, relayerRewardAddress, new TeleporterMessageReceipt[](0) @@ -37,10 +37,10 @@ contract GetRelayerRewardAddressTest is TeleporterMessengerTest { // Receive a message with a zero relayer reward address uint256 mockNonce = 4343; bytes32 mockMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, mockNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, mockNonce ); _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, mockNonce, address(0), new TeleporterMessageReceipt[](0) + DEFAULT_SOURCE_BLOCKCHAIN_ID, mockNonce, address(0), new TeleporterMessageReceipt[](0) ); // Check that the zero address is returned as the reward address. @@ -50,7 +50,7 @@ contract GetRelayerRewardAddressTest is TeleporterMessengerTest { function testMessageNotReceived() public { // Before receiving the given message, getRelayerRewardAddress should revert. bytes32 mockMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 4242 + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 4242 ); vm.expectRevert(_formatTeleporterErrorMessage("message not received")); teleporterMessenger.getRelayerRewardAddress(mockMessageID); diff --git a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol index 9f3a433a2..239be288c 100644 --- a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol @@ -105,14 +105,14 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { message: abi.encode(SampleMessageReceiverAction.Receive, abi.encode(messageString, true)) }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); // Receive the message and check that message execution was successful. bytes32 expectedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); @@ -125,12 +125,12 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecuted(expectedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); + emit MessageExecuted(expectedMessageID, DEFAULT_SOURCE_BLOCKCHAIN_ID); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message had the proper affect on the destination contract. assertEq(destinationContract.latestMessage(), messageString); - assertEq(destinationContract.latestMessageSenderSubnetID(), DEFAULT_ORIGIN_BLOCKCHAIN_ID); + assertEq(destinationContract.latestMessageSenderSubnetID(), DEFAULT_SOURCE_BLOCKCHAIN_ID); assertEq(destinationContract.latestMessageSenderAddress(), address(this)); assertEq( teleporterMessenger.getRelayerRewardAddress(expectedMessageID), @@ -154,7 +154,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { message: abi.encode(SampleMessageReceiverAction.Receive, abi.encode(messageString, true)) }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -178,9 +178,9 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { message: abi.encode(SampleMessageReceiverAction.ReceiveRecursive, abi.encode(messageString)) }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); bytes32 messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); @@ -200,7 +200,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + emit MessageExecutionFailed(messageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message hash was stored in state and the message did not have any affect on the destination. @@ -211,7 +211,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { teleporterMessenger.getRelayerRewardAddress(messageID), DEFAULT_RELAYER_REWARD_ADDRESS ); vm.expectRevert(_formatTeleporterErrorMessage("retry execution failed")); - teleporterMessenger.retryMessageExecution(DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + teleporterMessenger.retryMessageExecution(DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); } function testStoreHashOfFailedMessageExecution() public { @@ -228,9 +228,9 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { message: abi.encode(SampleMessageReceiverAction.Receive, abi.encode(messageString, false)) }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); bytes32 messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); @@ -248,7 +248,7 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + emit MessageExecutionFailed(messageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message hash was stored in state and the message did not have any affect on the destination. @@ -259,6 +259,6 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { teleporterMessenger.getRelayerRewardAddress(messageID), DEFAULT_RELAYER_REWARD_ADDRESS ); vm.expectRevert(_formatTeleporterErrorMessage("retry execution failed")); - teleporterMessenger.retryMessageExecution(DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + teleporterMessenger.retryMessageExecution(DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); } } diff --git a/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol b/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol index 163617834..1ee2ac6ac 100644 --- a/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol +++ b/contracts/src/Teleporter/tests/InitializeBlockchainIDTests.t.sol @@ -22,7 +22,7 @@ import { contract InitializeBlockchainIDTest is Test { TeleporterMessenger public teleporterMessenger; address public constant WARP_PRECOMPILE_ADDRESS = 0x0200000000000000000000000000000000000005; - bytes32 public constant DEFAULT_ORIGIN_BLOCKCHAIN_ID = + bytes32 public constant DEFAULT_SOURCE_BLOCKCHAIN_ID = bytes32(hex"abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"); bytes32 public constant DEFAULT_DESTINATION_BLOCKCHAIN_ID = bytes32(hex"1234567812345678123456781234567812345678123456781234567812345678"); @@ -88,7 +88,7 @@ contract InitializeBlockchainIDTest is Test { message: new bytes(0) }); WarpMessage memory warpMessage = WarpMessage({ - sourceChainID: DEFAULT_ORIGIN_BLOCKCHAIN_ID, + sourceChainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, originSenderAddress: address(teleporterMessenger), payload: abi.encode(teleporterMessage) }); diff --git a/contracts/src/Teleporter/tests/MarkReceiptTests.t.sol b/contracts/src/Teleporter/tests/MarkReceiptTests.t.sol index 6ea5417f7..14e442e57 100644 --- a/contracts/src/Teleporter/tests/MarkReceiptTests.t.sol +++ b/contracts/src/Teleporter/tests/MarkReceiptTests.t.sol @@ -42,7 +42,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { for (uint256 i; i < feeRewardInfos.length; ++i) { messageNonces[i] = _getNextMessageNonce(); messageIDs[i] = - _sendTestMessageWithFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID, feeRewardInfos[i].feeAmount); + _sendTestMessageWithFee(DEFAULT_SOURCE_BLOCKCHAIN_ID, feeRewardInfos[i].feeAmount); } // Mock receiving a message with the 3 receipts from the mock messages sent above. @@ -60,7 +60,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { _createMockTeleporterMessage(receivedMessageNonce, new bytes(0)); messageToReceive.receipts = receipts; WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -71,7 +71,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiptReceived( messageIDs[i], - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, feeRewardInfos[i].relayerRewardAddress, TeleporterFeeInfo({ feeTokenAddress: address(_mockFeeAsset), @@ -93,7 +93,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { // Check that the message received is considered delivered, and that the relayer reward address is stored. bytes32 expectedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce ); assertEq( teleporterMessenger.getRelayerRewardAddress(expectedMessageID), @@ -110,7 +110,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { function testReceiptForNoFeeMessage() public { // Submit a a mock message with no fee. uint256 sentMessageNonce = _getNextMessageNonce(); - bytes32 sentMessageID = _sendTestMessageWithNoFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID); + bytes32 sentMessageID = _sendTestMessageWithNoFee(DEFAULT_SOURCE_BLOCKCHAIN_ID); // Mock receiving a message with the a receipts of the mock message sent above. TeleporterMessageReceipt[] memory receipts = new TeleporterMessageReceipt[](1); @@ -120,13 +120,13 @@ contract MarkReceiptTest is TeleporterMessengerTest { }); uint256 receivedMessageNonce = 42; bytes32 receivedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce ); TeleporterMessage memory messageToReceive = _createMockTeleporterMessage(receivedMessageNonce, new bytes(0)); messageToReceive.receipts = receipts; WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); // Receive the mock message. @@ -135,7 +135,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiptReceived( sentMessageID, - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_RELAYER_REWARD_ADDRESS, TeleporterFeeInfo({feeTokenAddress: address(0), amount: 0}) ); @@ -154,7 +154,7 @@ contract MarkReceiptTest is TeleporterMessengerTest { FeeRewardInfo memory feeRewardInfo = FeeRewardInfo(1111111111111111, 0x52A258ED593C793251a89bfd36caE158EE9fC4F8); uint256 sentMessageNonce = _getNextMessageNonce(); - _sendTestMessageWithFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID, feeRewardInfo.feeAmount); + _sendTestMessageWithFee(DEFAULT_SOURCE_BLOCKCHAIN_ID, feeRewardInfo.feeAmount); // Mock receiving a message with the 2 receipts for the same mock message above. TeleporterMessageReceipt[] memory receipts = new TeleporterMessageReceipt[](2); @@ -166,13 +166,13 @@ contract MarkReceiptTest is TeleporterMessengerTest { receipts[1] = receipt; uint256 receivedMessageNonce = 12; bytes32 receivedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce ); TeleporterMessage memory messageToReceive = _createMockTeleporterMessage(receivedMessageNonce, new bytes(0)); messageToReceive.receipts = receipts; WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); diff --git a/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol b/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol index 609116fbb..1032e846f 100644 --- a/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol +++ b/contracts/src/Teleporter/tests/ReceiveCrossChainMessageTests.t.sol @@ -46,9 +46,9 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { message: DEFAULT_MESSAGE_PAYLOAD }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); bytes32 messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); @@ -57,7 +57,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); // Check receipt queue size - assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_ORIGIN_BLOCKCHAIN_ID), 0); + assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_SOURCE_BLOCKCHAIN_ID), 0); // Receive the message. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); @@ -71,23 +71,23 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check receipt queue size - assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_ORIGIN_BLOCKCHAIN_ID), 1); + assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_SOURCE_BLOCKCHAIN_ID), 1); // Check receipt queue contents TeleporterMessageReceipt memory receipt = - teleporterMessenger.getReceiptAtIndex(DEFAULT_ORIGIN_BLOCKCHAIN_ID, 0); + teleporterMessenger.getReceiptAtIndex(DEFAULT_SOURCE_BLOCKCHAIN_ID, 0); assertEq(receipt.receivedMessageNonce, messageToReceive.messageNonce); assertEq(receipt.relayerRewardAddress, DEFAULT_RELAYER_REWARD_ADDRESS); // Receive at a different index messageToReceive.messageNonce = 654; messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); _setUpSuccessGetVerifiedWarpMessageMock(3, warpMessage); // Receive the message. @@ -102,10 +102,10 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { teleporterMessenger.receiveCrossChainMessage(3, DEFAULT_RELAYER_REWARD_ADDRESS); // Check receipt queue size - assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_ORIGIN_BLOCKCHAIN_ID), 2); + assertEq(teleporterMessenger.getReceiptQueueSize(DEFAULT_SOURCE_BLOCKCHAIN_ID), 2); // Check receipt queue contents - receipt = teleporterMessenger.getReceiptAtIndex(DEFAULT_ORIGIN_BLOCKCHAIN_ID, 1); + receipt = teleporterMessenger.getReceiptAtIndex(DEFAULT_SOURCE_BLOCKCHAIN_ID, 1); assertEq(receipt.receivedMessageNonce, messageToReceive.messageNonce); assertEq(receipt.relayerRewardAddress, DEFAULT_RELAYER_REWARD_ADDRESS); } @@ -145,7 +145,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { TeleporterMessage memory messageToReceive = _createMockTeleporterMessage(1, new bytes(0)); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); address invalidSenderAddress = 0xb73aD7e0FF026a805D1f1186EAB89E41bf01835D; warpMessage.originSenderAddress = invalidSenderAddress; @@ -164,7 +164,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { messageToReceive.destinationBlockchainID = invalidDestinationBlockchainID; WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -186,7 +186,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { message: DEFAULT_MESSAGE_PAYLOAD }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -249,7 +249,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { message: DEFAULT_MESSAGE_PAYLOAD }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); @@ -261,7 +261,7 @@ contract ReceiveCrossChainMessagedTest is TeleporterMessengerTest { function testZeroRelayerAddress() public { _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, 12, address(0), new TeleporterMessageReceipt[](0) + DEFAULT_SOURCE_BLOCKCHAIN_ID, 12, address(0), new TeleporterMessageReceipt[](0) ); } diff --git a/contracts/src/Teleporter/tests/RedeemRelayerRewardsTests.t.sol b/contracts/src/Teleporter/tests/RedeemRelayerRewardsTests.t.sol index f5ed4c5e8..8731f08c0 100644 --- a/contracts/src/Teleporter/tests/RedeemRelayerRewardsTests.t.sol +++ b/contracts/src/Teleporter/tests/RedeemRelayerRewardsTests.t.sol @@ -101,7 +101,7 @@ contract RedeemRelayerRewardsTest is TeleporterMessengerTest { // is able to redeem the reward. function _setUpRelayerRewards(FeeRewardInfo memory feeRewardInfo) private { uint256 messageNonce = _getNextMessageNonce(); - _sendTestMessageWithFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID, feeRewardInfo.feeAmount); + _sendTestMessageWithFee(DEFAULT_SOURCE_BLOCKCHAIN_ID, feeRewardInfo.feeAmount); TeleporterMessageReceipt[] memory receipts = new TeleporterMessageReceipt[](1); receipts[0] = TeleporterMessageReceipt({ @@ -110,14 +110,14 @@ contract RedeemRelayerRewardsTest is TeleporterMessengerTest { }); TeleporterMessage memory messageToReceive = _createMockTeleporterMessage(1, new bytes(0)); bytes32 receivedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); messageToReceive.receipts = receipts; WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); diff --git a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol index 65b1102b7..ca37c9609 100644 --- a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol @@ -123,7 +123,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { }); vm.expectRevert(_formatTeleporterErrorMessage("message not found")); - teleporterMessenger.retryMessageExecution(DEFAULT_ORIGIN_BLOCKCHAIN_ID, fakeMessage); + teleporterMessenger.retryMessageExecution(DEFAULT_SOURCE_BLOCKCHAIN_ID, fakeMessage); } function testInvalidMessageHash() public { @@ -201,9 +201,9 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { message: abi.encode(action, abi.encode(messageString)) }); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); bytes32 messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageToReceive.messageNonce ); @@ -223,7 +223,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + emit MessageExecutionFailed(messageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message execution didn't have any effect, but @@ -236,7 +236,7 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { ); assertTrue(teleporterMessenger.messageReceived(messageID)); - return (DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive, messageString); + return (DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive, messageString); } function _successfullyRetryMessage() internal returns (bytes32, TeleporterMessage memory) { diff --git a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol index 3daf7788e..d99cdd615 100644 --- a/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol +++ b/contracts/src/Teleporter/tests/SendSpecifiedReceiptsTests.t.sol @@ -33,7 +33,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { TeleporterMessageReceipt[] memory expectedReceipts = new TeleporterMessageReceipt[](3); for (uint256 i; i < relayerRewardAddresses.length; ++i) { _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, i + 1, relayerRewardAddresses[i], new TeleporterMessageReceipt[](0) @@ -49,7 +49,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { TeleporterMessage memory expectedMessage = TeleporterMessage({ messageNonce: expectedMessageNonce, originSenderAddress: address(this), - destinationBlockchainID: DEFAULT_ORIGIN_BLOCKCHAIN_ID, + destinationBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, destinationAddress: DEFAULT_DESTINATION_ADDRESS, requiredGasLimit: DEFAULT_REQUIRED_GAS_LIMIT, allowedRelayerAddresses: new address[](0), @@ -57,19 +57,19 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { message: new bytes(0) }); bytes32 expectedMessageID = teleporterMessenger.calculateMessageID( - DEFAULT_DESTINATION_BLOCKCHAIN_ID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, expectedMessageNonce + DEFAULT_DESTINATION_BLOCKCHAIN_ID, DEFAULT_SOURCE_BLOCKCHAIN_ID, expectedMessageNonce ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); TeleporterFeeInfo memory feeInfo = TeleporterFeeInfo(address(0), 0); emit SendCrossChainMessage( - expectedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, expectedMessage, feeInfo + expectedMessageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, expectedMessage, feeInfo ); - bytes32 outboundMessageID = _sendTestMessageWithNoFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID); + bytes32 outboundMessageID = _sendTestMessageWithNoFee(DEFAULT_SOURCE_BLOCKCHAIN_ID); assertEq(outboundMessageID, expectedMessageID); assertEq( teleporterMessenger.getRelayerRewardAddress( teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 1 + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 1 ) ), relayerRewardAddresses[0] @@ -87,11 +87,11 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { uint256 newExpectedMessageNonce = _getNextMessageNonce(); bytes32 newExpectedMessageID = - teleporterMessenger.getNextMessageID(DEFAULT_ORIGIN_BLOCKCHAIN_ID); + teleporterMessenger.getNextMessageID(DEFAULT_SOURCE_BLOCKCHAIN_ID); TeleporterMessage memory newExpectedMessage = TeleporterMessage({ messageNonce: newExpectedMessageNonce, originSenderAddress: address(this), - destinationBlockchainID: DEFAULT_ORIGIN_BLOCKCHAIN_ID, + destinationBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, destinationAddress: address(0), requiredGasLimit: uint256(0), allowedRelayerAddresses: new address[](0), @@ -102,35 +102,35 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { // Retry sending two of the receipts with {sendSpecifiedReceipts}. bytes32[] memory receiptIDs = new bytes32[](2); receiptIDs[0] = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 3 + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 3 ); receiptIDs[1] = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 1 + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 1 ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit SendCrossChainMessage( - newExpectedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, newExpectedMessage, feeInfo + newExpectedMessageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, newExpectedMessage, feeInfo ); outboundMessageID = - _sendSpecifiedReceiptsWithNoFee(DEFAULT_ORIGIN_BLOCKCHAIN_ID, receiptIDs); + _sendSpecifiedReceiptsWithNoFee(DEFAULT_SOURCE_BLOCKCHAIN_ID, receiptIDs); assertEq(outboundMessageID, newExpectedMessageID); } - function testMessageIDNotFromOriginBlockchain() public { + function testMessageIDNotFromSourceBlockchain() public { // Mock receiving a message from another chain uint256 receivedMessageNonce = 987; _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, receivedMessageNonce, address(0), new TeleporterMessageReceipt[](0) ); bytes32[] memory receiptIDs = new bytes32[](1); receiptIDs[0] = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, receivedMessageNonce ); // Call sendSpecifiedReceipts to try to send the receipts for those message IDs to a @@ -197,7 +197,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { function testMissingMessage() public { // Mock receiving a message from another chain _receiveTestMessage( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, + DEFAULT_SOURCE_BLOCKCHAIN_ID, 1, DEFAULT_RELAYER_REWARD_ADDRESS, new TeleporterMessageReceipt[](0) @@ -205,7 +205,7 @@ contract SendSpecifiedReceiptsTest is TeleporterMessengerTest { bytes32[] memory missingIDs = new bytes32[](1); missingIDs[0] = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 21 + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, 21 ); // Try to send a receipt for an unreceived message from that chain - should fail. diff --git a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol index 6a7ee2a7e..cace8c89d 100644 --- a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol +++ b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol @@ -24,7 +24,7 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract TeleporterMessengerTest is Test { TeleporterMessenger public teleporterMessenger; - bytes32 public constant DEFAULT_ORIGIN_BLOCKCHAIN_ID = + bytes32 public constant DEFAULT_SOURCE_BLOCKCHAIN_ID = bytes32(hex"abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"); bytes32 public constant DEFAULT_DESTINATION_BLOCKCHAIN_ID = bytes32(hex"1234567812345678123456781234567812345678123456781234567812345678"); @@ -209,9 +209,9 @@ contract TeleporterMessengerTest is Test { TeleporterMessage memory messageToReceive = _createMockTeleporterMessage(messageNonce, messageData); WarpMessage memory warpMessage = - _createDefaultWarpMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, abi.encode(messageToReceive)); + _createDefaultWarpMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, abi.encode(messageToReceive)); bytes32 messageID = teleporterMessenger.calculateMessageID( - DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageNonce + DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_BLOCKCHAIN_ID, messageNonce ); // We have to mock the precompile call so that it doesn't revert in the tests. @@ -231,10 +231,10 @@ contract TeleporterMessengerTest is Test { messageToReceive ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); + emit MessageExecutionFailed(messageID, DEFAULT_SOURCE_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); - return (DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_ADDRESS, messageToReceive); + return (DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_DESTINATION_ADDRESS, messageToReceive); } // Create a mock message to be used in tests. It should include no receipts diff --git a/contracts/src/Teleporter/upgrades/tests/PauseTeleporterAddressTests.t.sol b/contracts/src/Teleporter/upgrades/tests/PauseTeleporterAddressTests.t.sol index a5bc4274a..cb94d3e2e 100644 --- a/contracts/src/Teleporter/upgrades/tests/PauseTeleporterAddressTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/PauseTeleporterAddressTests.t.sol @@ -16,12 +16,12 @@ contract PauseTeleporterAddressTest is TeleporterUpgradeableTest { function testPauseTeleporterAddressBasic() public { // Check that the teleporterAddress is not paused initially vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that teleporterAddress can not deliver messages once paused _pauseTeleporterAddressSuccess(app, teleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testAlreadyPausedTeleporterAddress() public { @@ -29,7 +29,7 @@ contract PauseTeleporterAddressTest is TeleporterUpgradeableTest { _pauseTeleporterAddressSuccess(app, teleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that teleporterAddress can not be paused again vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("address already paused")); app.pauseTeleporterAddress(teleporterAddress); @@ -44,19 +44,19 @@ contract PauseTeleporterAddressTest is TeleporterUpgradeableTest { // Check that the teleporterAddress is not paused initially vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that teleporterAddress can not deliver messages once paused _pauseTeleporterAddressSuccess(app, teleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that after updating mininum Teleporter version, the address is still paused _updateMinTeleporterVersionSuccess(app, teleporterRegistry.latestVersion()); vm.prank(teleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testPauseBeforeRegister() public { @@ -74,7 +74,7 @@ contract PauseTeleporterAddressTest is TeleporterUpgradeableTest { // Check that the new Teleporter address is paused vm.prank(newTeleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testPauseZeroAddress() public { diff --git a/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol b/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol index bc7e0f935..8db4871e8 100644 --- a/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/TeleporterOwnerUpgradeableTests.t.sol @@ -111,14 +111,14 @@ contract TeleporterOwnerUpgradeableTest is TeleporterUpgradeableTest { // Check that the Teleporter address is still paused vm.prank(teleporterAddress); vm.expectRevert("TeleporterUpgradeable: Teleporter address paused"); - ownerApp.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + ownerApp.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Unpause the Teleporter address from owner account _unpauseTeleporterAddressSuccess(ownerApp, teleporterAddress); // Check that the Teleporter address can now deliver messages vm.prank(teleporterAddress); - ownerApp.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + ownerApp.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testOwnerUpgradeAccess() public { diff --git a/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol b/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol index 0f82b869c..35abbd762 100644 --- a/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/TeleporterUpgradeableTests.t.sol @@ -35,7 +35,7 @@ contract ExampleUpgradeableApp is TeleporterUpgradeable { contract TeleporterUpgradeableTest is TeleporterRegistryTest { ExampleUpgradeableApp public app; - bytes32 public constant DEFAULT_ORIGIN_BLOCKCHAIN_ID = + bytes32 public constant DEFAULT_SOURCE_BLOCKCHAIN_ID = bytes32(hex"abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"); address public constant DEFAULT_ORIGIN_ADDRESS = 0xd54e3E251b9b0EEd3ed70A858e927bbC2659587d; @@ -65,17 +65,17 @@ contract TeleporterUpgradeableTest is TeleporterRegistryTest { assertEq(app.getMinTeleporterVersion(), 1); vm.expectRevert(_formatRegistryErrorMessage("protocol address not found")); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUpdateMinTeleporterVersion() public { // First check that calling with initial teleporter address works assertEq(app.getMinTeleporterVersion(), 1); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Now add new protocol version to registry and update the app's min version address newTeleporterAddress = address(new TeleporterMessenger()); @@ -90,11 +90,11 @@ contract TeleporterUpgradeableTest is TeleporterRegistryTest { // Check that calling with the old teleporter address fails vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("invalid Teleporter sender")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that calling with the new teleporter address works vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testSetMinTeleporterVersion() public { diff --git a/contracts/src/Teleporter/upgrades/tests/UnpauseTeleporterAddressTests.t.sol b/contracts/src/Teleporter/upgrades/tests/UnpauseTeleporterAddressTests.t.sol index 027874e13..58789a7b8 100644 --- a/contracts/src/Teleporter/upgrades/tests/UnpauseTeleporterAddressTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/UnpauseTeleporterAddressTests.t.sol @@ -24,7 +24,7 @@ contract UnpauseTeleporterAddressTest is TeleporterUpgradeableTest { // The Teleporter address paused no longer can deliver messages to the app vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Add a new Teleporter address to the registry and update minimum version address newTeleporterAddress = address(new TeleporterMessenger()); @@ -38,27 +38,27 @@ contract UnpauseTeleporterAddressTest is TeleporterUpgradeableTest { // because the minimum version is still greater than the Teleporter address version vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("invalid Teleporter sender")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that the new Teleporter address delivers messages fine vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUnpauseTeleporterAddressBasic() public { // Check that the teleporterAddress is not paused initially vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that teleporterAddress can not deliver messages once paused _pauseTeleporterAddressSuccess(app, teleporterAddress); vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("Teleporter address paused")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Unpause the teleporterAddress and check that it can deliver messages again _unpauseTeleporterAddressSuccess(app, teleporterAddress); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testAlreadyUnpausedTeleporterAddress() public { @@ -94,7 +94,7 @@ contract UnpauseTeleporterAddressTest is TeleporterUpgradeableTest { // Check that the new Teleporter address is unpaused vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUnpauseAfterRegister() public { @@ -114,7 +114,7 @@ contract UnpauseTeleporterAddressTest is TeleporterUpgradeableTest { // Check that the new Teleporter address is unpaused vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUnpauseZeroAddress() public { diff --git a/contracts/src/Teleporter/upgrades/tests/UpdateMinTeleporterVersionTests.t.sol b/contracts/src/Teleporter/upgrades/tests/UpdateMinTeleporterVersionTests.t.sol index 9e676d400..ebffddd8a 100644 --- a/contracts/src/Teleporter/upgrades/tests/UpdateMinTeleporterVersionTests.t.sol +++ b/contracts/src/Teleporter/upgrades/tests/UpdateMinTeleporterVersionTests.t.sol @@ -17,7 +17,7 @@ contract UpdateMinTeleporterVersionTest is TeleporterUpgradeableTest { // First check that calling with initial teleporter address works assertEq(app.getMinTeleporterVersion(), 1); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Now add new protocol version to registry and update the app's min version address newTeleporterAddress = address(new TeleporterMessenger()); @@ -29,11 +29,11 @@ contract UpdateMinTeleporterVersionTest is TeleporterUpgradeableTest { // Check that calling with the old teleporter address fails vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("invalid Teleporter sender")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Check that calling with the new teleporter address works vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUpdateToNonRegisteredVersion() public { @@ -74,11 +74,11 @@ contract UpdateMinTeleporterVersionTest is TeleporterUpgradeableTest { // Make sure that the old minimum Teleporter version can not deliver messages vm.expectRevert(_formatTeleporterUpgradeableErrorMessage("invalid Teleporter sender")); vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); // Make sure that the new minimum Teleporter version can still deliver messages vm.prank(newTeleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUpdateWithCurrentVersion() public { @@ -99,7 +99,7 @@ contract UpdateMinTeleporterVersionTest is TeleporterUpgradeableTest { // Check that calling with the teleporter address works vm.prank(teleporterAddress); - app.receiveTeleporterMessage(DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); + app.receiveTeleporterMessage(DEFAULT_SOURCE_BLOCKCHAIN_ID, DEFAULT_ORIGIN_ADDRESS, ""); } function testUpdateWithGreaterThanLatestVersion() public { From 3bdb64e0e27d2bb5be35e20d45583c9c5df3226f Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 20:29:04 +0000 Subject: [PATCH 09/12] update originChainID --- .../go/Teleporter/TeleporterMessenger/packing.go | 4 ++-- .../Teleporter/tests/FallbackReceiveTests.t.sol | 10 +++++----- tests/utils/utils.go | 16 ++++++++-------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go b/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go index be2ed35dd..b0b0847f7 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/packing.go @@ -76,13 +76,13 @@ func PackSendCrossChainMessage(input TeleporterMessageInput) ([]byte, error) { return abi.Pack("sendCrossChainMessage", input) } -func PackRetryMessageExecution(originChainID ids.ID, message TeleporterMessage) ([]byte, error) { +func PackRetryMessageExecution(sourceBlockchainID ids.ID, message TeleporterMessage) ([]byte, error) { abi, err := TeleporterMessengerMetaData.GetAbi() if err != nil { return nil, errors.Wrap(err, "failed to get abi") } - return abi.Pack("retryMessageExecution", originChainID, message) + return abi.Pack("retryMessageExecution", sourceBlockchainID, message) } // PackReceiveCrossChainMessage packs a ReceiveCrossChainMessageInput to form a call to the receiveCrossChainMessage function diff --git a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol index 8b9b92091..6d4d5ea95 100644 --- a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol @@ -18,12 +18,12 @@ enum FallbackReceiveAction { } contract FallbackReceiveApp { - bytes32 public immutable originChainID; + bytes32 public immutable sourceBlockchainID; address public immutable originSenderAddress; uint256 public nonce; - constructor(bytes32 originChainID_, address originSenderAddress_) { - originChainID = originChainID_; + constructor(bytes32 sourceBlockchainID_, address originSenderAddress_) { + sourceBlockchainID = sourceBlockchainID_; originSenderAddress = originSenderAddress_; } @@ -36,10 +36,10 @@ contract FallbackReceiveApp { "FallbackReceiveApp: Invalid selector" ); - (bytes32 originChainID_, address originSenderAddress_, bytes memory message) = + (bytes32 sourceBlockchainID_, address originSenderAddress_, bytes memory message) = abi.decode(data[4:], (bytes32, address, bytes)); - require(originChainID == originChainID_, "FallbackReceiveApp: Invalid origin chain ID"); + require(sourceBlockchainID == sourceBlockchainID_, "FallbackReceiveApp: Invalid origin chain ID"); require( originSenderAddress == originSenderAddress_, "FallbackReceiveApp: Invalid origin sender address" diff --git a/tests/utils/utils.go b/tests/utils/utils.go index e2885fe63..89f6ca21f 100644 --- a/tests/utils/utils.go +++ b/tests/utils/utils.go @@ -88,7 +88,7 @@ func SendAddFeeAmountAndWaitForAcceptance( func RetryMessageExecutionAndWaitForAcceptance( ctx context.Context, - originChainID ids.ID, + sourceBlockchainID ids.ID, subnet interfaces.SubnetTestInfo, message teleportermessenger.TeleporterMessage, senderKey *ecdsa.PrivateKey, @@ -96,7 +96,7 @@ func RetryMessageExecutionAndWaitForAcceptance( opts, err := bind.NewKeyedTransactorWithChainID(senderKey, subnet.EVMChainID) Expect(err).Should(BeNil()) - tx, err := subnet.TeleporterMessenger.RetryMessageExecution(opts, originChainID, message) + tx, err := subnet.TeleporterMessenger.RetryMessageExecution(opts, sourceBlockchainID, message) Expect(err).Should(BeNil()) return WaitForTransactionSuccess(ctx, subnet, tx) @@ -154,7 +154,7 @@ func RedeemRelayerRewardsAndConfirm( func SendSpecifiedReceiptsAndWaitForAcceptance( ctx context.Context, - originChainID ids.ID, + sourceBlockchainID ids.ID, source interfaces.SubnetTestInfo, messageIDs [][32]byte, feeInfo teleportermessenger.TeleporterFeeInfo, @@ -165,7 +165,7 @@ func SendSpecifiedReceiptsAndWaitForAcceptance( Expect(err).Should(BeNil()) tx, err := source.TeleporterMessenger.SendSpecifiedReceipts( - opts, originChainID, messageIDs, feeInfo, allowedRelayerAddresses) + opts, sourceBlockchainID, messageIDs, feeInfo, allowedRelayerAddresses) Expect(err).Should(BeNil()) receipt := WaitForTransactionSuccess(ctx, source, tx) @@ -173,10 +173,10 @@ func SendSpecifiedReceiptsAndWaitForAcceptance( // Check the transaction logs for the SendCrossChainMessage event emitted by the Teleporter contract event, err := GetEventFromLogs(receipt.Logs, source.TeleporterMessenger.ParseSendCrossChainMessage) Expect(err).Should(BeNil()) - Expect(event.DestinationBlockchainID[:]).Should(Equal(originChainID[:])) + Expect(event.DestinationBlockchainID[:]).Should(Equal(sourceBlockchainID[:])) log.Info("Sending SendSpecifiedReceipts transaction", - "originChainID", originChainID, + "sourceBlockchainID", sourceBlockchainID, "txHash", tx.Hash()) return receipt, event.MessageID @@ -251,12 +251,12 @@ func CreateSendCrossChainMessageTransaction( func CreateRetryMessageExecutionTransaction( ctx context.Context, subnetInfo interfaces.SubnetTestInfo, - originChainID ids.ID, + sourceBlockchainID ids.ID, message teleportermessenger.TeleporterMessage, senderKey *ecdsa.PrivateKey, teleporterContractAddress common.Address, ) *types.Transaction { - data, err := teleportermessenger.PackRetryMessageExecution(originChainID, message) + data, err := teleportermessenger.PackRetryMessageExecution(sourceBlockchainID, message) Expect(err).Should(BeNil()) // TODO: replace with actual number of signers From b0def82b8e5db886ae6579f30f384612715f7dd0 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 20:30:03 +0000 Subject: [PATCH 10/12] update destinationChainID --- .../tests/ERC20TokenSourceTests.t.sol | 2 +- .../tests/NativeTokenSourceTests.t.sol | 2 +- tests/flows/deliver_to_wrong_chain.go | 2 +- tests/flows/erc20_bridge_multihop.go | 12 ++++++------ tests/flows/relay_message_twice.go | 2 +- tests/flows/unallowed_relayer.go | 2 +- tests/flows/validator_churn.go | 2 +- tests/utils/utils.go | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol index 0f52084e2..84900a385 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol @@ -157,7 +157,7 @@ contract ERC20TokenSourceTest is NativeTokenBridgeTest { ); } - function testZeroDestinationChainID() public { + function testZeroDestinationBlockChainID() public { vm.expectRevert(_formatERC20TokenSourceErrorMessage("zero destination blockchain ID")); new ERC20TokenSource( diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol index f1f76a2c4..7ebd13e8e 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol @@ -161,7 +161,7 @@ contract NativeTokenSourceTest is NativeTokenBridgeTest { ); } - function testZeroDestinationChainID() public { + function testZeroDestinationBlockChainID() public { vm.expectRevert(_formatNativeTokenSourceErrorMessage("zero destination blockchain ID")); new NativeTokenSource( diff --git a/tests/flows/deliver_to_wrong_chain.go b/tests/flows/deliver_to_wrong_chain.go index 1af4303c2..cd3eb89e4 100644 --- a/tests/flows/deliver_to_wrong_chain.go +++ b/tests/flows/deliver_to_wrong_chain.go @@ -45,7 +45,7 @@ func DeliverToWrongChain(network interfaces.Network) { log.Info( "Sending Teleporter transaction on source chain", - "destinationChainID", subnetBInfo.BlockchainID, + "destinationBlockchainID", subnetBInfo.BlockchainID, ) receipt, _ := utils.SendCrossChainMessageAndWaitForAcceptance( diff --git a/tests/flows/erc20_bridge_multihop.go b/tests/flows/erc20_bridge_multihop.go index de93d4616..e1cf4bc3f 100644 --- a/tests/flows/erc20_bridge_multihop.go +++ b/tests/flows/erc20_bridge_multihop.go @@ -355,7 +355,7 @@ func ERC20BridgeMultihop(network interfaces.Network) { func submitCreateBridgeToken( ctx context.Context, source interfaces.SubnetTestInfo, - destinationChainID ids.ID, + destinationBlockchainID ids.ID, destinationBridgeAddress common.Address, nativeToken common.Address, messageFeeAsset common.Address, @@ -370,7 +370,7 @@ func submitCreateBridgeToken( tx, err := transactor.SubmitCreateBridgeToken( opts, - destinationChainID, + destinationBlockchainID, destinationBridgeAddress, nativeToken, messageFeeAsset, @@ -383,7 +383,7 @@ func submitCreateBridgeToken( event, err := utils.GetEventFromLogs(receipt.Logs, teleporterMessenger.ParseSendCrossChainMessage) Expect(err).Should(BeNil()) - Expect(event.DestinationBlockchainID[:]).Should(Equal(destinationChainID[:])) + Expect(event.DestinationBlockchainID[:]).Should(Equal(destinationBlockchainID[:])) log.Info("Successfully SubmitCreateBridgeToken", "txHash", tx.Hash().Hex(), @@ -395,7 +395,7 @@ func submitCreateBridgeToken( func bridgeToken( ctx context.Context, source interfaces.SubnetTestInfo, - destinationChainID ids.ID, + destinationBlockchainID ids.ID, destinationBridgeAddress common.Address, token common.Address, recipient common.Address, @@ -414,7 +414,7 @@ func bridgeToken( tx, err := transactor.BridgeTokens( opts, - destinationChainID, + destinationBlockchainID, destinationBridgeAddress, token, recipient, @@ -430,7 +430,7 @@ func bridgeToken( event, err := utils.GetEventFromLogs(receipt.Logs, teleporterMessenger.ParseSendCrossChainMessage) Expect(err).Should(BeNil()) if isNative { - Expect(event.DestinationBlockchainID[:]).Should(Equal(destinationChainID[:])) + Expect(event.DestinationBlockchainID[:]).Should(Equal(destinationBlockchainID[:])) } else { Expect(event.DestinationBlockchainID[:]).Should(Equal(nativeTokenChainID[:])) } diff --git a/tests/flows/relay_message_twice.go b/tests/flows/relay_message_twice.go index 567609c20..967f7a380 100644 --- a/tests/flows/relay_message_twice.go +++ b/tests/flows/relay_message_twice.go @@ -38,7 +38,7 @@ func RelayMessageTwice(network interfaces.Network) { log.Info( "Sending Teleporter transaction on source chain", - "destinationChainID", subnetBInfo.BlockchainID, + "destinationBlockchainID", subnetBInfo.BlockchainID, ) receipt, teleporterMessageID := utils.SendCrossChainMessageAndWaitForAcceptance( ctx, subnetAInfo, subnetBInfo, sendCrossChainMessageInput, fundedKey, diff --git a/tests/flows/unallowed_relayer.go b/tests/flows/unallowed_relayer.go index fd9b31b77..4e4a4a053 100644 --- a/tests/flows/unallowed_relayer.go +++ b/tests/flows/unallowed_relayer.go @@ -40,7 +40,7 @@ func UnallowedRelayer(network interfaces.Network) { log.Info( "Sending Teleporter transaction on source chain", - "destinationChainID", subnetBInfo.BlockchainID, + "destinationBlockchainID", subnetBInfo.BlockchainID, ) receipt, teleporterMessageID := utils.SendCrossChainMessageAndWaitForAcceptance( ctx, subnetAInfo, subnetBInfo, sendCrossChainMessageInput, fundedKey, diff --git a/tests/flows/validator_churn.go b/tests/flows/validator_churn.go index c9685b4c2..722ff1b72 100644 --- a/tests/flows/validator_churn.go +++ b/tests/flows/validator_churn.go @@ -30,7 +30,7 @@ func ValidatorChurn(network interfaces.LocalNetwork) { // // Send a Teleporter message on Subnet A // - log.Info("Sending Teleporter message on source chain", "destinationChainID", subnetBInfo.BlockchainID) + log.Info("Sending Teleporter message on source chain", "destinationBlockchainID", subnetBInfo.BlockchainID) sendCrossChainMessageInput := teleportermessenger.TeleporterMessageInput{ DestinationBlockchainID: subnetBInfo.BlockchainID, DestinationAddress: fundedAddress, diff --git a/tests/utils/utils.go b/tests/utils/utils.go index 89f6ca21f..f98b3044e 100644 --- a/tests/utils/utils.go +++ b/tests/utils/utils.go @@ -81,7 +81,7 @@ func SendAddFeeAmountAndWaitForAcceptance( log.Info("Send AddFeeAmount transaction on source chain", "messageID", messageID, "sourceChainID", source.BlockchainID, - "destinationChainID", destination.BlockchainID) + "destinationBlockchainID", destination.BlockchainID) return receipt } @@ -414,7 +414,7 @@ func SendCrossChainMessageAndWaitForAcceptance( log.Info("Sending SendCrossChainMessage transaction on source chain", "sourceChainID", source.BlockchainID, - "destinationChainID", destination.BlockchainID, + "destinationBlockchainID", destination.BlockchainID, "txHash", tx.Hash()) return receipt, event.MessageID From a166763d6f930fa385f3c8141b9e463bb91c3b90 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 21:08:29 +0000 Subject: [PATCH 11/12] dotting i's --- .../NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol | 2 +- .../NativeTokenBridge/tests/NativeTokenDestinationTests.t.sol | 2 +- .../NativeTokenBridge/tests/NativeTokenSourceTests.t.sol | 2 +- docker/{getBlockChainId.py => getBlockchainId.py} | 0 docker/run_setup.sh | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename docker/{getBlockChainId.py => getBlockchainId.py} (100%) diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol index 84900a385..92d17a7ee 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/ERC20TokenSourceTests.t.sol @@ -157,7 +157,7 @@ contract ERC20TokenSourceTest is NativeTokenBridgeTest { ); } - function testZeroDestinationBlockChainID() public { + function testZeroDestinationBlockchainID() public { vm.expectRevert(_formatERC20TokenSourceErrorMessage("zero destination blockchain ID")); new ERC20TokenSource( diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenDestinationTests.t.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenDestinationTests.t.sol index 3985072b6..4f83a506f 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenDestinationTests.t.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenDestinationTests.t.sol @@ -193,7 +193,7 @@ contract NativeTokenDestinationTest is NativeTokenBridgeTest { ); } - function testZeroSourceChainID() public { + function testZeroSourceBlockchainID() public { vm.expectRevert(_formatNativeTokenDestinationErrorMessage("zero source blockchain ID")); new NativeTokenDestination( diff --git a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol index 7ebd13e8e..71252b48d 100644 --- a/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol +++ b/contracts/src/CrossChainApplications/examples/NativeTokenBridge/tests/NativeTokenSourceTests.t.sol @@ -161,7 +161,7 @@ contract NativeTokenSourceTest is NativeTokenBridgeTest { ); } - function testZeroDestinationBlockChainID() public { + function testZeroDestinationBlockchainID() public { vm.expectRevert(_formatNativeTokenSourceErrorMessage("zero destination blockchain ID")); new NativeTokenSource( diff --git a/docker/getBlockChainId.py b/docker/getBlockchainId.py similarity index 100% rename from docker/getBlockChainId.py rename to docker/getBlockchainId.py diff --git a/docker/run_setup.sh b/docker/run_setup.sh index 2d1e70367..b1225e919 100755 --- a/docker/run_setup.sh +++ b/docker/run_setup.sh @@ -68,7 +68,7 @@ if [ ! -e $dir_prefix/NETWORK_RUNNING ]; then subnet_c_blockchain_id=$(cat $HOME/.avalanche-cli/subnets/subnetc/sidecar.json | getJsonVal "['Networks']['Local Network']['BlockchainID']") subnet_c_subnet_id=$(cat $HOME/.avalanche-cli/subnets/subnetc/sidecar.json | getJsonVal "['Networks']['Local Network']['SubnetID']") c_chain_subnet_id=11111111111111111111111111111111LpoYY # hardcoded primary subnet ID - c_chain_blockchain_id=$(curl -X POST --data '{"jsonrpc": "2.0","method": "platform.getBlockchains","params": {},"id": 1}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P | getJsonVal "['result']['blockchains']" | python3 docker/getBlockChainId.py C-Chain) + c_chain_blockchain_id=$(curl -X POST --data '{"jsonrpc": "2.0","method": "platform.getBlockchains","params": {},"id": 1}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P | getJsonVal "['result']['blockchains']" | python3 docker/getBlockchainId.py C-Chain) echo "Subnet A blockchain ID: $subnet_a_blockchain_id" echo "Subnet B blockchain ID: $subnet_b_blockchain_id" From f6a7b08d24269a900770e68b22ba1c48a29e8d74 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 12 Jan 2024 21:17:56 +0000 Subject: [PATCH 12/12] linter --- contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol index 6d4d5ea95..85527276f 100644 --- a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol @@ -39,7 +39,9 @@ contract FallbackReceiveApp { (bytes32 sourceBlockchainID_, address originSenderAddress_, bytes memory message) = abi.decode(data[4:], (bytes32, address, bytes)); - require(sourceBlockchainID == sourceBlockchainID_, "FallbackReceiveApp: Invalid origin chain ID"); + require( + sourceBlockchainID == sourceBlockchainID_, "FallbackReceiveApp: Invalid origin chain ID" + ); require( originSenderAddress == originSenderAddress_, "FallbackReceiveApp: Invalid origin sender address"