More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 151,899 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute | 66642360 | 12 days ago | IN | 0 POL | 0.00515853 | ||||
Execute | 63275305 | 97 days ago | IN | 0 POL | 0.00675121 | ||||
Execute | 55673114 | 290 days ago | IN | 0 POL | 0.01214893 | ||||
Execute | 55021614 | 307 days ago | IN | 0 POL | 0.00257086 | ||||
Execute | 54654008 | 317 days ago | IN | 0 POL | 0.01864524 | ||||
Execute | 54593537 | 318 days ago | IN | 0 POL | 0.00923222 | ||||
Execute | 54593127 | 318 days ago | IN | 0 POL | 0.00708431 | ||||
Execute | 54574722 | 319 days ago | IN | 0 POL | 0.01040121 | ||||
Execute | 54571926 | 319 days ago | IN | 0 POL | 0.01280159 | ||||
Execute | 54401450 | 323 days ago | IN | 0 POL | 0.01061059 | ||||
Execute | 54401416 | 323 days ago | IN | 0 POL | 0.01079146 | ||||
Execute | 54401403 | 323 days ago | IN | 0 POL | 0.01067498 | ||||
Execute | 54401377 | 323 days ago | IN | 0 POL | 0.0106773 | ||||
Execute | 54401358 | 323 days ago | IN | 0 POL | 0.01011028 | ||||
Execute | 54401319 | 323 days ago | IN | 0 POL | 0.01011028 | ||||
Execute | 54401280 | 323 days ago | IN | 0 POL | 0.01005791 | ||||
Execute | 54401264 | 323 days ago | IN | 0 POL | 0.01005878 | ||||
Execute | 54401247 | 323 days ago | IN | 0 POL | 0.00989091 | ||||
Execute | 54401226 | 323 days ago | IN | 0 POL | 0.00989091 | ||||
Execute | 54104815 | 331 days ago | IN | 0 POL | 0.01101201 | ||||
Execute | 54104737 | 331 days ago | IN | 0 POL | 0.01139828 | ||||
Execute | 54104578 | 331 days ago | IN | 0 POL | 0.00958228 | ||||
Execute | 54065380 | 332 days ago | IN | 0 POL | 0.0175481 | ||||
Execute | 54064798 | 332 days ago | IN | 0 POL | 0.01261745 | ||||
Execute | 54064520 | 332 days ago | IN | 0 POL | 0.01328146 |
Loading...
Loading
Contract Name:
WRLD_Forwarder_Polygon
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (metatx/MinimalForwarder.sol) pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol"; /** * @dev Simple minimal forwarder to be used together with an ERC2771 compatible contract. See {ERC2771Context}. */ contract WRLD_Forwarder_Polygon is EIP712 { using ECDSA for bytes32; struct ForwardRequest { address from; address to; uint256 value; uint256 gas; uint256 nonce; bytes data; } bytes32 private constant _TYPEHASH = keccak256("ForwardRequest(address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data)"); mapping(address => uint256) private _nonces; constructor() EIP712("WRLD_Forwarder_Polygon", "1.0.0") {} function getNonce(address from) public view returns (uint256) { return _nonces[from]; } function verify(ForwardRequest calldata req, bytes calldata signature) public view returns (bool) { address signer = _hashTypedDataV4( keccak256(abi.encode(_TYPEHASH, req.from, req.to, req.value, req.gas, req.nonce, keccak256(req.data))) ).recover(signature); return _nonces[req.from] == req.nonce && signer == req.from; } function execute(ForwardRequest calldata req, bytes calldata signature) public payable returns (bool, bytes memory) { require(verify(req, signature), "WRLD_Forwarder_Polygon: signature does not match request"); _nonces[req.from] = req.nonce + 1; (bool success, bytes memory returndata) = req.to.call{gas: req.gas, value: req.value}( abi.encodePacked(req.data, req.from) ); // Validate that the relayer has sent enough gas for the call. // See https://ronan.eth.link/blog/ethereum-gas-dangers/ assert(gasleft() > req.gas / 63); return (success, returndata); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.0; import "../Strings.sol"; /** * @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 ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. 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. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // 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) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @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) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // 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 (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): 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. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @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) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @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 Message, created from `s`. 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(bytes memory s) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } /** * @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)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol) pragma solidity ^0.8.0; import "./ECDSA.sol"; /** * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. * * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding * they need in their contracts using a combination of `abi.encode` and `keccak256`. * * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA * ({_hashTypedDataV4}). * * The implementation of the domain separator was designed to be as efficient as possible while still properly updating * the chain id to protect against replay attacks on an eventual fork of the chain. * * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. * * _Available since v3.4._ */ abstract contract EIP712 { /* solhint-disable var-name-mixedcase */ // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to // invalidate the cached domain separator if the chain id changes. bytes32 private immutable _CACHED_DOMAIN_SEPARATOR; uint256 private immutable _CACHED_CHAIN_ID; address private immutable _CACHED_THIS; bytes32 private immutable _HASHED_NAME; bytes32 private immutable _HASHED_VERSION; bytes32 private immutable _TYPE_HASH; /* solhint-enable var-name-mixedcase */ /** * @dev Initializes the domain separator and parameter caches. * * The meaning of `name` and `version` is specified in * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: * * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. * - `version`: the current major version of the signing domain. * * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart * contract upgrade]. */ constructor(string memory name, string memory version) { bytes32 hashedName = keccak256(bytes(name)); bytes32 hashedVersion = keccak256(bytes(version)); bytes32 typeHash = keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ); _HASHED_NAME = hashedName; _HASHED_VERSION = hashedVersion; _CACHED_CHAIN_ID = block.chainid; _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion); _CACHED_THIS = address(this); _TYPE_HASH = typeHash; } /** * @dev Returns the domain separator for the current chain. */ function _domainSeparatorV4() internal view returns (bytes32) { if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function _buildDomainSeparator( bytes32 typeHash, bytes32 nameHash, bytes32 versionHash ) private view returns (bytes32) { return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this))); } /** * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this * function returns the hash of the fully encoded EIP712 message for this domain. * * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example: * * ```solidity * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode( * keccak256("Mail(address to,string contents)"), * mailTo, * keccak256(bytes(mailContents)) * ))); * address signer = ECDSA.recover(digest, signature); * ``` */ function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "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"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct WRLD_Forwarder_Polygon.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct WRLD_Forwarder_Polygon.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
61014060405234801561001157600080fd5b50604080518082018252601681527f57524c445f466f727761726465725f506f6c79676f6e000000000000000000006020808301918252835180850190945260058452640312e302e360dc1b908401528151902060e08190527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100c48184846100dc565b6080523060601b60c052610120525061014292505050565b600083838346306040516020016100f7959493929190610116565b6040516020818303038152906040528051906020012090509392505050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60805160a05160c05160601c60e0516101005161012051610f10610194600039600061051c0152600061055e0152600061053d0152600061049f015260006104c9015260006104f30152610f106000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f821461006f578063bf5d3bdb14610090575b600080fd5b34801561004557600080fd5b506100596100543660046109cd565b6100bd565b6040516100669190610dc8565b60405180910390f35b61008261007d366004610a08565b6100e5565b604051610066929190610b49565b34801561009c57600080fd5b506100b06100ab366004610a08565b6102c3565b6040516100669190610b3e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600060606100f48585856102c3565b610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610d0e565b60405180910390fd5b61014260808601356001610e34565b60008061015260208901896109cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000808660200160208101906101a691906109cd565b73ffffffffffffffffffffffffffffffffffffffff16606088013560408901356101d360a08b018b610dd1565b6101e060208d018d6109cd565b6040516020016101f293929190610ab0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261022a91610aec565b600060405180830381858888f193505050503d8060008114610268576040519150601f19603f3d011682016040523d82523d6000602084013e61026d565b606091505b509092509050610282603f6060890135610e71565b5a116102b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b90969095509350505050565b6000806103a984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103a392507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e489150610333905060208a018a6109cd565b61034360408b0160208c016109cd565b60408b013560608c013560808d013561035f60a08f018f610dd1565b60405161036d929190610aa0565b60405190819003812061038897969594939291602001610ba3565b60405160208183030381529060405280519060200120610448565b90610461565b905060808501356000806103c060208901896109cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561043f575061041060208601866109cd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b95945050505050565b600061045b610455610485565b83610588565b92915050565b600080600061047085856105bb565b9150915061047d8161062b565b509392505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156104eb57507f000000000000000000000000000000000000000000000000000000000000000046145b1561051757507f0000000000000000000000000000000000000000000000000000000000000000610585565b6105827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610840565b90505b90565b6000828260405160200161059d929190610b08565b60405160208183030381529060405280519060200120905092915050565b6000808251604114156105f25760208301516040840151606085015160001a6105e68782858561087a565b94509450505050610624565b82516040141561061c5760208301516040840151610611868383610985565b935093505050610624565b506000905060025b9250929050565b6000816004811115610666577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156106715761083d565b60018160048111156106ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c43565b600281600481111561071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c7a565b6003816004811115610792577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610cb1565b6004816004811115610805577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b141561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610d6b565b50565b6000838383463060405160200161085b959493929190610bec565b6040516020818303038152906040528051906020012090509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108b1575060009050600361097c565b8460ff16601b141580156108c957508460ff16601c14155b156108da575060009050600461097c565b6000600187878787604051600081526020016040526040516108ff9493929190610c25565b6020604051602081039080840390855afa158015610921573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166109755760006001925092505061097c565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831660ff84901c601b016109bf8782888561087a565b935093505050935093915050565b6000602082840312156109de578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a01578182fd5b9392505050565b600080600060408486031215610a1c578182fd5b833567ffffffffffffffff80821115610a33578384fd5b9085019060c08288031215610a46578384fd5b90935060208501359080821115610a5b578384fd5b818601915086601f830112610a6e578384fd5b813581811115610a7c578485fd5b876020828501011115610a8d578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b6000838583375060609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610afe818460208701610eaa565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b901515815260200190565b60008315158252604060208301528251806040840152610b70816060850160208701610eaa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b96875273ffffffffffffffffffffffffffffffffffffffff95861660208801529390941660408601526060850191909152608084015260a083019190915260c082015260e00190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f57524c445f466f727761726465725f506f6c79676f6e3a207369676e6174757260408201527f6520646f6573206e6f74206d6174636820726571756573740000000000000000606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e05578283fd5b83018035915067ffffffffffffffff821115610e1f578283fd5b60200191503681900382131561062457600080fd5b60008219821115610e6c577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b600082610ea5577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60005b83811015610ec5578181015183820152602001610ead565b83811115610ed4576000848401525b5050505056fea26469706673582212208ee15e677a80f6973a02c3d3a78c486587d72031fa32acfa04ba52d53562884264736f6c63430008000033
Deployed Bytecode
0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f821461006f578063bf5d3bdb14610090575b600080fd5b34801561004557600080fd5b506100596100543660046109cd565b6100bd565b6040516100669190610dc8565b60405180910390f35b61008261007d366004610a08565b6100e5565b604051610066929190610b49565b34801561009c57600080fd5b506100b06100ab366004610a08565b6102c3565b6040516100669190610b3e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600060606100f48585856102c3565b610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610d0e565b60405180910390fd5b61014260808601356001610e34565b60008061015260208901896109cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000808660200160208101906101a691906109cd565b73ffffffffffffffffffffffffffffffffffffffff16606088013560408901356101d360a08b018b610dd1565b6101e060208d018d6109cd565b6040516020016101f293929190610ab0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261022a91610aec565b600060405180830381858888f193505050503d8060008114610268576040519150601f19603f3d011682016040523d82523d6000602084013e61026d565b606091505b509092509050610282603f6060890135610e71565b5a116102b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b90969095509350505050565b6000806103a984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103a392507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e489150610333905060208a018a6109cd565b61034360408b0160208c016109cd565b60408b013560608c013560808d013561035f60a08f018f610dd1565b60405161036d929190610aa0565b60405190819003812061038897969594939291602001610ba3565b60405160208183030381529060405280519060200120610448565b90610461565b905060808501356000806103c060208901896109cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561043f575061041060208601866109cd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b95945050505050565b600061045b610455610485565b83610588565b92915050565b600080600061047085856105bb565b9150915061047d8161062b565b509392505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007fe3aedfc76d7c6dd84b617081a9346de81236dc161480156104eb57507f000000000000000000000000000000000000000000000000000000000000008946145b1561051757507ffe97dec11a3f050547c1d76950220e5466a070b30bd95c4ef6a0f75f4741fab4610585565b6105827f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fad807e0f835011f7264c92e0dcbd4b31389d065d00522fa231f2fb98789ebe087f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c610840565b90505b90565b6000828260405160200161059d929190610b08565b60405160208183030381529060405280519060200120905092915050565b6000808251604114156105f25760208301516040840151606085015160001a6105e68782858561087a565b94509450505050610624565b82516040141561061c5760208301516040840151610611868383610985565b935093505050610624565b506000905060025b9250929050565b6000816004811115610666577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156106715761083d565b60018160048111156106ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c43565b600281600481111561071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610c7a565b6003816004811115610792577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14156107ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610cb1565b6004816004811115610805577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b141561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610d6b565b50565b6000838383463060405160200161085b959493929190610bec565b6040516020818303038152906040528051906020012090509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108b1575060009050600361097c565b8460ff16601b141580156108c957508460ff16601c14155b156108da575060009050600461097c565b6000600187878787604051600081526020016040526040516108ff9493929190610c25565b6020604051602081039080840390855afa158015610921573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166109755760006001925092505061097c565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831660ff84901c601b016109bf8782888561087a565b935093505050935093915050565b6000602082840312156109de578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a01578182fd5b9392505050565b600080600060408486031215610a1c578182fd5b833567ffffffffffffffff80821115610a33578384fd5b9085019060c08288031215610a46578384fd5b90935060208501359080821115610a5b578384fd5b818601915086601f830112610a6e578384fd5b813581811115610a7c578485fd5b876020828501011115610a8d578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b6000838583375060609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610afe818460208701610eaa565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b901515815260200190565b60008315158252604060208301528251806040840152610b70816060850160208701610eaa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b96875273ffffffffffffffffffffffffffffffffffffffff95861660208801529390941660408601526060850191909152608084015260a083019190915260c082015260e00190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526038908201527f57524c445f466f727761726465725f506f6c79676f6e3a207369676e6174757260408201527f6520646f6573206e6f74206d6174636820726571756573740000000000000000606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e05578283fd5b83018035915067ffffffffffffffff821115610e1f578283fd5b60200191503681900382131561062457600080fd5b60008219821115610e6c577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500190565b600082610ea5577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b60005b83811015610ec5578181015183820152602001610ead565b83811115610ed4576000848401525b5050505056fea26469706673582212208ee15e677a80f6973a02c3d3a78c486587d72031fa32acfa04ba52d53562884264736f6c63430008000033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.015019 | 7.6 | $0.1141 |
[ 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.