Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,300 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute | 21272218 | 42 days ago | IN | 0 ETH | 0.00228227 | ||||
Execute | 21272217 | 42 days ago | IN | 0 ETH | 0.00236135 | ||||
Execute | 21272217 | 42 days ago | IN | 0 ETH | 0.00248667 | ||||
Execute | 21272216 | 42 days ago | IN | 0 ETH | 0.00255206 | ||||
Execute | 21272216 | 42 days ago | IN | 0 ETH | 0.0025579 | ||||
Execute | 21272215 | 42 days ago | IN | 0 ETH | 0.00254408 | ||||
Execute | 21272215 | 42 days ago | IN | 0 ETH | 0.00250103 | ||||
Execute | 21272214 | 42 days ago | IN | 0 ETH | 0.00245201 | ||||
Execute | 21272214 | 42 days ago | IN | 0 ETH | 0.00305055 | ||||
Execute | 21272213 | 42 days ago | IN | 0 ETH | 0.0026321 | ||||
Execute | 21272213 | 42 days ago | IN | 0 ETH | 0.00268991 | ||||
Execute | 21272212 | 42 days ago | IN | 0 ETH | 0.0026898 | ||||
Execute | 21272212 | 42 days ago | IN | 0 ETH | 0.00269187 | ||||
Execute | 21272211 | 42 days ago | IN | 0 ETH | 0.00254491 | ||||
Execute | 21272211 | 42 days ago | IN | 0 ETH | 0.00255457 | ||||
Execute | 21272183 | 42 days ago | IN | 0 ETH | 0.00332629 | ||||
Execute | 20039496 | 214 days ago | IN | 0 ETH | 0.0011792 | ||||
Execute | 18283849 | 460 days ago | IN | 0 ETH | 0.00249016 | ||||
Execute | 18283849 | 460 days ago | IN | 0 ETH | 0.00249079 | ||||
Execute | 18283845 | 460 days ago | IN | 0 ETH | 0.00256845 | ||||
Execute | 18283845 | 460 days ago | IN | 0 ETH | 0.00256864 | ||||
Execute | 18283844 | 460 days ago | IN | 0 ETH | 0.00241028 | ||||
Execute | 18283844 | 460 days ago | IN | 0 ETH | 0.00241009 | ||||
Execute | 18283844 | 460 days ago | IN | 0 ETH | 0.00250053 | ||||
Execute | 18283844 | 460 days ago | IN | 0 ETH | 0.00250068 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CNSRegistryForwarder
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// @author Unstoppable Domains, Inc. // @date August 12th, 2021 pragma solidity ^0.8.0; import './IForwarder.sol'; import './BaseRoutingForwarder.sol'; /** * @title CNSRegistryForwarder * @dev CNSRegistryForwarder simplifies operation with legacy meta-transactions. * It works on top of existing SignatureController contract. */ contract CNSRegistryForwarder is BaseRoutingForwarder { IForwarder private _target; constructor(IForwarder target) { _target = target; _addRoute('transferFrom(address,address,uint256)', 'transferFromFor(address,address,uint256,bytes)'); _addRoute('safeTransferFrom(address,address,uint256)', 'safeTransferFromFor(address,address,uint256,bytes)'); _addRoute( 'safeTransferFrom(address,address,uint256,bytes)', 'safeTransferFromFor(address,address,uint256,bytes,bytes)' ); _addRoute('burn(uint256)', 'burnFor(uint256,bytes)'); _addRoute('mintChild(address,uint256,string)', 'mintChildFor(address,uint256,string,bytes)'); _addRoute('safeMintChild(address,uint256,string)', 'safeMintChildFor(address,uint256,string,bytes)'); _addRoute( 'safeMintChild(address,uint256,string,bytes)', 'safeMintChildFor(address,uint256,string,bytes,bytes)' ); _addRoute( 'transferFromChild(address,address,uint256,string)', 'transferFromChildFor(address,address,uint256,string,bytes)' ); _addRoute( 'safeTransferFromChild(address,address,uint256,string)', 'safeTransferFromChildFor(address,address,uint256,string,bytes)' ); _addRoute( 'safeTransferFromChild(address,address,uint256,string,bytes)', 'safeTransferFromChildFor(address,address,uint256,string,bytes,bytes)' ); _addRoute('burnChild(uint256,string)', 'burnChildFor(uint256,string,bytes)'); _addRoute('resolveTo(address,uint256)', 'resolveToFor(address,uint256,bytes)'); } function nonceOf(uint256 tokenId) public view override returns (uint256) { return _target.nonceOf(tokenId); } function verify(ForwardRequest calldata req, bytes calldata signature) external view override returns (bool) { return _verify(req, address(_target), signature); } function execute(ForwardRequest calldata req, bytes calldata signature) external override returns (bytes memory) { uint256 gas = gasleft(); return _execute(req.from, address(_target), req.tokenId, gas, req.data, signature); } /** * 0xef2c3088 = bytes4(keccak256('transferFromFor(address,address,uint256,bytes)')) * 0x6debcb8d = bytes4(keccak256('safeTransferFromFor(address,address,uint256,bytes)')) * 0x280d9b05 = bytes4(keccak256('safeTransferFromFor(address,address,uint256,bytes,bytes)')) * 0x61603dd9 = bytes4(keccak256('burnFor(uint256,bytes)')) * 0xb34f33c5 = bytes4(keccak256('mintChildFor(address,uint256,string,bytes)')) * 0x30135293 = bytes4(keccak256('safeMintChildFor(address,uint256,string,bytes)')) * 0x07eca395 = bytes4(keccak256('safeMintChildFor(address,uint256,string,bytes,bytes)')) * 0x68b6154f = bytes4(keccak256('transferFromChildFor(address,address,uint256,string,bytes)')) * 0xd0778d6c = bytes4(keccak256('safeTransferFromChildFor(address,address,uint256,string,bytes)')) * 0xf5090c1e = bytes4(keccak256('safeTransferFromChildFor(address,address,uint256,string,bytes,bytes)')) * 0x6fab95b3 = bytes4(keccak256('burnChildFor(uint256,string,bytes)')) * 0x511f1112 = bytes4(keccak256('resolveToFor(address,uint256,bytes)')) */ function _buildRouteData( bytes4 selector, bytes memory data, bytes memory signature ) internal pure override returns (bytes memory) { if(selector == 0xef2c3088) { (address p1, address p2, uint256 p3) = abi.decode(data, (address, address, uint256)); return abi.encodeWithSelector(selector, p1, p2, p3, signature); } else if(selector == 0x6debcb8d) { (address p1, address p2, uint256 p3) = abi.decode(data, (address, address, uint256)); return abi.encodeWithSelector(selector, p1, p2, p3, signature); } else if(selector == 0x280d9b05) { (address p1, address p2, uint256 p3, bytes memory p4) = abi.decode(data, (address, address, uint256, bytes)); return abi.encodeWithSelector(selector, p1, p2, p3, p4, signature); } else if(selector == 0x61603dd9) { (uint256 p1) = abi.decode(data, (uint256)); return abi.encodeWithSelector(selector, p1, signature); } else if(selector == 0xb34f33c5) { (address p1, uint256 p2, string memory p3) = abi.decode(data, (address, uint256, string)); return abi.encodeWithSelector(selector, p1, p2, p3, signature); } else if(selector == 0x30135293) { (address p1, uint256 p2, string memory p3) = abi.decode(data, (address, uint256, string)); return abi.encodeWithSelector(selector, p1, p2, p3, signature); } else if(selector == 0x07eca395) { (address p1, uint256 p2, string memory p3, bytes memory p4) = abi.decode(data, (address, uint256, string, bytes)); return abi.encodeWithSelector(selector, p1, p2, p3, p4, signature); } else if(selector == 0x68b6154f) { (address p1, address p2, uint256 p3, string memory p4) = abi.decode(data, (address, address, uint256, string)); return abi.encodeWithSelector(selector, p1, p2, p3, p4, signature); } else if(selector == 0xd0778d6c) { (address p1, address p2, uint256 p3, string memory p4) = abi.decode(data, (address, address, uint256, string)); return abi.encodeWithSelector(selector, p1, p2, p3, p4, signature); } else if(selector == 0xf5090c1e) { (address p1, address p2, uint256 p3, string memory p4, bytes memory p5) = abi.decode(data, (address, address, uint256, string, bytes)); return abi.encodeWithSelector(selector, p1, p2, p3, p4, p5, signature); } else if(selector == 0x6fab95b3) { (uint256 p1, string memory p2) = abi.decode(data, (uint256, string)); return abi.encodeWithSelector(selector, p1, p2, signature); } else if(selector == 0x511f1112) { (address p1, uint256 p2) = abi.decode(data, (address, uint256)); return abi.encodeWithSelector(selector, p1, p2, signature); } return ''; } }
// @author Unstoppable Domains, Inc. // @date August 11th, 2021 pragma solidity ^0.8.0; interface IForwarder { struct ForwardRequest { address from; uint256 nonce; uint256 tokenId; bytes data; } function nonceOf(uint256 tokenId) external view returns (uint256); function verify(ForwardRequest calldata req, bytes calldata signature) external view returns (bool); function execute(ForwardRequest calldata req, bytes calldata signature) external returns (bytes memory); }
// @author Unstoppable Domains, Inc. // @date August 12th, 2021 pragma solidity ^0.8.0; import '@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol'; import './IForwarder.sol'; import './BaseForwarder.sol'; /** * @title BaseRoutingForwarder * @dev BaseRoutingForwarder simplifies operation with legacy meta-transactions by routing calls */ abstract contract BaseRoutingForwarder is BaseForwarder { mapping(bytes4 => bytes4) private _routes; function _buildRouteData( bytes4 selector, bytes memory data, bytes memory signature ) internal view virtual returns (bytes memory); function _verify( ForwardRequest memory req, address target, bytes memory signature ) internal view override returns (bool) { return super._verify(req, target, signature) && _isKnownRoute(req.data); } function _buildData( address, /* from */ uint256, /* tokenId */ bytes memory data, bytes memory signature ) internal view override returns (bytes memory) { bytes4 route = _getRoute(data); require(route != 0, 'BaseRoutingForwarder: ROUTE_UNKNOWN'); bytes memory _data; assembly { _data := add(data, 4) mstore(_data, sub(mload(data), 4)) } return _buildRouteData(route, _data, signature); } function _addRoute(bytes memory from, bytes memory to) internal { _routes[bytes4(keccak256(from))] = bytes4(keccak256(to)); } function _getRoute(bytes memory data) internal view returns (bytes4) { bytes4 selector; /* solium-disable-next-line security/no-inline-assembly */ assembly { selector := mload(add(data, add(0x20, 0))) } return _routes[selector]; } function _isKnownRoute(bytes memory data) internal view returns (bool) { bytes4 route = _getRoute(data); return route != 0; } }
// SPDX-License-Identifier: MIT // solhint-disable-next-line compiler-version pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } }
// @author Unstoppable Domains, Inc. // @date August 12th, 2021 pragma solidity ^0.8.0; import '@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol'; import './IForwarder.sol'; abstract contract BaseForwarder is IForwarder { using ECDSAUpgradeable for bytes32; function _verify( ForwardRequest memory req, address target, bytes memory signature ) internal view virtual returns (bool) { uint256 nonce = this.nonceOf(req.tokenId); address signer = _recover(keccak256(req.data), target, nonce, signature); return nonce == req.nonce && signer == req.from; } function _recover( bytes32 digest, address target, uint256 nonce, bytes memory signature ) internal pure virtual returns (address signer) { return keccak256(abi.encodePacked(digest, target, nonce)).toEthSignedMessageHash().recover(signature); } function _execute( address from, address to, uint256 tokenId, uint256 gas, bytes memory data, bytes memory signature ) internal virtual returns (bytes memory) { _invalidateNonce(tokenId); (bool success, bytes memory returndata) = to.call{gas: gas}(_buildData(from, tokenId, data, signature)); // Validate that the relayer has sent enough gas for the call. // See https://ronan.eth.link/blog/ethereum-gas-dangers/ assert(gasleft() > gas / 63); return _verifyCallResult(success, returndata, 'BaseForwarder: CALL_FAILED'); } function _invalidateNonce( uint256 /* tokenId */ ) internal virtual {} function _buildData( address from, uint256 tokenId, bytes memory data, bytes memory /* signature */ ) internal view virtual returns (bytes memory) { return abi.encodePacked(data, from, tokenId); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly //solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSAUpgradeable { /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } } else if (signature.length == 64) { // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { let vs := mload(add(signature, 0x40)) r := mload(add(signature, 0x20)) s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } } else { revert("ECDSA: invalid signature length"); } return recover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value"); require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value"); // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); require(signer != address(0), "ECDSA: invalid signature"); return signer; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IForwarder","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"nonceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001cc938038062001cc98339810160408190526200003491620003e4565b600180546001600160a01b0319166001600160a01b038316179055604080516060810190915260258082526200008e91906200194960208301396040518060600160405280602e815260200162001c57602e9139620003a5565b620000cc604051806060016040528060298152602001620019d46029913960405180606001604052806032815260200162001a5a60329139620003a5565b6200010a6040518060600160405280602f815260200162001b63602f91396040518060600160405280603881526020016200196e60389139620003a5565b620001766040518060400160405280600d81526020016c6275726e2875696e743235362960981b8152506040518060400160405280601681526020017f6275726e466f722875696e743235362c62797465732900000000000000000000815250620003a560201b60201c565b620001b460405180606001604052806021815260200162001c36602191396040518060600160405280602a815260200162001b39602a9139620003a5565b620001f260405180606001604052806025815260200162001aae602591396040518060600160405280602e8152602001620019a6602e9139620003a5565b620002306040518060600160405280602b815260200162001bcd602b91396040518060600160405280603481526020016200191560349139620003a5565b6200026e60405180606001604052806031815260200162001b08603191396040518060600160405280603a815260200162001a20603a9139620003a5565b620002ac60405180606001604052806035815260200162001ad3603591396040518060600160405280603e815260200162001bf8603e9139620003a5565b620002ea6040518060600160405280603b815260200162001b92603b913960405180608001604052806044815260200162001c8560449139620003a5565b620003446040518060400160405280601981526020017f6275726e4368696c642875696e743235362c737472696e67290000000000000081525060405180606001604052806022815260200162001a8c60229139620003a5565b6200039e6040518060400160405280601a81526020017f7265736f6c7665546f28616464726573732c75696e7432353629000000000000815250604051806060016040528060238152602001620019fd60239139620003a5565b5062000414565b80516020918201208251928201929092206001600160e01b03191660009081529081905260409020805463ffffffff191660e09290921c919091179055565b600060208284031215620003f6578081fd5b81516001600160a01b03811681146200040d578182fd5b9392505050565b6114f180620004246000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631bf7e13e146100465780636ccbae5f1461006f578063a42474001461008f575b600080fd5b610059610054366004610e15565b6100af565b6040516100669190611176565b60405180910390f35b61008261007d366004610ead565b61015e565b60405161006691906112be565b6100a261009d366004610e15565b6101e5565b604051610066919061114d565b606060005a90506101536100c66020870187610bad565b6001546001600160a01b03166040880135846100e560608b018b61130b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525061024492505050565b9150505b9392505050565b600154604051636ccbae5f60e01b81526000916001600160a01b031690636ccbae5f9061018f9085906004016112be565b60206040518083038186803b1580156101a757600080fd5b505afa1580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610ec5565b92915050565b600061023c6101f3856113c9565b600154604080516020601f88018190048102820181019092528681526001600160a01b039092169190879087908190840183828082843760009201919091525061033392505050565b949350505050565b606061024f85610354565b600080876001600160a01b0316866102698b8a8989610357565b6040516102769190610f76565b60006040518083038160008787f1925050503d80600081146102b4576040519150601f19603f3d011682016040523d82523d6000602084013e6102b9565b606091505b5090925090506102ca603f876113a9565b5a116102e657634e487b7160e01b600052600160045260246000fd5b61032682826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c45440000000000008152506103b9565b9998505050505050505050565b60006103408484846103f2565b801561023c575061023c84606001516104b4565b50565b60606000610364846104d3565b90506001600160e01b031981166103965760405162461bcd60e51b815260040161038d90611239565b60405180910390fd5b835160031901600485019081526103ae8282866104f7565b979650505050505050565b606083156103c8575081610157565b8251156103d85782518084602001fd5b8160405162461bcd60e51b815260040161038d9190611176565b6040808401519051636ccbae5f60e01b815260009182913091636ccbae5f9161041e91906004016112be565b60206040518083038186803b15801561043657600080fd5b505afa15801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e9190610ec5565b90506000610489866060015180519060200120868487610989565b90508560200151821480156104aa575085516001600160a01b038281169116145b9695505050505050565b6000806104c0836104d3565b6001600160e01b03191615159392505050565b6020908101516001600160e01b031916600090815290819052604090205460e01b90565b6060631de5861160e31b6001600160e01b0319851614156105865760008060008580602001905181019061052b9190610bc9565b92509250925086838383886040516024016105499493929190610fc3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152935061015792505050565b636debcb8d60e01b6001600160e01b0319851614156105b85760008060008580602001905181019061052b9190610bc9565b63280d9b0560e01b6001600160e01b03198516141561064b57600080600080868060200190518101906105eb9190610c0b565b935093509350935087848484848a60405160240161060d959493929190610ff6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915294506101579350505050565b6361603dd960e01b6001600160e01b0319851614156106cb5760008380602001905181019061067a9190610ec5565b90508481846040516024016106909291906112c7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915291506101579050565b63b34f33c560e01b6001600160e01b03198516141561071b576000806000858060200190518101906106fd9190610d4b565b925092509250868383838860405160240161054994939291906110c7565b633013529360e01b6001600160e01b03198516141561074d576000806000858060200190518101906106fd9190610d4b565b6307eca39560e01b6001600160e01b0319851614156107a257600080600080868060200190518101906107809190610da3565b935093509350935087848484848a60405160240161060d959493929190611100565b6368b6154f60e01b6001600160e01b0319851614156107d557600080600080868060200190518101906105eb9190610c77565b63341de35b60e21b6001600160e01b03198516141561080857600080600080868060200190518101906105eb9190610c77565b637a84860f60e11b6001600160e01b0319851614156108a25760008060008060008780602001905181019061083d9190610c8c565b945094509450945094508885858585858c60405160240161086396959493929190611047565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610157945050505050565b636fab95b360e01b6001600160e01b03198516141561092857600080848060200190518101906108d29190610edd565b91509150858282866040516024016108ec939291906112e0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610157915050565b63288f888960e11b6001600160e01b03198516141561097257600080848060200190518101906109589190610d1e565b91509150858282866040516024016108ec939291906110a0565b506040805160208101909152600081529392505050565b60006109c8826109c28787876040516020016109a793929190610f4e565b604051602081830303815290604052805190602001206109d1565b90610a01565b95945050505050565b6000816040516020016109e49190610f92565b604051602081830303815290604052805190602001209050919050565b600080600080845160411415610a2b5750505060208201516040830151606084015160001a610a71565b845160401415610a595750505060408201516020830151906001600160ff1b0381169060ff1c601b01610a71565b60405162461bcd60e51b815260040161038d906111c0565b6104aa8682858560007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610aba5760405162461bcd60e51b815260040161038d906111f7565b8360ff16601b1480610acf57508360ff16601c145b610aeb5760405162461bcd60e51b815260040161038d9061127c565b600060018686868660405160008152602001604052604051610b109493929190611158565b6020604051602081039080840390855afa158015610b32573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109c85760405162461bcd60e51b815260040161038d90611189565b600082601f830112610b75578081fd5b8151610b88610b8382611381565b611357565b818152846020838601011115610b9c578283fd5b61023c826020830160208701611489565b600060208284031215610bbe578081fd5b8135610157816114cf565b600080600060608486031215610bdd578182fd5b8351610be8816114cf565b6020850151909350610bf9816114cf565b80925050604084015190509250925092565b60008060008060808587031215610c20578081fd5b8451610c2b816114cf565b6020860151909450610c3c816114cf565b60408601516060870151919450925067ffffffffffffffff811115610c5f578182fd5b610c6b87828801610b65565b91505092959194509250565b60008060008060808587031215610c20578384fd5b600080600080600060a08688031215610ca3578081fd5b8551610cae816114cf565b6020870151909550610cbf816114cf565b60408701516060880151919550935067ffffffffffffffff80821115610ce3578283fd5b610cef89838a01610b65565b93506080880151915080821115610d04578283fd5b50610d1188828901610b65565b9150509295509295909350565b60008060408385031215610d30578182fd5b8251610d3b816114cf565b6020939093015192949293505050565b600080600060608486031215610d5f578283fd5b8351610d6a816114cf565b60208501516040860151919450925067ffffffffffffffff811115610d8d578182fd5b610d9986828701610b65565b9150509250925092565b60008060008060808587031215610db8578182fd5b8451610dc3816114cf565b60208601516040870151919550935067ffffffffffffffff80821115610de7578384fd5b610df388838901610b65565b93506060870151915080821115610e08578283fd5b50610c6b87828801610b65565b600080600060408486031215610e29578081fd5b833567ffffffffffffffff80821115610e40578283fd5b9085019060808288031215610e53578283fd5b90935060208501359080821115610e68578283fd5b818601915086601f830112610e7b578283fd5b813581811115610e89578384fd5b876020828501011115610e9a578384fd5b6020830194508093505050509250925092565b600060208284031215610ebe578081fd5b5035919050565b600060208284031215610ed6578081fd5b5051919050565b60008060408385031215610eef578182fd5b82519150602083015167ffffffffffffffff811115610f0c578182fd5b610f1885828601610b65565b9150509250929050565b60008151808452610f3a816020860160208601611489565b601f01601f19169290920160200192915050565b92835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60008251610f88818460208701611489565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906104aa90830184610f22565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061102990830185610f22565b828103608084015261103b8185610f22565b98975050505050505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061107a90830186610f22565b828103608084015261108c8186610f22565b905082810360a08401526103268185610f22565b600060018060a01b0385168252836020830152606060408301526109c86060830184610f22565b600060018060a01b0386168252846020830152608060408301526110ee6080830185610f22565b82810360608401526103ae8185610f22565b600060018060a01b038716825285602083015260a0604083015261112760a0830186610f22565b82810360608401526111398186610f22565b9050828103608084015261103b8185610f22565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526101576020830184610f22565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526023908201527f42617365526f7574696e67466f727761726465723a20524f5554455f554e4b4e60408201526227aba760e91b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b90815260200190565b60008382526040602083015261023c6040830184610f22565b6000848252606060208301526112f96060830185610f22565b82810360408401526104aa8185610f22565b6000808335601e19843603018112611321578283fd5b83018035915067ffffffffffffffff82111561133b578283fd5b60200191503681900382131561135057600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715611379576113796114b9565b604052919050565b600067ffffffffffffffff82111561139b5761139b6114b9565b50601f01601f191660200190565b6000826113c457634e487b7160e01b81526012600452602481fd5b500490565b6000608082360312156113da578081fd5b6040516080810167ffffffffffffffff82821081831117156113fe576113fe6114b9565b816040528435915061140f826114cf565b81835260209150818501358284015260408501356040840152606085013581811115611439578485fd5b8501905036601f82011261144b578384fd5b8035611459610b8382611381565b818152368483850101111561146c578586fd5b818484018583013790810190920193909352606082015292915050565b60005b838110156114a457818101518382015260200161148c565b838111156114b3576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461035457600080fdfea164736f6c6343000800000a736166654d696e744368696c64466f7228616464726573732c75696e743235362c737472696e672c62797465732c6279746573297472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629736166655472616e7366657246726f6d466f7228616464726573732c616464726573732c75696e743235362c62797465732c627974657329736166654d696e744368696c64466f7228616464726573732c75696e743235362c737472696e672c627974657329736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536297265736f6c7665546f466f7228616464726573732c75696e743235362c6279746573297472616e7366657246726f6d4368696c64466f7228616464726573732c616464726573732c75696e743235362c737472696e672c627974657329736166655472616e7366657246726f6d466f7228616464726573732c616464726573732c75696e743235362c6279746573296275726e4368696c64466f722875696e743235362c737472696e672c627974657329736166654d696e744368696c6428616464726573732c75696e743235362c737472696e6729736166655472616e7366657246726f6d4368696c6428616464726573732c616464726573732c75696e743235362c737472696e67297472616e7366657246726f6d4368696c6428616464726573732c616464726573732c75696e743235362c737472696e67296d696e744368696c64466f7228616464726573732c75696e743235362c737472696e672c627974657329736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e743235362c627974657329736166655472616e7366657246726f6d4368696c6428616464726573732c616464726573732c75696e743235362c737472696e672c627974657329736166654d696e744368696c6428616464726573732c75696e743235362c737472696e672c627974657329736166655472616e7366657246726f6d4368696c64466f7228616464726573732c616464726573732c75696e743235362c737472696e672c6279746573296d696e744368696c6428616464726573732c75696e743235362c737472696e67297472616e7366657246726f6d466f7228616464726573732c616464726573732c75696e743235362c627974657329736166655472616e7366657246726f6d4368696c64466f7228616464726573732c616464726573732c75696e743235362c737472696e672c62797465732c62797465732900000000000000000000000082ef94294c95ad0930055f31e53a34509227c5f7
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c80631bf7e13e146100465780636ccbae5f1461006f578063a42474001461008f575b600080fd5b610059610054366004610e15565b6100af565b6040516100669190611176565b60405180910390f35b61008261007d366004610ead565b61015e565b60405161006691906112be565b6100a261009d366004610e15565b6101e5565b604051610066919061114d565b606060005a90506101536100c66020870187610bad565b6001546001600160a01b03166040880135846100e560608b018b61130b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525061024492505050565b9150505b9392505050565b600154604051636ccbae5f60e01b81526000916001600160a01b031690636ccbae5f9061018f9085906004016112be565b60206040518083038186803b1580156101a757600080fd5b505afa1580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610ec5565b92915050565b600061023c6101f3856113c9565b600154604080516020601f88018190048102820181019092528681526001600160a01b039092169190879087908190840183828082843760009201919091525061033392505050565b949350505050565b606061024f85610354565b600080876001600160a01b0316866102698b8a8989610357565b6040516102769190610f76565b60006040518083038160008787f1925050503d80600081146102b4576040519150601f19603f3d011682016040523d82523d6000602084013e6102b9565b606091505b5090925090506102ca603f876113a9565b5a116102e657634e487b7160e01b600052600160045260246000fd5b61032682826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c45440000000000008152506103b9565b9998505050505050505050565b60006103408484846103f2565b801561023c575061023c84606001516104b4565b50565b60606000610364846104d3565b90506001600160e01b031981166103965760405162461bcd60e51b815260040161038d90611239565b60405180910390fd5b835160031901600485019081526103ae8282866104f7565b979650505050505050565b606083156103c8575081610157565b8251156103d85782518084602001fd5b8160405162461bcd60e51b815260040161038d9190611176565b6040808401519051636ccbae5f60e01b815260009182913091636ccbae5f9161041e91906004016112be565b60206040518083038186803b15801561043657600080fd5b505afa15801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e9190610ec5565b90506000610489866060015180519060200120868487610989565b90508560200151821480156104aa575085516001600160a01b038281169116145b9695505050505050565b6000806104c0836104d3565b6001600160e01b03191615159392505050565b6020908101516001600160e01b031916600090815290819052604090205460e01b90565b6060631de5861160e31b6001600160e01b0319851614156105865760008060008580602001905181019061052b9190610bc9565b92509250925086838383886040516024016105499493929190610fc3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152935061015792505050565b636debcb8d60e01b6001600160e01b0319851614156105b85760008060008580602001905181019061052b9190610bc9565b63280d9b0560e01b6001600160e01b03198516141561064b57600080600080868060200190518101906105eb9190610c0b565b935093509350935087848484848a60405160240161060d959493929190610ff6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915294506101579350505050565b6361603dd960e01b6001600160e01b0319851614156106cb5760008380602001905181019061067a9190610ec5565b90508481846040516024016106909291906112c7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915291506101579050565b63b34f33c560e01b6001600160e01b03198516141561071b576000806000858060200190518101906106fd9190610d4b565b925092509250868383838860405160240161054994939291906110c7565b633013529360e01b6001600160e01b03198516141561074d576000806000858060200190518101906106fd9190610d4b565b6307eca39560e01b6001600160e01b0319851614156107a257600080600080868060200190518101906107809190610da3565b935093509350935087848484848a60405160240161060d959493929190611100565b6368b6154f60e01b6001600160e01b0319851614156107d557600080600080868060200190518101906105eb9190610c77565b63341de35b60e21b6001600160e01b03198516141561080857600080600080868060200190518101906105eb9190610c77565b637a84860f60e11b6001600160e01b0319851614156108a25760008060008060008780602001905181019061083d9190610c8c565b945094509450945094508885858585858c60405160240161086396959493929190611047565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610157945050505050565b636fab95b360e01b6001600160e01b03198516141561092857600080848060200190518101906108d29190610edd565b91509150858282866040516024016108ec939291906112e0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610157915050565b63288f888960e11b6001600160e01b03198516141561097257600080848060200190518101906109589190610d1e565b91509150858282866040516024016108ec939291906110a0565b506040805160208101909152600081529392505050565b60006109c8826109c28787876040516020016109a793929190610f4e565b604051602081830303815290604052805190602001206109d1565b90610a01565b95945050505050565b6000816040516020016109e49190610f92565b604051602081830303815290604052805190602001209050919050565b600080600080845160411415610a2b5750505060208201516040830151606084015160001a610a71565b845160401415610a595750505060408201516020830151906001600160ff1b0381169060ff1c601b01610a71565b60405162461bcd60e51b815260040161038d906111c0565b6104aa8682858560007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610aba5760405162461bcd60e51b815260040161038d906111f7565b8360ff16601b1480610acf57508360ff16601c145b610aeb5760405162461bcd60e51b815260040161038d9061127c565b600060018686868660405160008152602001604052604051610b109493929190611158565b6020604051602081039080840390855afa158015610b32573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109c85760405162461bcd60e51b815260040161038d90611189565b600082601f830112610b75578081fd5b8151610b88610b8382611381565b611357565b818152846020838601011115610b9c578283fd5b61023c826020830160208701611489565b600060208284031215610bbe578081fd5b8135610157816114cf565b600080600060608486031215610bdd578182fd5b8351610be8816114cf565b6020850151909350610bf9816114cf565b80925050604084015190509250925092565b60008060008060808587031215610c20578081fd5b8451610c2b816114cf565b6020860151909450610c3c816114cf565b60408601516060870151919450925067ffffffffffffffff811115610c5f578182fd5b610c6b87828801610b65565b91505092959194509250565b60008060008060808587031215610c20578384fd5b600080600080600060a08688031215610ca3578081fd5b8551610cae816114cf565b6020870151909550610cbf816114cf565b60408701516060880151919550935067ffffffffffffffff80821115610ce3578283fd5b610cef89838a01610b65565b93506080880151915080821115610d04578283fd5b50610d1188828901610b65565b9150509295509295909350565b60008060408385031215610d30578182fd5b8251610d3b816114cf565b6020939093015192949293505050565b600080600060608486031215610d5f578283fd5b8351610d6a816114cf565b60208501516040860151919450925067ffffffffffffffff811115610d8d578182fd5b610d9986828701610b65565b9150509250925092565b60008060008060808587031215610db8578182fd5b8451610dc3816114cf565b60208601516040870151919550935067ffffffffffffffff80821115610de7578384fd5b610df388838901610b65565b93506060870151915080821115610e08578283fd5b50610c6b87828801610b65565b600080600060408486031215610e29578081fd5b833567ffffffffffffffff80821115610e40578283fd5b9085019060808288031215610e53578283fd5b90935060208501359080821115610e68578283fd5b818601915086601f830112610e7b578283fd5b813581811115610e89578384fd5b876020828501011115610e9a578384fd5b6020830194508093505050509250925092565b600060208284031215610ebe578081fd5b5035919050565b600060208284031215610ed6578081fd5b5051919050565b60008060408385031215610eef578182fd5b82519150602083015167ffffffffffffffff811115610f0c578182fd5b610f1885828601610b65565b9150509250929050565b60008151808452610f3a816020860160208601611489565b601f01601f19169290920160200192915050565b92835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60008251610f88818460208701611489565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906104aa90830184610f22565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061102990830185610f22565b828103608084015261103b8185610f22565b98975050505050505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061107a90830186610f22565b828103608084015261108c8186610f22565b905082810360a08401526103268185610f22565b600060018060a01b0385168252836020830152606060408301526109c86060830184610f22565b600060018060a01b0386168252846020830152608060408301526110ee6080830185610f22565b82810360608401526103ae8185610f22565b600060018060a01b038716825285602083015260a0604083015261112760a0830186610f22565b82810360608401526111398186610f22565b9050828103608084015261103b8185610f22565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526101576020830184610f22565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526023908201527f42617365526f7574696e67466f727761726465723a20524f5554455f554e4b4e60408201526227aba760e91b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b90815260200190565b60008382526040602083015261023c6040830184610f22565b6000848252606060208301526112f96060830185610f22565b82810360408401526104aa8185610f22565b6000808335601e19843603018112611321578283fd5b83018035915067ffffffffffffffff82111561133b578283fd5b60200191503681900382131561135057600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715611379576113796114b9565b604052919050565b600067ffffffffffffffff82111561139b5761139b6114b9565b50601f01601f191660200190565b6000826113c457634e487b7160e01b81526012600452602481fd5b500490565b6000608082360312156113da578081fd5b6040516080810167ffffffffffffffff82821081831117156113fe576113fe6114b9565b816040528435915061140f826114cf565b81835260209150818501358284015260408501356040840152606085013581811115611439578485fd5b8501905036601f82011261144b578384fd5b8035611459610b8382611381565b818152368483850101111561146c578586fd5b818484018583013790810190920193909352606082015292915050565b60005b838110156114a457818101518382015260200161148c565b838111156114b3576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461035457600080fdfea164736f6c6343000800000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000082ef94294c95ad0930055f31e53a34509227c5f7
-----Decoded View---------------
Arg [0] : target (address): 0x82EF94294C95aD0930055f31e53A34509227c5f7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000082ef94294c95ad0930055f31e53a34509227c5f7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.