Overview
ETH Balance
0.00000016 ETH
Eth Value
Less Than $0.01 (@ $3,304.17/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0xf347f3fb773daa7587560d11bea6eab8d68a944f3b5b5edfd83432669d8f6352 | Meta Route | (pending) | 2 hrs ago | IN | 0.001 ETH | (Pending) | |||
0x5f0acdf968eea844abe8ac28373abdce06adbc17385a83e3f113eddf66c98806 | Meta Route | (pending) | 28 hrs ago | IN | 0 ETH | (Pending) | |||
0xaa3e0ecd559c95af292d201390662b93e9acbbefb3589e57a8c366542b55b459 | Meta Route | (pending) | 28 hrs ago | IN | 0 ETH | (Pending) | |||
0xdfa6347886d70d4cbee2ddff255b1797c3745cba0f03dd7c64af2ae9bfd8f1cd | Meta Route | (pending) | 3 days ago | IN | 0 ETH | (Pending) | |||
Meta Route | 21463114 | 36 mins ago | IN | 0.003149 ETH | 0.00119828 | ||||
Meta Route | 21463101 | 38 mins ago | IN | 0.000891 ETH | 0.00109134 | ||||
Meta Route | 21463049 | 49 mins ago | IN | 0.03 ETH | 0.00170579 | ||||
Meta Route | 21462332 | 3 hrs ago | IN | 0 ETH | 0.00181478 | ||||
Meta Route | 21462141 | 3 hrs ago | IN | 0 ETH | 0.00203287 | ||||
Meta Route | 21462134 | 3 hrs ago | IN | 0 ETH | 0.00162772 | ||||
Meta Route | 21462079 | 4 hrs ago | IN | 0.027 ETH | 0.00302567 | ||||
Meta Route | 21462068 | 4 hrs ago | IN | 0 ETH | 0.00228043 | ||||
Meta Route | 21462015 | 4 hrs ago | IN | 0.002 ETH | 0.00141176 | ||||
Meta Route | 21461491 | 6 hrs ago | IN | 0 ETH | 0.00250477 | ||||
Meta Route | 21461487 | 6 hrs ago | IN | 0.001679 ETH | 0.00149792 | ||||
Meta Route | 21461438 | 6 hrs ago | IN | 0 ETH | 0.00180795 | ||||
Meta Route | 21461206 | 7 hrs ago | IN | 0.0023 ETH | 0.00129977 | ||||
Meta Route | 21461119 | 7 hrs ago | IN | 0 ETH | 0.00267598 | ||||
Meta Route | 21460380 | 9 hrs ago | IN | 0.0005 ETH | 0.00305127 | ||||
Meta Route | 21460354 | 9 hrs ago | IN | 0.0008 ETH | 0.00230139 | ||||
Meta Route | 21459978 | 11 hrs ago | IN | 0.002 ETH | 0.00252882 | ||||
Meta Route | 21459455 | 12 hrs ago | IN | 0 ETH | 0.00215231 | ||||
Meta Route | 21459320 | 13 hrs ago | IN | 0.025 ETH | 0.00349151 | ||||
Meta Route | 21459161 | 13 hrs ago | IN | 0.05247571 ETH | 0.00042806 | ||||
Meta Route | 21458942 | 14 hrs ago | IN | 0.004 ETH | 0.00354291 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21463118 | 35 mins ago | 0.28235241 ETH | ||||
21463118 | 35 mins ago | 0.28235241 ETH | ||||
21463114 | 36 mins ago | 0.003149 ETH | ||||
21463101 | 38 mins ago | 0.000891 ETH | ||||
21463049 | 49 mins ago | 0.03 ETH | ||||
21462760 | 1 hr ago | 0.02 ETH | ||||
21462760 | 1 hr ago | 0.02 ETH | ||||
21462454 | 2 hrs ago | 0.6932625 ETH | ||||
21462454 | 2 hrs ago | 0.6932625 ETH | ||||
21462392 | 3 hrs ago | 0.001995 ETH | ||||
21462392 | 3 hrs ago | 0.001995 ETH | ||||
21462311 | 3 hrs ago | 0.41782155 ETH | ||||
21462311 | 3 hrs ago | 0.41782155 ETH | ||||
21462256 | 3 hrs ago | 0.33150137 ETH | ||||
21462256 | 3 hrs ago | 0.33150137 ETH | ||||
21462079 | 4 hrs ago | 0.027 ETH | ||||
21462015 | 4 hrs ago | 0.002 ETH | ||||
21462009 | 4 hrs ago | 2 ETH | ||||
21462009 | 4 hrs ago | 2 ETH | ||||
21461965 | 4 hrs ago | 0.89 ETH | ||||
21461965 | 4 hrs ago | 0.89 ETH | ||||
21461902 | 4 hrs ago | 0.399 ETH | ||||
21461902 | 4 hrs ago | 0.399 ETH | ||||
21461726 | 5 hrs ago | 0.182817 ETH | ||||
21461726 | 5 hrs ago | 0.182817 ETH |
Loading...
Loading
Contract Name:
MetaRouter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 // uni -> stable -> uni scheme pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@uniswap/lib/contracts/libraries/TransferHelper.sol"; import "./MetaRouteStructs.sol"; import "./MetaRouterGateway.sol"; import "../../utils/RevertMessageParser.sol"; /** * @title MetaRouterV3 * @notice Users must give approve on their tokens to `MetaRoutetGateway` contract, * not to `MetaRouter` contract. */ contract MetaRouter is Context { MetaRouterGateway public immutable metaRouterGateway; event TransitTokenSent( address to, uint256 amount, address token ); constructor() { metaRouterGateway = new MetaRouterGateway(address(this)); } /** * @notice Method that starts the Meta Routing * @dev external + internal swap for burn scheme, only external for synth scheme * @dev calls the next method on the other side * @param _metarouteTransaction metaRoute offchain transaction data */ function metaRoute( MetaRouteStructs.MetaRouteTransaction calldata _metarouteTransaction ) external payable { uint256 approvedTokensLength = _metarouteTransaction.approvedTokens.length; if (!_metarouteTransaction.nativeIn) { metaRouterGateway.claimTokens( _metarouteTransaction.approvedTokens[0], _msgSender(), _metarouteTransaction.amount ); } uint256 secondSwapAmountIn = _metarouteTransaction.amount; if (_metarouteTransaction.firstSwapCalldata.length != 0) { if (!_metarouteTransaction.nativeIn) { _lazyApprove( _metarouteTransaction.approvedTokens[0], _metarouteTransaction.firstDexRouter, _metarouteTransaction.amount ); } require( _metarouteTransaction.firstDexRouter != address(metaRouterGateway), "MetaRouter: invalid first router" ); { uint256 size; address toCheck = _metarouteTransaction.firstDexRouter; assembly { size := extcodesize(toCheck) } require(size != 0, "MetaRouter: call for a non-contract account"); } (bool firstSwapSuccess, bytes memory swapData) = _metarouteTransaction.firstDexRouter.call{value: msg.value}( _metarouteTransaction.firstSwapCalldata ); if (!firstSwapSuccess) { revert(RevertMessageParser.getRevertMessage(swapData, "MetaRouter: first swap failed")); } secondSwapAmountIn = IERC20(_metarouteTransaction.approvedTokens[1]).balanceOf(address(this)); } uint256 finalSwapAmountIn = secondSwapAmountIn; if (_metarouteTransaction.secondSwapCalldata.length != 0) { bytes memory secondSwapCalldata = _metarouteTransaction.secondSwapCalldata; assembly { mstore(add(secondSwapCalldata, 36), secondSwapAmountIn) } _lazyApprove( _metarouteTransaction.approvedTokens[approvedTokensLength - 2], _metarouteTransaction.secondDexRouter, secondSwapAmountIn ); require( _metarouteTransaction.secondDexRouter != address(metaRouterGateway), "MetaRouter: invalid second router" ); { uint256 size; address toCheck = _metarouteTransaction.secondDexRouter; assembly { size := extcodesize(toCheck) } require(size != 0, "MetaRouter: call for a non-contract account"); } (bool secondSwapSuccess, bytes memory swapData) = _metarouteTransaction.secondDexRouter.call(secondSwapCalldata); if (!secondSwapSuccess) { revert(RevertMessageParser.getRevertMessage(swapData, "MetaRouter: second swap failed")); } finalSwapAmountIn = IERC20( _metarouteTransaction.approvedTokens[approvedTokensLength - 1] ).balanceOf(address(this)); } _lazyApprove( _metarouteTransaction.approvedTokens[approvedTokensLength - 1], _metarouteTransaction.relayRecipient, finalSwapAmountIn ); bytes memory otherSideCalldata = _metarouteTransaction.otherSideCalldata; assembly { mstore(add(otherSideCalldata, 100), finalSwapAmountIn) } require( _metarouteTransaction.relayRecipient != address(metaRouterGateway), "MetaRouter: invalid recipient" ); { uint256 size; address toCheck = _metarouteTransaction.relayRecipient; assembly { size := extcodesize(toCheck) } require(size != 0, "MetaRouter: call for a non-contract account"); } (bool otherSideCallSuccess, bytes memory data) = _metarouteTransaction.relayRecipient.call(otherSideCalldata); if (!otherSideCallSuccess) { revert(RevertMessageParser.getRevertMessage(data, "MetaRouter: other side call failed")); } } /** * @notice Implements an external call on some contract * @dev called by Portal in metaUnsynthesize() method * @param _token address of token * @param _amount amount of _token * @param _receiveSide contract on which call will take place * @param _calldata encoded method to call * @param _offset shift to patch the amount to calldata */ function externalCall( address _token, uint256 _amount, address _receiveSide, bytes calldata _calldata, uint256 _offset, address _to ) external { (bool success,) = _externalCall(_token, _amount, _receiveSide, _calldata, _offset); if (!success) { TransferHelper.safeTransfer( _token, _to, _amount ); emit TransitTokenSent(_to, _amount, _token); } } function returnSwap( address _token, uint256 _amount, address _router, bytes calldata _swapCalldata, address _burnToken, address _synthesis, bytes calldata _burnCalldata ) external { (bool success, bytes memory data) = _externalCall(_token, _amount, _router, _swapCalldata, 36); if (!success) { revert(RevertMessageParser.getRevertMessage(data, "MetaRouterV2: internal swap failed")); } uint256 internalSwapAmountOut = IERC20(_burnToken).balanceOf(address(this)); bytes memory burnCalldata = _burnCalldata; assembly { mstore(add(burnCalldata, 100), internalSwapAmountOut) } require( _synthesis != address(metaRouterGateway), "MetaRouterV2: invalid recipient" ); { uint256 size; address toCheck = _synthesis; assembly { size := extcodesize(toCheck) } require(size != 0, "MetaRouter: call for a non-contract account"); } (bool otherSideCallSuccess, bytes memory burnData) = _synthesis.call(burnCalldata); if (!otherSideCallSuccess) { revert(RevertMessageParser.getRevertMessage(burnData, "MetaRouterV2: revertSynthesizeRequest call failed")); } } /** * @notice Implements an internal swap on stable router and final method call * @dev called by Synthesis in metaMint() method * @param _metaMintTransaction metaMint offchain transaction data */ function metaMintSwap( MetaRouteStructs.MetaMintTransaction calldata _metaMintTransaction ) external { address finalCallToken = _metaMintTransaction.swapTokens[0]; if (_metaMintTransaction.secondSwapCalldata.length != 0) { // internal swap (bool internalSwapSuccess, bytes memory internalSwapData) = _externalCall( _metaMintTransaction.swapTokens[0], _metaMintTransaction.amount, _metaMintTransaction.secondDexRouter, _metaMintTransaction.secondSwapCalldata, 36 ); if (!internalSwapSuccess) { revert(RevertMessageParser.getRevertMessage(internalSwapData, "MetaRouter: internal swap failed")); } finalCallToken = _metaMintTransaction.swapTokens[1]; } if (_metaMintTransaction.finalCalldata.length != 0) { // patch crossChainID bytes32 crossChainID = _metaMintTransaction.crossChainID; bytes memory calldata_ = _metaMintTransaction.finalCalldata; assembly { mstore(add(calldata_, 132), crossChainID) } uint256 finalAmountIn = IERC20(finalCallToken).balanceOf(address(this)); // external call (bool finalSuccess, bytes memory finalData) = _externalCall( finalCallToken, finalAmountIn, _metaMintTransaction.finalReceiveSide, calldata_, _metaMintTransaction.finalOffset ); if (!finalSuccess) { revert(RevertMessageParser.getRevertMessage(finalData, "MetaRouter: final call failed")); } } uint256 amountOut = IERC20(_metaMintTransaction.swapTokens[_metaMintTransaction.swapTokens.length - 1]).balanceOf(address(this)); if (amountOut != 0) { TransferHelper.safeTransfer( _metaMintTransaction.swapTokens[_metaMintTransaction.swapTokens.length - 1], _metaMintTransaction.to, amountOut ); } } /** * @notice Implements call of some operation with token * @dev Internal function used in metaMintSwap() and externalCall() * @param _token token address * @param _amount amount of _token * @param _receiveSide address of contract on which method will be called * @param _calldata encoded method call * @param _offset shift to patch the _amount to calldata */ function _externalCall( address _token, uint256 _amount, address _receiveSide, bytes memory _calldata, uint256 _offset ) internal returns (bool success, bytes memory data) { require(_receiveSide != address(metaRouterGateway), "MetaRouter: invalid receiveSide"); _lazyApprove(_token, _receiveSide, _amount); assembly { mstore(add(_calldata, _offset), _amount) } { uint256 size; address toCheck = _receiveSide; assembly { size := extcodesize(toCheck) } require(size != 0, "MetaRouter: call for a non-contract account"); } (success, data) = _receiveSide.call(_calldata); } /** * @notice Implements approve * @dev Internal function used to approve the token spending * @param _token token address * @param _to address to approve * @param _amount amount for which approve will be given */ function _lazyApprove(address _token, address _to, uint256 _amount) internal { if (IERC20(_token).allowance(address(this), _to) < _amount) { TransferHelper.safeApprove(_token, _to, type(uint256).max); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.6.0; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeApprove: approve failed' ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeTransfer: transfer failed' ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::transferFrom: transferFrom failed' ); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; import "@uniswap/lib/contracts/libraries/TransferHelper.sol"; /** * @title MetaRouterGateway * @notice During the `metaRoute` transaction `MetaRouter` (only) claims user's tokens * from `MetaRoutetGateway` contract and then operates with them. */ contract MetaRouterGateway { address public immutable metaRouter; modifier onlyMetarouter() { require(metaRouter == msg.sender, "Symb: caller is not the metarouter"); _; } constructor(address _metaRouter) { metaRouter = _metaRouter; } function claimTokens( address _token, address _from, uint256 _amount ) external onlyMetarouter { TransferHelper.safeTransferFrom(_token, _from, metaRouter, _amount); } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; library MetaRouteStructs { struct MetaBurnTransaction { uint256 stableBridgingFee; uint256 amount; bytes32 crossChainID; address syntCaller; address finalReceiveSide; address sToken; bytes finalCallData; uint256 finalOffset; address chain2address; address receiveSide; address oppositeBridge; address revertableAddress; uint256 chainID; bytes32 clientID; } struct MetaMintTransaction { uint256 stableBridgingFee; uint256 amount; bytes32 crossChainID; bytes32 externalID; address tokenReal; uint256 chainID; address to; address[] swapTokens; address secondDexRouter; bytes secondSwapCalldata; address finalReceiveSide; bytes finalCalldata; uint256 finalOffset; } struct MetaRouteTransaction { bytes firstSwapCalldata; bytes secondSwapCalldata; address[] approvedTokens; address firstDexRouter; address secondDexRouter; uint256 amount; bool nativeIn; address relayRecipient; bytes otherSideCalldata; } struct MetaSynthesizeTransaction { uint256 stableBridgingFee; uint256 amount; address rtoken; address chain2address; address receiveSide; address oppositeBridge; address syntCaller; uint256 chainID; address[] swapTokens; address secondDexRouter; bytes secondSwapCalldata; address finalReceiveSide; bytes finalCalldata; uint256 finalOffset; address revertableAddress; bytes32 clientID; } struct MetaRevertTransaction { uint256 stableBridgingFee; bytes32 internalID; address receiveSide; address managerChainBridge; address sourceChainBridge; uint256 managerChainId; uint256 sourceChainId; address router; bytes swapCalldata; address sourceChainSynthesis; address burnToken; bytes burnCalldata; bytes32 clientID; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; library RevertMessageParser { function getRevertMessage(bytes memory _data, string memory _defaultMessage) internal pure returns (string memory) { // If the _data length is less than 68, then the transaction failed silently (without a revert message) if (_data.length < 68) return _defaultMessage; assembly { // Slice the sighash _data := add(_data, 0x04) } return abi.decode(_data, (string)); } }
{ "optimizer": { "enabled": true, "runs": 2000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"TransitTokenSent","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_receiveSide","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"},{"internalType":"uint256","name":"_offset","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"externalCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"stableBridgingFee","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"crossChainID","type":"bytes32"},{"internalType":"bytes32","name":"externalID","type":"bytes32"},{"internalType":"address","name":"tokenReal","type":"address"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address[]","name":"swapTokens","type":"address[]"},{"internalType":"address","name":"secondDexRouter","type":"address"},{"internalType":"bytes","name":"secondSwapCalldata","type":"bytes"},{"internalType":"address","name":"finalReceiveSide","type":"address"},{"internalType":"bytes","name":"finalCalldata","type":"bytes"},{"internalType":"uint256","name":"finalOffset","type":"uint256"}],"internalType":"struct MetaRouteStructs.MetaMintTransaction","name":"_metaMintTransaction","type":"tuple"}],"name":"metaMintSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"firstSwapCalldata","type":"bytes"},{"internalType":"bytes","name":"secondSwapCalldata","type":"bytes"},{"internalType":"address[]","name":"approvedTokens","type":"address[]"},{"internalType":"address","name":"firstDexRouter","type":"address"},{"internalType":"address","name":"secondDexRouter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"nativeIn","type":"bool"},{"internalType":"address","name":"relayRecipient","type":"address"},{"internalType":"bytes","name":"otherSideCalldata","type":"bytes"}],"internalType":"struct MetaRouteStructs.MetaRouteTransaction","name":"_metarouteTransaction","type":"tuple"}],"name":"metaRoute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"metaRouterGateway","outputs":[{"internalType":"contract MetaRouterGateway","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"bytes","name":"_swapCalldata","type":"bytes"},{"internalType":"address","name":"_burnToken","type":"address"},{"internalType":"address","name":"_synthesis","type":"address"},{"internalType":"bytes","name":"_burnCalldata","type":"bytes"}],"name":"returnSwap","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b503060405161001e90610060565b6001600160a01b039091168152602001604051809103906000f08015801561004a573d6000803e3d6000fd5b5060601b6001600160601b03191660805261006d565b6104d780611db283390190565b60805160601c611cfe6100b46000396000818160c60152818161066c015281816108180152818161097801528181610cad01528181610ff401526112500152611cfe6000f3fe60806040526004361061005a5760003560e01c8063a11b119811610043578063a11b1198146100a1578063c394a5da146100b4578063f5b697a51461010457600080fd5b80633bc788351461005f578063732cffe914610081575b600080fd5b34801561006b57600080fd5b5061007f61007a366004611a40565b610124565b005b34801561008d57600080fd5b5061007f61009c366004611809565b61053a565b61007f6100af366004611a7c565b6107e7565b3480156100c057600080fd5b506100e87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b34801561011057600080fd5b5061007f61011f3660046118ca565b61119c565b600061013360e0830183611b30565b600081811061014457610144611c16565b905060200201602081019061015991906117ee565b9050610169610120830183611b7a565b1590506102ad5760008061020b61018360e0860186611b30565b600081811061019457610194611c16565b90506020020160208101906101a991906117ee565b60208601356101c0610120880161010089016117ee565b6101ce610120890189611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506024925061124a915050565b915091508161027557610253816040518060400160405280602081526020017f4d657461526f757465723a20696e7465726e616c2073776170206661696c65648152506113b0565b60405162461bcd60e51b815260040161026c9190611afd565b60405180910390fd5b61028260e0850185611b30565b600181811061029357610293611c16565b90506020020160208101906102a891906117ee565b925050505b6102bb610160830183611b7a565b15905061040357604082013560006102d7610160850185611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250608485018790526040516370a0823160e01b8152306004820152949550936001600160a01b03881693506370a082319250602401905060206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190611ab8565b90506000806103b586846103a96101608b016101408c016117ee565b878b610180013561124a565b91509150816103fd57610253816040518060400160405280601d81526020017f4d657461526f757465723a2066696e616c2063616c6c206661696c65640000008152506113b0565b50505050505b600061041260e0840184611b30565b600161042160e0870187611b30565b61042c929150611bc1565b81811061043b5761043b611c16565b905060200201602081019061045091906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b15801561049157600080fd5b505afa1580156104a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c99190611ab8565b90508015610535576105356104e160e0850185611b30565b60016104f060e0880188611b30565b6104fb929150611bc1565b81811061050a5761050a611c16565b905060200201602081019061051f91906117ee565b61052f60e0860160c087016117ee565b836113e6565b505050565b6000806105828b8b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506024925061124a915050565b91509150816105ad5761025381604051806060016040528060228152602001611c85602291396113b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a082319060240160206040518083038186803b1580156105ef57600080fd5b505afa158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190611ab8565b9050600085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506064810183905290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690881614156106e75760405162461bcd60e51b815260206004820152601f60248201527f4d657461526f7574657256323a20696e76616c696420726563697069656e7400604482015260640161026c565b863b878161074b5760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b5050600080886001600160a01b0316836040516107689190611ae1565b6000604051808303816000865af19150503d80600081146107a5576040519150601f19603f3d011682016040523d82523d6000602084013e6107aa565b606091505b5091509150816107d65761025381604051806060016040528060318152602001611c54603191396113b0565b505050505050505050505050505050565b60006107f66040830183611b30565b915061080a905060e0830160c08401611952565b6108f4576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639fc314c861084a6040850185611b30565b600081811061085b5761085b611c16565b905060200201602081019061087091906117ee565b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260a08501356044820152606401600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050505b60a08201356109038380611b7a565b159050610bed5761091a60e0840160c08501611952565b61096e5761096e61092e6040850185611b30565b600081811061093f5761093f611c16565b905060200201602081019061095491906117ee565b61096460808601606087016117ee565b8560a00135611555565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166109a860808501606086016117ee565b6001600160a01b031614156109ff5760405162461bcd60e51b815260206004820181905260248201527f4d657461526f757465723a20696e76616c696420666972737420726f75746572604482015260640161026c565b600080610a1260808601606087016117ee565b803b9250905081610a795760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b506000905080610a8f60808601606087016117ee565b6001600160a01b031634610aa38780611b7a565b604051610ab1929190611ad1565b60006040518083038185875af1925050503d8060008114610aee576040519150601f19603f3d011682016040523d82523d6000602084013e610af3565b606091505b509150915081610b3c57610253816040518060400160405280601d81526020017f4d657461526f757465723a2066697273742073776170206661696c65640000008152506113b0565b610b496040860186611b30565b6001818110610b5a57610b5a611c16565b9050602002016020810190610b6f91906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015610bb057600080fd5b505afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190611ab8565b925050505b80610bfb6020850185611b7a565b159050610f47576000610c116020860186611b7a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602481018490529050610ca3610c5e6040870187611b30565b610c69600288611bc1565b818110610c7857610c78611c16565b9050602002016020810190610c8d91906117ee565b610c9d60a08801608089016117ee565b85611555565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610cdd60a08701608088016117ee565b6001600160a01b03161415610d5a5760405162461bcd60e51b815260206004820152602160248201527f4d657461526f757465723a20696e76616c6964207365636f6e6420726f75746560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161026c565b600080610d6d60a08801608089016117ee565b803b9250905081610dd45760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b506000905080610dea60a08801608089016117ee565b6001600160a01b031683604051610e019190611ae1565b6000604051808303816000865af19150503d8060008114610e3e576040519150601f19603f3d011682016040523d82523d6000602084013e610e43565b606091505b509150915081610e8c57610253816040518060400160405280601e81526020017f4d657461526f757465723a207365636f6e642073776170206661696c656400008152506113b0565b610e996040880188611b30565b610ea4600189611bc1565b818110610eb357610eb3611c16565b9050602002016020810190610ec891906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190611ab8565b93505050505b610f9d610f576040860186611b30565b610f62600187611bc1565b818110610f7157610f71611c16565b9050602002016020810190610f8691906117ee565b610f97610100870160e088016117ee565b83611555565b6000610fad610100860186611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506064810183905290506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016611025610100870160e088016117ee565b6001600160a01b0316141561107c5760405162461bcd60e51b815260206004820152601d60248201527f4d657461526f757465723a20696e76616c696420726563697069656e74000000604482015260640161026c565b600080611090610100880160e089016117ee565b803b92509050816110f75760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b50600090508061110e610100880160e089016117ee565b6001600160a01b0316836040516111259190611ae1565b6000604051808303816000865af19150503d8060008114611162576040519150601f19603f3d011682016040523d82523d6000602084013e611167565b606091505b5091509150816111935761025381604051806060016040528060228152602001611ca7602291396113b0565b50505050505050565b60006111e288888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061124a915050565b50905080611240576111f58883896113e6565b604080516001600160a01b038481168252602082018a90528a168183015290517f0ac368c799fd87078497a837c3b184349108599d7c108f68710d3321ba416c6f9181900360600190a15b5050505050505050565b600060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156112d05760405162461bcd60e51b815260206004820152601f60248201527f4d657461526f757465723a20696e76616c696420726563656976655369646500604482015260640161026c565b6112db878688611555565b838301869052843b85816113455760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b5050846001600160a01b03168460405161135f9190611ae1565b6000604051808303816000865af19150503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b50909890975095505050505050565b60606044835110156113c35750806113e0565b600483019250828060200190518101906113dd9190611993565b90505b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916114709190611ae1565b6000604051808303816000865af19150503d80600081146114ad576040519150601f19603f3d011682016040523d82523d6000602084013e6114b2565b606091505b50915091508180156114dc5750805115806114dc5750808060200190518101906114dc9190611976565b61154e5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161026c565b5050505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015282919085169063dd62ed3e9060440160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190611ab8565b101561053557604080516001600160a01b0380851660248301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604480840182905284518085039091018152606490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529251610535938793879391926000928392908716916116ab9190611ae1565b6000604051808303816000865af19150503d80600081146116e8576040519150601f19603f3d011682016040523d82523d6000602084013e6116ed565b606091505b50915091508180156117175750805115806117175750808060200190518101906117179190611976565b61154e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161026c565b80356001600160a01b03811681146117a057600080fd5b919050565b60008083601f8401126117b757600080fd5b50813567ffffffffffffffff8111156117cf57600080fd5b6020830191508360208285010111156117e757600080fd5b9250929050565b60006020828403121561180057600080fd5b6113dd82611789565b600080600080600080600080600060e08a8c03121561182757600080fd5b6118308a611789565b985060208a0135975061184560408b01611789565b965060608a013567ffffffffffffffff8082111561186257600080fd5b61186e8d838e016117a5565b909850965086915061188260808d01611789565b955061189060a08d01611789565b945060c08c01359150808211156118a657600080fd5b506118b38c828d016117a5565b915080935050809150509295985092959850929598565b600080600080600080600060c0888a0312156118e557600080fd5b6118ee88611789565b96506020880135955061190360408901611789565b9450606088013567ffffffffffffffff81111561191f57600080fd5b61192b8a828b016117a5565b9095509350506080880135915061194460a08901611789565b905092959891949750929550565b60006020828403121561196457600080fd5b813561196f81611c42565b9392505050565b60006020828403121561198857600080fd5b815161196f81611c42565b6000602082840312156119a557600080fd5b815167ffffffffffffffff808211156119bd57600080fd5b818401915084601f8301126119d157600080fd5b8151818111156119e3576119e3611c2c565b604051601f8201601f19908116603f01168101908382118183101715611a0b57611a0b611c2c565b81604052828152876020848701011115611a2457600080fd5b611a35836020830160208801611be6565b979650505050505050565b600060208284031215611a5257600080fd5b813567ffffffffffffffff811115611a6957600080fd5b82016101a0818503121561196f57600080fd5b600060208284031215611a8e57600080fd5b813567ffffffffffffffff811115611aa557600080fd5b8201610120818503121561196f57600080fd5b600060208284031215611aca57600080fd5b5051919050565b8183823760009101908152919050565b60008251611af3818460208701611be6565b9190910192915050565b6020815260008251806020840152611b1c816040850160208701611be6565b601f01601f19169190910160400192915050565b6000808335601e19843603018112611b4757600080fd5b83018035915067ffffffffffffffff821115611b6257600080fd5b6020019150600581901b36038213156117e757600080fd5b6000808335601e19843603018112611b9157600080fd5b83018035915067ffffffffffffffff821115611bac57600080fd5b6020019150368190038213156117e757600080fd5b600082821015611be157634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015611c01578181015183820152602001611be9565b83811115611c10576000848401525b50505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611c5057600080fd5b5056fe4d657461526f7574657256323a2072657665727453796e74686573697a65526571756573742063616c6c206661696c65644d657461526f7574657256323a20696e7465726e616c2073776170206661696c65644d657461526f757465723a206f7468657220736964652063616c6c206661696c6564a26469706673582212205589175da52e6bd4ff183673aa898b78db22aab72465807e5f1dcddff88e0d1564736f6c6343000807003360a060405234801561001057600080fd5b506040516104d73803806104d783398101604081905261002f91610044565b60601b6001600160601b031916608052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160601c61043961009e6000396000818160550152818160a2015261017101526104396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639fc314c81461003b578063dbec15bb14610050575b600080fd5b61004e610049366004610363565b6100a0565b005b6100777f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f53796d623a2063616c6c6572206973206e6f7420746865206d657461726f757460448201527f657200000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61019683837f00000000000000000000000000000000000000000000000000000000000000008461019b565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161023a91906103c8565b6000604051808303816000865af19150503d8060008114610277576040519150601f19603f3d011682016040523d82523d6000602084013e61027c565b606091505b50915091508180156102a65750805115806102a65750808060200190518101906102a6919061039f565b610332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610161565b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461035e57600080fd5b919050565b60008060006060848603121561037857600080fd5b6103818461033a565b925061038f6020850161033a565b9150604084013590509250925092565b6000602082840312156103b157600080fd5b815180151581146103c157600080fd5b9392505050565b6000825160005b818110156103e957602081860181015185830152016103cf565b818111156103f8576000828501525b50919091019291505056fea26469706673582212202568575dd38d51c811ca9abb487d12cf7f92601b834f2b8dba043bc452c3f35164736f6c63430008070033
Deployed Bytecode
0x60806040526004361061005a5760003560e01c8063a11b119811610043578063a11b1198146100a1578063c394a5da146100b4578063f5b697a51461010457600080fd5b80633bc788351461005f578063732cffe914610081575b600080fd5b34801561006b57600080fd5b5061007f61007a366004611a40565b610124565b005b34801561008d57600080fd5b5061007f61009c366004611809565b61053a565b61007f6100af366004611a7c565b6107e7565b3480156100c057600080fd5b506100e87f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd81565b6040516001600160a01b03909116815260200160405180910390f35b34801561011057600080fd5b5061007f61011f3660046118ca565b61119c565b600061013360e0830183611b30565b600081811061014457610144611c16565b905060200201602081019061015991906117ee565b9050610169610120830183611b7a565b1590506102ad5760008061020b61018360e0860186611b30565b600081811061019457610194611c16565b90506020020160208101906101a991906117ee565b60208601356101c0610120880161010089016117ee565b6101ce610120890189611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506024925061124a915050565b915091508161027557610253816040518060400160405280602081526020017f4d657461526f757465723a20696e7465726e616c2073776170206661696c65648152506113b0565b60405162461bcd60e51b815260040161026c9190611afd565b60405180910390fd5b61028260e0850185611b30565b600181811061029357610293611c16565b90506020020160208101906102a891906117ee565b925050505b6102bb610160830183611b7a565b15905061040357604082013560006102d7610160850185611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250608485018790526040516370a0823160e01b8152306004820152949550936001600160a01b03881693506370a082319250602401905060206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190611ab8565b90506000806103b586846103a96101608b016101408c016117ee565b878b610180013561124a565b91509150816103fd57610253816040518060400160405280601d81526020017f4d657461526f757465723a2066696e616c2063616c6c206661696c65640000008152506113b0565b50505050505b600061041260e0840184611b30565b600161042160e0870187611b30565b61042c929150611bc1565b81811061043b5761043b611c16565b905060200201602081019061045091906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b15801561049157600080fd5b505afa1580156104a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c99190611ab8565b90508015610535576105356104e160e0850185611b30565b60016104f060e0880188611b30565b6104fb929150611bc1565b81811061050a5761050a611c16565b905060200201602081019061051f91906117ee565b61052f60e0860160c087016117ee565b836113e6565b505050565b6000806105828b8b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506024925061124a915050565b91509150816105ad5761025381604051806060016040528060228152602001611c85602291396113b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a082319060240160206040518083038186803b1580156105ef57600080fd5b505afa158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190611ab8565b9050600085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506064810183905290507f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd6001600160a01b0390811690881614156106e75760405162461bcd60e51b815260206004820152601f60248201527f4d657461526f7574657256323a20696e76616c696420726563697069656e7400604482015260640161026c565b863b878161074b5760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b5050600080886001600160a01b0316836040516107689190611ae1565b6000604051808303816000865af19150503d80600081146107a5576040519150601f19603f3d011682016040523d82523d6000602084013e6107aa565b606091505b5091509150816107d65761025381604051806060016040528060318152602001611c54603191396113b0565b505050505050505050505050505050565b60006107f66040830183611b30565b915061080a905060e0830160c08401611952565b6108f4576001600160a01b037f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd16639fc314c861084a6040850185611b30565b600081811061085b5761085b611c16565b905060200201602081019061087091906117ee565b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260a08501356044820152606401600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050505b60a08201356109038380611b7a565b159050610bed5761091a60e0840160c08501611952565b61096e5761096e61092e6040850185611b30565b600081811061093f5761093f611c16565b905060200201602081019061095491906117ee565b61096460808601606087016117ee565b8560a00135611555565b6001600160a01b037f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd166109a860808501606086016117ee565b6001600160a01b031614156109ff5760405162461bcd60e51b815260206004820181905260248201527f4d657461526f757465723a20696e76616c696420666972737420726f75746572604482015260640161026c565b600080610a1260808601606087016117ee565b803b9250905081610a795760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b506000905080610a8f60808601606087016117ee565b6001600160a01b031634610aa38780611b7a565b604051610ab1929190611ad1565b60006040518083038185875af1925050503d8060008114610aee576040519150601f19603f3d011682016040523d82523d6000602084013e610af3565b606091505b509150915081610b3c57610253816040518060400160405280601d81526020017f4d657461526f757465723a2066697273742073776170206661696c65640000008152506113b0565b610b496040860186611b30565b6001818110610b5a57610b5a611c16565b9050602002016020810190610b6f91906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015610bb057600080fd5b505afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190611ab8565b925050505b80610bfb6020850185611b7a565b159050610f47576000610c116020860186611b7a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602481018490529050610ca3610c5e6040870187611b30565b610c69600288611bc1565b818110610c7857610c78611c16565b9050602002016020810190610c8d91906117ee565b610c9d60a08801608089016117ee565b85611555565b6001600160a01b037f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd16610cdd60a08701608088016117ee565b6001600160a01b03161415610d5a5760405162461bcd60e51b815260206004820152602160248201527f4d657461526f757465723a20696e76616c6964207365636f6e6420726f75746560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161026c565b600080610d6d60a08801608089016117ee565b803b9250905081610dd45760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b506000905080610dea60a08801608089016117ee565b6001600160a01b031683604051610e019190611ae1565b6000604051808303816000865af19150503d8060008114610e3e576040519150601f19603f3d011682016040523d82523d6000602084013e610e43565b606091505b509150915081610e8c57610253816040518060400160405280601e81526020017f4d657461526f757465723a207365636f6e642073776170206661696c656400008152506113b0565b610e996040880188611b30565b610ea4600189611bc1565b818110610eb357610eb3611c16565b9050602002016020810190610ec891906117ee565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190611ab8565b93505050505b610f9d610f576040860186611b30565b610f62600187611bc1565b818110610f7157610f71611c16565b9050602002016020810190610f8691906117ee565b610f97610100870160e088016117ee565b83611555565b6000610fad610100860186611b7a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506064810183905290506001600160a01b037f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd16611025610100870160e088016117ee565b6001600160a01b0316141561107c5760405162461bcd60e51b815260206004820152601d60248201527f4d657461526f757465723a20696e76616c696420726563697069656e74000000604482015260640161026c565b600080611090610100880160e089016117ee565b803b92509050816110f75760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b50600090508061110e610100880160e089016117ee565b6001600160a01b0316836040516111259190611ae1565b6000604051808303816000865af19150503d8060008114611162576040519150601f19603f3d011682016040523d82523d6000602084013e611167565b606091505b5091509150816111935761025381604051806060016040528060228152602001611ca7602291396113b0565b50505050505050565b60006111e288888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061124a915050565b50905080611240576111f58883896113e6565b604080516001600160a01b038481168252602082018a90528a168183015290517f0ac368c799fd87078497a837c3b184349108599d7c108f68710d3321ba416c6f9181900360600190a15b5050505050505050565b600060607f000000000000000000000000fcef2fe72413b65d3f393d278a714cad87512bcd6001600160a01b0316856001600160a01b031614156112d05760405162461bcd60e51b815260206004820152601f60248201527f4d657461526f757465723a20696e76616c696420726563656976655369646500604482015260640161026c565b6112db878688611555565b838301869052843b85816113455760405162461bcd60e51b815260206004820152602b60248201527f4d657461526f757465723a2063616c6c20666f722061206e6f6e2d636f6e747260448201526a1858dd081858d8dbdd5b9d60aa1b606482015260840161026c565b5050846001600160a01b03168460405161135f9190611ae1565b6000604051808303816000865af19150503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b50909890975095505050505050565b60606044835110156113c35750806113e0565b600483019250828060200190518101906113dd9190611993565b90505b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916114709190611ae1565b6000604051808303816000865af19150503d80600081146114ad576040519150601f19603f3d011682016040523d82523d6000602084013e6114b2565b606091505b50915091508180156114dc5750805115806114dc5750808060200190518101906114dc9190611976565b61154e5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161026c565b5050505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015282919085169063dd62ed3e9060440160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190611ab8565b101561053557604080516001600160a01b0380851660248301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604480840182905284518085039091018152606490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529251610535938793879391926000928392908716916116ab9190611ae1565b6000604051808303816000865af19150503d80600081146116e8576040519150601f19603f3d011682016040523d82523d6000602084013e6116ed565b606091505b50915091508180156117175750805115806117175750808060200190518101906117179190611976565b61154e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161026c565b80356001600160a01b03811681146117a057600080fd5b919050565b60008083601f8401126117b757600080fd5b50813567ffffffffffffffff8111156117cf57600080fd5b6020830191508360208285010111156117e757600080fd5b9250929050565b60006020828403121561180057600080fd5b6113dd82611789565b600080600080600080600080600060e08a8c03121561182757600080fd5b6118308a611789565b985060208a0135975061184560408b01611789565b965060608a013567ffffffffffffffff8082111561186257600080fd5b61186e8d838e016117a5565b909850965086915061188260808d01611789565b955061189060a08d01611789565b945060c08c01359150808211156118a657600080fd5b506118b38c828d016117a5565b915080935050809150509295985092959850929598565b600080600080600080600060c0888a0312156118e557600080fd5b6118ee88611789565b96506020880135955061190360408901611789565b9450606088013567ffffffffffffffff81111561191f57600080fd5b61192b8a828b016117a5565b9095509350506080880135915061194460a08901611789565b905092959891949750929550565b60006020828403121561196457600080fd5b813561196f81611c42565b9392505050565b60006020828403121561198857600080fd5b815161196f81611c42565b6000602082840312156119a557600080fd5b815167ffffffffffffffff808211156119bd57600080fd5b818401915084601f8301126119d157600080fd5b8151818111156119e3576119e3611c2c565b604051601f8201601f19908116603f01168101908382118183101715611a0b57611a0b611c2c565b81604052828152876020848701011115611a2457600080fd5b611a35836020830160208801611be6565b979650505050505050565b600060208284031215611a5257600080fd5b813567ffffffffffffffff811115611a6957600080fd5b82016101a0818503121561196f57600080fd5b600060208284031215611a8e57600080fd5b813567ffffffffffffffff811115611aa557600080fd5b8201610120818503121561196f57600080fd5b600060208284031215611aca57600080fd5b5051919050565b8183823760009101908152919050565b60008251611af3818460208701611be6565b9190910192915050565b6020815260008251806020840152611b1c816040850160208701611be6565b601f01601f19169190910160400192915050565b6000808335601e19843603018112611b4757600080fd5b83018035915067ffffffffffffffff821115611b6257600080fd5b6020019150600581901b36038213156117e757600080fd5b6000808335601e19843603018112611b9157600080fd5b83018035915067ffffffffffffffff821115611bac57600080fd5b6020019150368190038213156117e757600080fd5b600082821015611be157634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015611c01578181015183820152602001611be9565b83811115611c10576000848401525b50505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611c5057600080fd5b5056fe4d657461526f7574657256323a2072657665727453796e74686573697a65526571756573742063616c6c206661696c65644d657461526f7574657256323a20696e7465726e616c2073776170206661696c65644d657461526f757465723a206f7468657220736964652063616c6c206661696c6564a26469706673582212205589175da52e6bd4ff183673aa898b78db22aab72465807e5f1dcddff88e0d1564736f6c63430008070033
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.