Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 891 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy With Type... | 19843124 | 227 days ago | IN | 0 ETH | 0.00098703 | ||||
Deploy With Type... | 19792368 | 234 days ago | IN | 0 ETH | 0.0008779 | ||||
Deploy With Type... | 19566134 | 265 days ago | IN | 0 ETH | 0.00333256 | ||||
Deploy With Type... | 19488161 | 276 days ago | IN | 0 ETH | 0.00447546 | ||||
Deploy With Type... | 19466706 | 279 days ago | IN | 0 ETH | 0.00390399 | ||||
Deploy With Type... | 19444679 | 283 days ago | IN | 0 ETH | 0.00540452 | ||||
Deploy With Type... | 19315881 | 301 days ago | IN | 0 ETH | 0.0094166 | ||||
Deploy With Type... | 19211133 | 315 days ago | IN | 0 ETH | 0.00385268 | ||||
Deploy With Type... | 18983452 | 347 days ago | IN | 0 ETH | 0.0048842 | ||||
Deploy With Type... | 18981026 | 348 days ago | IN | 0 ETH | 0.00529029 | ||||
Deploy With Type... | 18954765 | 351 days ago | IN | 0 ETH | 0.00524098 | ||||
Deploy With Type... | 18948448 | 352 days ago | IN | 0 ETH | 0.00301636 | ||||
Deploy With Type... | 18940514 | 353 days ago | IN | 0 ETH | 0.00221066 | ||||
Deploy With Type... | 18859552 | 365 days ago | IN | 0 ETH | 0.00285098 | ||||
Deploy With Type... | 18852462 | 366 days ago | IN | 0 ETH | 0.00353986 | ||||
Deploy With Type... | 18849431 | 366 days ago | IN | 0 ETH | 0.0040402 | ||||
Deploy With Type... | 18817600 | 370 days ago | IN | 0 ETH | 0.00770184 | ||||
Deploy With Type... | 18719096 | 384 days ago | IN | 0 ETH | 0.00752241 | ||||
Deploy With Type... | 18689463 | 388 days ago | IN | 0 ETH | 0.0056112 | ||||
Deploy With Type... | 18495087 | 416 days ago | IN | 0 ETH | 0.00236101 | ||||
Deploy With Type... | 18463289 | 420 days ago | IN | 0 ETH | 0.00449061 | ||||
Deploy With Type... | 18454653 | 421 days ago | IN | 0 ETH | 0.00281087 | ||||
Deploy With Type... | 18396729 | 429 days ago | IN | 0 ETH | 0.0011169 | ||||
Deploy With Type... | 18390101 | 430 days ago | IN | 0 ETH | 0.00134425 | ||||
Deploy With Type... | 18362896 | 434 days ago | IN | 0 ETH | 0.00162168 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Chocofactory
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/proxy/Clones.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol"; interface IChocoInitializable { function initialize( string memory _name, string memory _symbol, address _owner ) external; } contract Chocofactory is EIP712 { using Address for address; using Clones for address; using ECDSA for bytes32; event Deployed( address indexed owner, address indexed implementation, address indexed deployedContract, string name, string symbol ); constructor(string memory name, string memory version) EIP712(name, version) {} function _encode( address owner, string memory name, string memory symbol ) internal pure returns (bytes memory) { return abi.encodeWithSignature("initialize(address,string,string)", owner, name, symbol); } function _deploy( address implementation, address owner, string memory name, string memory symbol ) internal { bytes memory data = _encode(owner, name, symbol); bytes32 salt = keccak256(abi.encodePacked(data, owner)); address deployedContract = implementation.cloneDeterministic(salt); deployedContract.functionCallWithValue(data, msg.value); emit Deployed(owner, implementation, deployedContract, name, symbol); } function deploy( address implementation, string memory name, string memory symbol ) public payable { _deploy(implementation, msg.sender, name, symbol); } function verifySig( address implementation, address owner, string memory name, string memory symbol, bytes memory signature ) public view returns (bool) { bytes32 digest = keccak256(abi.encodePacked(block.chainid, address(this), implementation, name, symbol)) .toEthSignedMessageHash(); address recovered = digest.recover(signature); return owner == recovered; } function deployWithSig( address implementation, address owner, string memory name, string memory symbol, bytes memory signature ) public payable { require(verifySig(implementation, owner, name, symbol, signature), "signature must be valid"); _deploy(implementation, owner, name, symbol); } function verifyTypedSig( address implementation, address owner, string memory name, string memory symbol, bytes memory signature ) public view returns (bool) { bytes32 digest = _hashTypedDataV4( keccak256( abi.encode( keccak256("Choco(address implementation,string name,string symbol)"), implementation, keccak256(bytes(name)), keccak256(bytes(symbol)) ) ) ); address recovered = digest.recover(signature); return owner == recovered; } function deployWithTypedSig( address implementation, address owner, string memory name, string memory symbol, bytes memory signature ) public payable { require(verifyTypedSig(implementation, owner, name, symbol, signature), "signature must be valid"); _deploy(implementation, owner, name, symbol); } function predictDeployResult( address implementation, address owner, string memory name, string memory symbol ) public view returns (address) { bytes memory data = _encode(owner, name, symbol); bytes32 salt = keccak256(abi.encodePacked(data, owner)); return implementation.predictDeterministicAddress(salt, address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. * * _Available since v3.4._ */ library Clones { /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, which should never revert. */ function clone(address implementation) internal returns (address instance) { // solhint-disable-next-line no-inline-assembly assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create(0, ptr, 0x37) } require(instance != address(0), "ERC1167: create failed"); } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { // solhint-disable-next-line no-inline-assembly assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create2(0, ptr, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress(address implementation, bytes32 salt, address deployer) internal pure returns (address predicted) { // solhint-disable-next-line no-inline-assembly assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) mstore(add(ptr, 0x38), shl(0x60, deployer)) mstore(add(ptr, 0x4c), salt) mstore(add(ptr, 0x6c), keccak256(ptr, 0x37)) predicted := keccak256(add(ptr, 0x37), 0x55) } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress(address implementation, bytes32 salt) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } 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 ECDSA { /** * @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) { // Check the signature length if (signature.length != 65) { revert("ECDSA: invalid signature length"); } // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // 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))) } 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)); } }
// SPDX-License-Identifier: MIT 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; 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); _TYPE_HASH = typeHash; } /** * @dev Returns the domain separator for the current chain. */ function _domainSeparatorV4() internal view returns (bytes32) { if (block.chainid == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function _buildDomainSeparator(bytes32 typeHash, bytes32 name, bytes32 version) private view returns (bytes32) { return keccak256( abi.encode( typeHash, name, version, 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); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":true,"internalType":"address","name":"deployedContract","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"}],"name":"Deployed","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"deploy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"deployWithSig","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"deployWithTypedSig","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"predictDeployResult","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verifySig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verifyTypedSig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040523480156200001257600080fd5b5060405162001ce838038062001ce883398181016040528101906200003891906200016d565b818160008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260c081815250508160e081815250504660a08181525050620000a2818484620000bf60201b60201c565b608081815250508061010081815250505050505050505062000384565b60008383834630604051602001620000dc95949392919062000213565b6040516020818303038152906040528051906020012090509392505050565b6000620001126200010c84620002a4565b62000270565b9050828152602081018484840111156200012b57600080fd5b620001388482856200031f565b509392505050565b600082601f8301126200015257600080fd5b815162000164848260208601620000fb565b91505092915050565b600080604083850312156200018157600080fd5b600083015167ffffffffffffffff8111156200019c57600080fd5b620001aa8582860162000140565b925050602083015167ffffffffffffffff811115620001c857600080fd5b620001d68582860162000140565b9150509250929050565b620001eb81620002d7565b82525050565b620001fc81620002eb565b82525050565b6200020d8162000315565b82525050565b600060a0820190506200022a6000830188620001f1565b620002396020830187620001f1565b620002486040830186620001f1565b62000257606083018562000202565b620002666080830184620001e0565b9695505050505050565b6000604051905081810181811067ffffffffffffffff821117156200029a576200029962000355565b5b8060405250919050565b600067ffffffffffffffff821115620002c257620002c162000355565b5b601f19601f8301169050602081019050919050565b6000620002e482620002f5565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200033f57808201518184015260208101905062000322565b838111156200034f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60805160a05160c05160e0516101005161191f620003c9600039600061084c0152600061088e0152600061086d015260006107f901526000610821015261191f6000f3fe6080604052600436106100555760003560e01c80630401264e1461005a57806325d3b0441461009757806332a1288a146100b35780633f42b99e146100f057806344e09a341461012d578063b9f4066014610149575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610d23565b610165565b60405161008e9190611404565b60405180910390f35b6100b160048036038101906100ac9190610e75565b6101d9565b005b3480156100bf57600080fd5b506100da60048036038101906100d59190610db6565b6101ea565b6040516100e79190611464565b60405180910390f35b3480156100fc57600080fd5b5061011760048036038101906101129190610db6565b6102a5565b6040516101249190611464565b60405180910390f35b61014760048036038101906101429190610db6565b610334565b005b610163600480360381019061015e9190610db6565b610393565b005b6000806101738585856103f2565b90506000818660405160200161018a929190611328565b6040516020818303038152906040528051906020012090506101cd81308973ffffffffffffffffffffffffffffffffffffffff1661048f9092919063ffffffff16565b92505050949350505050565b6101e58333848461050f565b505050565b6000806102507f4953bc4459fc5eb0e2711ccf33a9f9fffda77b751bc463e88ce1cf1ffee83ae98887805190602001208780519060200120604051602001610235949392919061147f565b6040516020818303038152906040528051906020012061062b565b90506000610267848361064590919063ffffffff16565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16149250505095945050505050565b6000806102df46308988886040516020016102c49594939291906113ad565b604051602081830303815290604052805190602001206106bf565b905060006102f6848361064590919063ffffffff16565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16149250505095945050505050565b61034185858585856102a5565b610380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037790611675565b60405180910390fd5b61038c8585858561050f565b5050505050565b6103a085858585856101ea565b6103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d690611675565b60405180910390fd5b6103eb8585858561050f565b5050505050565b60608383836040516024016104099392919061141f565b6040516020818303038152906040527f90657147000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528460601b60148201527f5af43d82803e903d91602b57fd5bf3ff0000000000000000000000000000000060288201528260601b603882015283604c82015260378120606c820152605560378201209150509392505050565b600061051c8484846103f2565b905060008185604051602001610533929190611328565b6040516020818303038152906040528051906020012090506000610576828873ffffffffffffffffffffffffffffffffffffffff166106ef90919063ffffffff16565b90506105a383348373ffffffffffffffffffffffffffffffffffffffff166107c69092919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f91a2e98341cdbb65a320cc620191c4671540217777cfb4d53788beb61e1150bd888860405161061a92919061157e565b60405180910390a450505050505050565b600061063e6106386107f5565b836108b8565b9050919050565b6000604182511461068b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610682906115d5565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a90506106b4868285856108eb565b935050505092915050565b6000816040516020016106d29190611350565b604051602081830303815290604052805190602001209050919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f5915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b7906115f5565b60405180910390fd5b92915050565b60606107ec8484846040518060600160405280602981526020016118c160299139610a76565b90509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610847577f000000000000000000000000000000000000000000000000000000000000000090506108b5565b6108b27f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610b8a565b90505b90565b600082826040516020016108cd929190611376565b60405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90611615565b60405180910390fd5b601b8460ff1614806109685750601c8460ff16145b6109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90611655565b60405180910390fd5b6000600186868686604051600081526020016040526040516109cc9493929190611517565b6020604051602081039080840390855afa1580156109ee573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906115b5565b60405180910390fd5b80915050949350505050565b606082471015610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab290611635565b60405180910390fd5b610ac485610bc4565b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90611695565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610b2c9190611311565b60006040518083038185875af1925050503d8060008114610b69576040519150601f19603f3d011682016040523d82523d6000602084013e610b6e565b606091505b5091509150610b7e828286610bd7565b92505050949350505050565b60008383834630604051602001610ba59594939291906114c4565b6040516020818303038152906040528051906020012090509392505050565b600080823b905060008111915050919050565b60608315610be757829050610c37565b600083511115610bfa5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e919061155c565b60405180910390fd5b9392505050565b6000610c51610c4c846116e6565b6116b5565b905082815260208101848484011115610c6957600080fd5b610c748482856117e2565b509392505050565b6000610c8f610c8a84611716565b6116b5565b905082815260208101848484011115610ca757600080fd5b610cb28482856117e2565b509392505050565b600081359050610cc9816118a9565b92915050565b600082601f830112610ce057600080fd5b8135610cf0848260208601610c3e565b91505092915050565b600082601f830112610d0a57600080fd5b8135610d1a848260208601610c7c565b91505092915050565b60008060008060808587031215610d3957600080fd5b6000610d4787828801610cba565b9450506020610d5887828801610cba565b935050604085013567ffffffffffffffff811115610d7557600080fd5b610d8187828801610cf9565b925050606085013567ffffffffffffffff811115610d9e57600080fd5b610daa87828801610cf9565b91505092959194509250565b600080600080600060a08688031215610dce57600080fd5b6000610ddc88828901610cba565b9550506020610ded88828901610cba565b945050604086013567ffffffffffffffff811115610e0a57600080fd5b610e1688828901610cf9565b935050606086013567ffffffffffffffff811115610e3357600080fd5b610e3f88828901610cf9565b925050608086013567ffffffffffffffff811115610e5c57600080fd5b610e6888828901610ccf565b9150509295509295909350565b600080600060608486031215610e8a57600080fd5b6000610e9886828701610cba565b935050602084013567ffffffffffffffff811115610eb557600080fd5b610ec186828701610cf9565b925050604084013567ffffffffffffffff811115610ede57600080fd5b610eea86828701610cf9565b9150509250925092565b610efd81611783565b82525050565b610f14610f0f82611783565b611824565b82525050565b610f2381611795565b82525050565b610f32816117a1565b82525050565b610f49610f44826117a1565b611836565b82525050565b6000610f5a82611746565b610f64818561175c565b9350610f748185602086016117f1565b80840191505092915050565b6000610f8b82611751565b610f958185611767565b9350610fa58185602086016117f1565b610fae8161188b565b840191505092915050565b6000610fc482611751565b610fce8185611778565b9350610fde8185602086016117f1565b80840191505092915050565b6000610ff7601883611767565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611037601f83611767565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611077601c83611778565b91507f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000830152601c82019050919050565b60006110b7600283611778565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006110f7601783611767565b91507f455243313136373a2063726561746532206661696c65640000000000000000006000830152602082019050919050565b6000611137602283611767565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061119d602683611767565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611203602283611767565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611269601783611767565b91507f7369676e6174757265206d7573742062652076616c69640000000000000000006000830152602082019050919050565b60006112a9601d83611767565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6112e5816117cb565b82525050565b6112fc6112f7826117cb565b611852565b82525050565b61130b816117d5565b82525050565b600061131d8284610f4f565b915081905092915050565b60006113348285610f4f565b91506113408284610f03565b6014820191508190509392505050565b600061135b8261106a565b91506113678284610f38565b60208201915081905092915050565b6000611381826110aa565b915061138d8285610f38565b60208201915061139d8284610f38565b6020820191508190509392505050565b60006113b982886112eb565b6020820191506113c98287610f03565b6014820191506113d98286610f03565b6014820191506113e98285610fb9565b91506113f58284610fb9565b91508190509695505050505050565b60006020820190506114196000830184610ef4565b92915050565b60006060820190506114346000830186610ef4565b81810360208301526114468185610f80565b9050818103604083015261145a8184610f80565b9050949350505050565b60006020820190506114796000830184610f1a565b92915050565b60006080820190506114946000830187610f29565b6114a16020830186610ef4565b6114ae6040830185610f29565b6114bb6060830184610f29565b95945050505050565b600060a0820190506114d96000830188610f29565b6114e66020830187610f29565b6114f36040830186610f29565b61150060608301856112dc565b61150d6080830184610ef4565b9695505050505050565b600060808201905061152c6000830187610f29565b6115396020830186611302565b6115466040830185610f29565b6115536060830184610f29565b95945050505050565b600060208201905081810360008301526115768184610f80565b905092915050565b600060408201905081810360008301526115988185610f80565b905081810360208301526115ac8184610f80565b90509392505050565b600060208201905081810360008301526115ce81610fea565b9050919050565b600060208201905081810360008301526115ee8161102a565b9050919050565b6000602082019050818103600083015261160e816110ea565b9050919050565b6000602082019050818103600083015261162e8161112a565b9050919050565b6000602082019050818103600083015261164e81611190565b9050919050565b6000602082019050818103600083015261166e816111f6565b9050919050565b6000602082019050818103600083015261168e8161125c565b9050919050565b600060208201905081810360008301526116ae8161129c565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156116dc576116db61185c565b5b8060405250919050565b600067ffffffffffffffff8211156117015761170061185c565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156117315761173061185c565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061178e826117ab565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561180f5780820151818401526020810190506117f4565b8381111561181e576000848401525b50505050565b600061182f82611840565b9050919050565b6000819050919050565b600061184b8261189c565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6118b281611783565b81146118bd57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220c49d7c0350d9f646267425bda07b93844ea71e272299f1d0624c56d5d83a370164736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c43686f636f666163746f7279000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100555760003560e01c80630401264e1461005a57806325d3b0441461009757806332a1288a146100b35780633f42b99e146100f057806344e09a341461012d578063b9f4066014610149575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610d23565b610165565b60405161008e9190611404565b60405180910390f35b6100b160048036038101906100ac9190610e75565b6101d9565b005b3480156100bf57600080fd5b506100da60048036038101906100d59190610db6565b6101ea565b6040516100e79190611464565b60405180910390f35b3480156100fc57600080fd5b5061011760048036038101906101129190610db6565b6102a5565b6040516101249190611464565b60405180910390f35b61014760048036038101906101429190610db6565b610334565b005b610163600480360381019061015e9190610db6565b610393565b005b6000806101738585856103f2565b90506000818660405160200161018a929190611328565b6040516020818303038152906040528051906020012090506101cd81308973ffffffffffffffffffffffffffffffffffffffff1661048f9092919063ffffffff16565b92505050949350505050565b6101e58333848461050f565b505050565b6000806102507f4953bc4459fc5eb0e2711ccf33a9f9fffda77b751bc463e88ce1cf1ffee83ae98887805190602001208780519060200120604051602001610235949392919061147f565b6040516020818303038152906040528051906020012061062b565b90506000610267848361064590919063ffffffff16565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16149250505095945050505050565b6000806102df46308988886040516020016102c49594939291906113ad565b604051602081830303815290604052805190602001206106bf565b905060006102f6848361064590919063ffffffff16565b90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16149250505095945050505050565b61034185858585856102a5565b610380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037790611675565b60405180910390fd5b61038c8585858561050f565b5050505050565b6103a085858585856101ea565b6103df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d690611675565b60405180910390fd5b6103eb8585858561050f565b5050505050565b60608383836040516024016104099392919061141f565b6040516020818303038152906040527f90657147000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528460601b60148201527f5af43d82803e903d91602b57fd5bf3ff0000000000000000000000000000000060288201528260601b603882015283604c82015260378120606c820152605560378201209150509392505050565b600061051c8484846103f2565b905060008185604051602001610533929190611328565b6040516020818303038152906040528051906020012090506000610576828873ffffffffffffffffffffffffffffffffffffffff166106ef90919063ffffffff16565b90506105a383348373ffffffffffffffffffffffffffffffffffffffff166107c69092919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f91a2e98341cdbb65a320cc620191c4671540217777cfb4d53788beb61e1150bd888860405161061a92919061157e565b60405180910390a450505050505050565b600061063e6106386107f5565b836108b8565b9050919050565b6000604182511461068b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610682906115d5565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a90506106b4868285856108eb565b935050505092915050565b6000816040516020016106d29190611350565b604051602081830303815290604052805190602001209050919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f5915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b7906115f5565b60405180910390fd5b92915050565b60606107ec8484846040518060600160405280602981526020016118c160299139610a76565b90509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000001461415610847577f53493bf3a04bc8086ba47bacaf87759b0e2db54c987029b06739b226ce286ecc90506108b5565b6108b27f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f5b6f647f5ed30e97c3f33afd27d7ac6f6d0b8866c916b19e5bf7a18d1e4f83137fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610b8a565b90505b90565b600082826040516020016108cd929190611376565b60405160208183030381529060405280519060200120905092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90611615565b60405180910390fd5b601b8460ff1614806109685750601c8460ff16145b6109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90611655565b60405180910390fd5b6000600186868686604051600081526020016040526040516109cc9493929190611517565b6020604051602081039080840390855afa1580156109ee573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906115b5565b60405180910390fd5b80915050949350505050565b606082471015610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab290611635565b60405180910390fd5b610ac485610bc4565b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90611695565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610b2c9190611311565b60006040518083038185875af1925050503d8060008114610b69576040519150601f19603f3d011682016040523d82523d6000602084013e610b6e565b606091505b5091509150610b7e828286610bd7565b92505050949350505050565b60008383834630604051602001610ba59594939291906114c4565b6040516020818303038152906040528051906020012090509392505050565b600080823b905060008111915050919050565b60608315610be757829050610c37565b600083511115610bfa5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e919061155c565b60405180910390fd5b9392505050565b6000610c51610c4c846116e6565b6116b5565b905082815260208101848484011115610c6957600080fd5b610c748482856117e2565b509392505050565b6000610c8f610c8a84611716565b6116b5565b905082815260208101848484011115610ca757600080fd5b610cb28482856117e2565b509392505050565b600081359050610cc9816118a9565b92915050565b600082601f830112610ce057600080fd5b8135610cf0848260208601610c3e565b91505092915050565b600082601f830112610d0a57600080fd5b8135610d1a848260208601610c7c565b91505092915050565b60008060008060808587031215610d3957600080fd5b6000610d4787828801610cba565b9450506020610d5887828801610cba565b935050604085013567ffffffffffffffff811115610d7557600080fd5b610d8187828801610cf9565b925050606085013567ffffffffffffffff811115610d9e57600080fd5b610daa87828801610cf9565b91505092959194509250565b600080600080600060a08688031215610dce57600080fd5b6000610ddc88828901610cba565b9550506020610ded88828901610cba565b945050604086013567ffffffffffffffff811115610e0a57600080fd5b610e1688828901610cf9565b935050606086013567ffffffffffffffff811115610e3357600080fd5b610e3f88828901610cf9565b925050608086013567ffffffffffffffff811115610e5c57600080fd5b610e6888828901610ccf565b9150509295509295909350565b600080600060608486031215610e8a57600080fd5b6000610e9886828701610cba565b935050602084013567ffffffffffffffff811115610eb557600080fd5b610ec186828701610cf9565b925050604084013567ffffffffffffffff811115610ede57600080fd5b610eea86828701610cf9565b9150509250925092565b610efd81611783565b82525050565b610f14610f0f82611783565b611824565b82525050565b610f2381611795565b82525050565b610f32816117a1565b82525050565b610f49610f44826117a1565b611836565b82525050565b6000610f5a82611746565b610f64818561175c565b9350610f748185602086016117f1565b80840191505092915050565b6000610f8b82611751565b610f958185611767565b9350610fa58185602086016117f1565b610fae8161188b565b840191505092915050565b6000610fc482611751565b610fce8185611778565b9350610fde8185602086016117f1565b80840191505092915050565b6000610ff7601883611767565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611037601f83611767565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611077601c83611778565b91507f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000830152601c82019050919050565b60006110b7600283611778565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006110f7601783611767565b91507f455243313136373a2063726561746532206661696c65640000000000000000006000830152602082019050919050565b6000611137602283611767565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061119d602683611767565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611203602283611767565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611269601783611767565b91507f7369676e6174757265206d7573742062652076616c69640000000000000000006000830152602082019050919050565b60006112a9601d83611767565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6112e5816117cb565b82525050565b6112fc6112f7826117cb565b611852565b82525050565b61130b816117d5565b82525050565b600061131d8284610f4f565b915081905092915050565b60006113348285610f4f565b91506113408284610f03565b6014820191508190509392505050565b600061135b8261106a565b91506113678284610f38565b60208201915081905092915050565b6000611381826110aa565b915061138d8285610f38565b60208201915061139d8284610f38565b6020820191508190509392505050565b60006113b982886112eb565b6020820191506113c98287610f03565b6014820191506113d98286610f03565b6014820191506113e98285610fb9565b91506113f58284610fb9565b91508190509695505050505050565b60006020820190506114196000830184610ef4565b92915050565b60006060820190506114346000830186610ef4565b81810360208301526114468185610f80565b9050818103604083015261145a8184610f80565b9050949350505050565b60006020820190506114796000830184610f1a565b92915050565b60006080820190506114946000830187610f29565b6114a16020830186610ef4565b6114ae6040830185610f29565b6114bb6060830184610f29565b95945050505050565b600060a0820190506114d96000830188610f29565b6114e66020830187610f29565b6114f36040830186610f29565b61150060608301856112dc565b61150d6080830184610ef4565b9695505050505050565b600060808201905061152c6000830187610f29565b6115396020830186611302565b6115466040830185610f29565b6115536060830184610f29565b95945050505050565b600060208201905081810360008301526115768184610f80565b905092915050565b600060408201905081810360008301526115988185610f80565b905081810360208301526115ac8184610f80565b90509392505050565b600060208201905081810360008301526115ce81610fea565b9050919050565b600060208201905081810360008301526115ee8161102a565b9050919050565b6000602082019050818103600083015261160e816110ea565b9050919050565b6000602082019050818103600083015261162e8161112a565b9050919050565b6000602082019050818103600083015261164e81611190565b9050919050565b6000602082019050818103600083015261166e816111f6565b9050919050565b6000602082019050818103600083015261168e8161125c565b9050919050565b600060208201905081810360008301526116ae8161129c565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156116dc576116db61185c565b5b8060405250919050565b600067ffffffffffffffff8211156117015761170061185c565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156117315761173061185c565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061178e826117ab565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561180f5780820151818401526020810190506117f4565b8381111561181e576000848401525b50505050565b600061182f82611840565b9050919050565b6000819050919050565b600061184b8261189c565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6118b281611783565b81146118bd57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220c49d7c0350d9f646267425bda07b93844ea71e272299f1d0624c56d5d83a370164736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c43686f636f666163746f7279000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): Chocofactory
Arg [1] : version (string): 1
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [3] : 43686f636f666163746f72790000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 3100000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.