S Price: $0.611438 (+0.85%)

Contract

0x14149ab9476c12ab55ef6831cbE973B77De7f2Ac

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Implementati...144708502025-03-18 16:31:147 days ago1742315474IN
0x14149ab9...77De7f2Ac
0 S0.0031028550
Add Implementati...144586452025-03-18 15:11:167 days ago1742310676IN
0x14149ab9...77De7f2Ac
0 S0.006185550
Add Implementati...75199342025-02-12 11:42:1041 days ago1739360530IN
0x14149ab9...77De7f2Ac
0 S0.0031116550
Add Implementati...74607952025-02-11 23:36:4142 days ago1739317001IN
0x14149ab9...77De7f2Ac
0 S0.006192650
Add Implementati...74549282025-02-11 22:21:2042 days ago1739312480IN
0x14149ab9...77De7f2Ac
0 S0.006194350
Add Implementati...70581412025-02-08 19:42:4745 days ago1739043767IN
0x14149ab9...77De7f2Ac
0 S0.006192150
Add Implementati...67927732025-02-06 14:27:0247 days ago1738852022IN
0x14149ab9...77De7f2Ac
0 S0.006192150
Add Implementati...57130302025-01-28 20:39:2956 days ago1738096769IN
0x14149ab9...77De7f2Ac
0 S0.006182250
Add Implementati...56311972025-01-27 23:29:0457 days ago1738020544IN
0x14149ab9...77De7f2Ac
0 S0.006424550
Add Implementati...56311972025-01-27 23:29:0457 days ago1738020544IN
0x14149ab9...77De7f2Ac
0 S0.006410850
Add Implementati...56311972025-01-27 23:29:0457 days ago1738020544IN
0x14149ab9...77De7f2Ac
0 S0.0064167550
Add Implementati...56311972025-01-27 23:29:0457 days ago1738020544IN
0x14149ab9...77De7f2Ac
0 S0.006410850
Add Implementati...56311972025-01-27 23:29:0457 days ago1738020544IN
0x14149ab9...77De7f2Ac
0 S0.0073074550

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
157000632025-03-24 17:44:5231 hrs ago1742838292
0x14149ab9...77De7f2Ac
 Contract Creation0 S
157000442025-03-24 17:44:4631 hrs ago1742838286
0x14149ab9...77De7f2Ac
 Contract Creation0 S
157000222025-03-24 17:44:3931 hrs ago1742838279
0x14149ab9...77De7f2Ac
 Contract Creation0 S
157000182025-03-24 17:44:3831 hrs ago1742838278
0x14149ab9...77De7f2Ac
 Contract Creation0 S
157000182025-03-24 17:44:3831 hrs ago1742838278
0x14149ab9...77De7f2Ac
 Contract Creation0 S
157000182025-03-24 17:44:3831 hrs ago1742838278
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156671072025-03-24 14:35:0334 hrs ago1742826903
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156670882025-03-24 14:34:5634 hrs ago1742826896
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156670682025-03-24 14:34:4934 hrs ago1742826889
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156670642025-03-24 14:34:4834 hrs ago1742826888
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156670642025-03-24 14:34:4834 hrs ago1742826888
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156670642025-03-24 14:34:4834 hrs ago1742826888
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156656202025-03-24 14:26:4534 hrs ago1742826405
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156656002025-03-24 14:26:3834 hrs ago1742826398
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156655762025-03-24 14:26:3034 hrs ago1742826390
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156655712025-03-24 14:26:2834 hrs ago1742826388
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156655712025-03-24 14:26:2834 hrs ago1742826388
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156655712025-03-24 14:26:2834 hrs ago1742826388
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156337152025-03-24 11:13:1937 hrs ago1742814799
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156336982025-03-24 11:13:1337 hrs ago1742814793
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156336782025-03-24 11:13:0737 hrs ago1742814787
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156336742025-03-24 11:13:0637 hrs ago1742814786
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156336742025-03-24 11:13:0637 hrs ago1742814786
0x14149ab9...77De7f2Ac
 Contract Creation0 S
156336742025-03-24 11:13:0637 hrs ago1742814786
0x14149ab9...77De7f2Ac
 Contract Creation0 S
150843582025-03-21 19:38:114 days ago1742585891
0x14149ab9...77De7f2Ac
 Contract Creation0 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CoboFactory

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
File 1 of 6 : CoboFactory.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.19;

import "@openzeppelin/contracts/proxy/Clones.sol";

import "./base/BaseOwnable.sol";

/// @title CoboFactory - A contract factory referenced by bytes32 name.
/// @author Cobo Safe Dev Team https://www.cobo.com/
/// @notice Mostly used to manage proxy logic contract. But also ok to manage non-proxy contracts.
/// @dev Contracts to add should extend IVersion interface and implement the `NAME()` function.
contract CoboFactory is BaseOwnable {
    bytes32 public constant NAME = "CoboFactory";
    uint256 public constant VERSION = 1;

    bytes32[] public names;

    // The last one added.
    mapping(bytes32 => address) public latestImplementations;

    // Name => All added contracts.
    mapping(bytes32 => address[]) public implementations;

    // deployer => name => proxy contract list
    // This is expensive. Query ProxyCreated event in SubGraph is a better solution.
    mapping(address => mapping(bytes32 => address[])) public records;

    event ProxyCreated(address indexed deployer, bytes32 indexed name, address indexed implementation, address proxy);
    event ImplementationAdded(bytes32 indexed name, address indexed implementation);

    constructor(address _owner) BaseOwnable(_owner) {}

    function _getLatestImplStrict(bytes32 name) internal view returns (address impl) {
        impl = getLatestImplementation(name);
        require(impl != address(0), "No implementation");
    }

    /// View functions.
    function getLatestImplementation(bytes32 name) public view returns (address impl) {
        impl = latestImplementations[name];
    }

    function getAllImplementations(bytes32 name) external view returns (address[] memory impls) {
        impls = implementations[name];
    }

    function getAllNames() external view returns (bytes32[] memory _names) {
        _names = names;
    }

    /// @dev For etherscan view.
    function getNameString(uint i) public view returns (string memory _name) {
        _name = string(abi.encodePacked(names[i]));
    }

    function getAllNameStrings() external view returns (string[] memory _names) {
        _names = new string[](names.length);
        for (uint i = 0; i < names.length; ++i) {
            _names[i] = getNameString(i);
        }
    }

    function getLastRecord(address deployer, bytes32 name) external view returns (address proxy) {
        address[] storage record = records[deployer][name];
        if (record.length == 0) return address(0);
        proxy = record[record.length - 1];
    }

    function getRecordSize(address deployer, bytes32 name) external view returns (uint256 size) {
        address[] storage record = records[deployer][name];
        size = record.length;
    }

    function getAllRecord(address deployer, bytes32 name) external view returns (address[] memory proxies) {
        return records[deployer][name];
    }

    function getRecords(
        address deployer,
        bytes32 name,
        uint256 start,
        uint256 end
    ) external view returns (address[] memory proxies) {
        address[] storage record = records[deployer][name];
        uint256 size = record.length;
        if (end > size) end = size;
        require(end > start, "end > start");
        proxies = new address[](end - start);
        for (uint i = start; i < end; ++i) {
            proxies[i - start] = record[i];
        }
    }

    function getCreate2Address(address creator, bytes32 name, bytes32 salt) external view returns (address instance) {
        address implementation = getLatestImplementation(name);
        if (implementation == address(0)) return address(0);
        salt = keccak256(abi.encode(creator, salt));
        return Clones.predictDeterministicAddress(implementation, salt);
    }

    /// External functions.

    /// @dev Create EIP 1167 proxy.
    function create(bytes32 name) public returns (address instance) {
        address implementation = _getLatestImplStrict(name);
        instance = Clones.clone(implementation);
        emit ProxyCreated(msg.sender, name, implementation, instance);
    }

    /// @dev Create EIP 1167 proxy with create2.
    function create2(bytes32 name, bytes32 salt) public returns (address instance) {
        address implementation = _getLatestImplStrict(name);

        // Add msg.sender to the salt so no address collissions will occur between different users.
        salt = keccak256(abi.encode(msg.sender, salt));
        instance = Clones.cloneDeterministic(implementation, salt);
        emit ProxyCreated(msg.sender, name, implementation, instance);
    }

    /// @notice Create and record the creation in the contract.
    function createAndRecord(bytes32 name) external returns (address instance) {
        instance = create(name);
        records[msg.sender][name].push(instance);
    }

    function create2AndRecord(bytes32 name, bytes32 salt) public returns (address instance) {
        instance = create2(name, salt);
        records[msg.sender][name].push(instance);
    }

    /// @notice Register a logic contract to the factory. Only the owner is allowed.
    function addImplementation(address impl) external onlyOwner {
        bytes32 name = IVersion(impl).NAME();

        // If new name found, add to `names`.
        if (latestImplementations[name] == address(0)) {
            names.push(name);
        }

        latestImplementations[name] = impl;
        implementations[name].push(impl);
        emit ImplementationAdded(name, impl);
    }
}

File 2 of 6 : Clones.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Clones.sol)

pragma solidity ^0.8.20;

/**
 * @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.
 */
library Clones {
    /**
     * @dev A clone instance deployment failed.
     */
    error ERC1167FailedCreateClone();

    /**
     * @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) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create(0, 0x09, 0x37)
        }
        if (instance == address(0)) {
            revert ERC1167FailedCreateClone();
        }
    }

    /**
     * @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) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create2(0, 0x09, 0x37, salt)
        }
        if (instance == address(0)) {
            revert ERC1167FailedCreateClone();
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40)
            mstore(add(ptr, 0x38), deployer)
            mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
            mstore(add(ptr, 0x14), implementation)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
            mstore(add(ptr, 0x58), salt)
            mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
            predicted := keccak256(add(ptr, 0x43), 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));
    }
}

File 3 of 6 : BaseOwnable.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.19;

import "../Errors.sol";
import "./BaseVersion.sol";

/// @title BaseOwnable - Simple ownership access control contract.
/// @author Cobo Safe Dev Team https://www.cobo.com/
/// @dev Can be used in both proxy and non-proxy mode.
abstract contract BaseOwnable is BaseVersion {
    address public owner;
    address public pendingOwner;
    bool private initialized = false;

    event PendingOwnerSet(address indexed to);
    event NewOwnerSet(address indexed owner);

    modifier onlyOwner() {
        require(owner == msg.sender, Errors.CALLER_IS_NOT_OWNER);
        _;
    }

    /// @dev `owner` is set by argument, thus the owner can any address.
    ///      When used in non-proxy mode, `initialize` can not be called
    ///      after deployment.
    constructor(address _owner) {
        initialize(_owner);
    }

    /// @dev When used in proxy mode, `initialize` can be called by anyone
    ///      to claim the ownership.
    ///      This function can be called only once.
    function initialize(address _owner) public {
        require(!initialized, "Already initialized");
        _setOwner(_owner);
        initialized = true;
    }

    /// @notice User should ensure the corrent owner address set, or the
    ///         ownership may be transferred to blackhole. It is recommended to
    ///         take a safer way with setPendingOwner() + acceptOwner().
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "New Owner is zero");
        _setOwner(newOwner);
    }

    /// @notice The original owner calls `setPendingOwner(newOwner)` and the new
    ///         owner calls `acceptOwner()` to take the ownership.
    function setPendingOwner(address to) external onlyOwner {
        pendingOwner = to;
        emit PendingOwnerSet(pendingOwner);
    }

    function acceptOwner() external {
        require(msg.sender == pendingOwner);
        _setOwner(pendingOwner);
    }

    /// @notice Make the contract immutable.
    function renounceOwnership() external onlyOwner {
        _setOwner(address(0));
    }

    // Internal functions

    /// @dev Clear pendingOwner to prevent from reclaiming the ownership.
    function _setOwner(address _owner) internal {
        owner = _owner;
        pendingOwner = address(0);
        emit NewOwnerSet(owner);
    }
}

File 4 of 6 : Errors.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.19;

/// @dev Common errors. This helps reducing the contract size.
library Errors {
    // "E1";

    // Call/Static-call failed.
    string constant CALL_FAILED = "E2";

    // Argument's type not supported in View Variant.
    string constant INVALID_VIEW_ARG_SOL_TYPE = "E3";

    // Invalid length for variant raw data.
    string constant INVALID_VARIANT_RAW_DATA = "E4";

    // "E5";

    // Invalid variant type.
    string constant INVALID_VAR_TYPE = "E6";

    // Rule not exists
    string constant RULE_NOT_EXISTS = "E7";

    // Variant name not found.
    string constant VAR_NAME_NOT_FOUND = "E8";

    // Rule: v1/v2 solType mismatch
    string constant SOL_TYPE_MISMATCH = "E9";

    // "E10";

    // Invalid rule OP.
    string constant INVALID_RULE_OP = "E11";

    //  "E12";

    // "E13";

    //  "E14";

    // "E15";

    // "E16";

    // "E17";

    // "E18";

    // "E19";

    // "E20";

    // checkCmpOp: OP not support
    string constant CMP_OP_NOT_SUPPORT = "E21";

    // checkBySolType: Invalid op for bool
    string constant INVALID_BOOL_OP = "E22";

    // checkBySolType: Invalid op
    string constant CHECK_INVALID_OP = "E23";

    // Invalid solidity type.
    string constant INVALID_SOL_TYPE = "E24";

    // computeBySolType: invalid vm op
    string constant INVALID_VM_BOOL_OP = "E25";

    // computeBySolType: invalid vm arith op
    string constant INVALID_VM_ARITH_OP = "E26";

    // onlyCaller: Invalid caller
    string constant INVALID_CALLER = "E27";

    // "E28";

    // Side-effect is not allowed here.
    string constant SIDE_EFFECT_NOT_ALLOWED = "E29";

    // Invalid variant count for the rule op.
    string constant INVALID_VAR_COUNT = "E30";

    // extractCallData: Invalid op.
    string constant INVALID_EXTRACTOR_OP = "E31";

    // extractCallData: Invalid array index.
    string constant INVALID_ARRAY_INDEX = "E32";

    // extractCallData: No extract op.
    string constant NO_EXTRACT_OP = "E33";

    // extractCallData: No extract path.
    string constant NO_EXTRACT_PATH = "E34";

    // BaseOwnable: caller is not owner
    string constant CALLER_IS_NOT_OWNER = "E35";

    // BaseOwnable: Already initialized
    string constant ALREADY_INITIALIZED = "E36";

    // "E37";

    // "E38";

    // BaseACL: ACL check method should not return anything.
    string constant ACL_FUNC_RETURNS_NON_EMPTY = "E39";

    // "E40";

    // BaseAccount: Invalid delegate.
    string constant INVALID_DELEGATE = "E41";

    // RootAuthorizer: delegateCallAuthorizer not set
    string constant DELEGATE_CALL_AUTH_NOT_SET = "E42";

    // RootAuthorizer: callAuthorizer not set.
    string constant CALL_AUTH_NOT_SET = "E43";

    // BaseAccount: Authorizer not set.
    string constant AUTHORIZER_NOT_SET = "E44";

    // BaseAccount: Invalid authorizer flag.
    string constant INVALID_AUTHORIZER_FLAG = "E45";

    // BaseAuthorizer: Authorizer paused.
    string constant AUTHORIZER_PAUSED = "E46";

    // Authorizer set: Invalid hint.
    string constant INVALID_HINT = "E47";

    // Authorizer set: All auth deny.
    string constant ALL_AUTH_FAILED = "E48";

    // BaseACL: Method not allow.
    string constant METHOD_NOT_ALLOW = "E49";

    // AuthorizerUnionSet: Invalid hint collected.
    string constant INVALID_HINT_COLLECTED = "E50";

    // AuthorizerSet: Empty auth set
    string constant EMPTY_AUTH_SET = "E51";

    // AuthorizerSet: hint not implement.
    string constant HINT_NOT_IMPLEMENT = "E52";

    // RoleAuthorizer: Empty role set
    string constant EMPTY_ROLE_SET = "E53";

    // RoleAuthorizer: No auth for the role
    string constant NO_AUTH_FOR_THE_ROLE = "E54";

    // BaseACL: No in contract white list.
    string constant NOT_IN_CONTRACT_LIST = "E55";

    // BaseACL: Same process not allowed to install twice.
    string constant SAME_PROCESS_TWICE = "E56";

    // BaseAuthorizer: Account not set (then can not find roleManger)
    string constant ACCOUNT_NOT_SET = "E57";

    // BaseAuthorizer: roleManger not set
    string constant ROLE_MANAGER_NOT_SET = "E58";
}

File 5 of 6 : BaseVersion.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.19;

import "../../interfaces/IVersion.sol";

/// @title BaseVersion - Provides version information
/// @author Cobo Safe Dev Team https://www.cobo.com/
/// @dev
///    Implement NAME() and VERSION() methods according to IVersion interface.
///
///    Or just:
///      bytes32 public constant NAME = "<Your contract name>";
///      uint256 public constant VERSION = <Your contract version>;
///
///    Change the NAME when writing new kind of contract.
///    Change the VERSION when upgrading existing contract.
abstract contract BaseVersion is IVersion {
    /// @dev Convert to `string` which looks prettier on Etherscan viewer.
    function _NAME() external view virtual returns (string memory) {
        return string(abi.encodePacked(this.NAME()));
    }
}

File 6 of 6 : IVersion.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.19;

interface IVersion {
    function NAME() external view returns (bytes32 name);

    function VERSION() external view returns (uint256 version);
}

Settings
{
  "remappings": [
    "openzeppelin/=lib/openzeppelin-contracts/",
    "forge-std/=lib/forge-std/src/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC1167FailedCreateClone","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"ImplementationAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"NewOwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PendingOwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"address","name":"proxy","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"impl","type":"address"}],"name":"addImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"create","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create2","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create2AndRecord","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"createAndRecord","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getAllImplementations","outputs":[{"internalType":"address[]","name":"impls","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllNameStrings","outputs":[{"internalType":"string[]","name":"_names","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllNames","outputs":[{"internalType":"bytes32[]","name":"_names","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getAllRecord","outputs":[{"internalType":"address[]","name":"proxies","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getCreate2Address","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getLastRecord","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getLatestImplementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getNameString","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getRecordSize","outputs":[{"internalType":"uint256","name":"size","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getRecords","outputs":[{"internalType":"address[]","name":"proxies","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"implementations","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"latestImplementations","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"names","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"records","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"setPendingOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60803460a957601f61124638819003918201601f19168301916001600160401b0383118484101760ad5780849260209460405283398101031260a957516001600160a01b0381169081900360a9576001545f80546001600160a01b0319168317815560405192907f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b9080a26001600160a81b031916600160a01b1760015561118490816100c28239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630383eddc14610c0657806308dbebf614610b6f578063271a799c14610a815780632c1b79d614610a3d578063300a62bc14610a1e5780633054b76e146109e757806344ab6680146109645780634622ab03146109af578063523d53241461099657806352b347aa14610964578063715018a6146108f45780637368a8ce146108d65780637662f1121461086c578063772fa9da146108335780638da5cb5b1461080c5780639815121314610785578063a3f4df7e1461075c578063c42069ec146106e7578063c4d66de814610668578063c516bd48146105ef578063c6e2a40014610488578063d9eac8b414610461578063dcebb2001461034a578063e30c397814610322578063ebbc4965146102f5578063eff95b3e146102b8578063f2fde38b1461022d578063fb825e5f146101775763ffa1ad7414610158575f80fd5b34610173575f36600319011261017357602060405160018152f35b5f80fd5b34610173575f366003190112610173576040518060206002549283815201809260025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace905f5b81811061021757505050816101d5910382610cf8565b604051918291602083019060208452518091526040830191905f5b8181106101fe575050500390f35b82518452859450602093840193909201916001016101f0565b82548452602090930192600192830192016101bf565b3461017357602036600319011261017357610246610c49565b5f54610265906001600160a01b031661025d610e8b565b903314610ebb565b6001600160a01b0381161561027f5761027d906110fc565b005b60405162461bcd60e51b81526020600482015260116024820152704e6577204f776e6572206973207a65726f60781b6044820152606490fd5b346101735760603660031901126101735760206102e36102d6610c49565b6044359060243590610ffa565b6040516001600160a01b039091168152f35b34610173575f366003190112610173576001546001600160a01b0316338190036101735761027d906110fc565b34610173575f366003190112610173576001546040516001600160a01b039091168152602090f35b3461017357608036600319011261017357610363610c49565b604435906064359060018060a01b03165f52600560205260405f206024355f5260205260405f20918254808311610459575b5080821115610426576103a88183610f85565b926103b284610d45565b936103c06040519586610cf8565b8085526103cf601f1991610d45565b01366020860137815b8381106103f157604051806103ed8782610cb6565b0390f35b806103fe60019284610c8b565b838060a01b0391549060031b1c1661041f6104198684610f85565b88610d5d565b52016103d8565b60405162461bcd60e51b815260206004820152600b60248201526a195b99080f881cdd185c9d60aa1b6044820152606490fd5b915083610395565b346101735760403660031901126101735760206102e361047f610c49565b60243590610fa6565b34610173576020366003190112610173576104a1610c49565b5f546104b8906001600160a01b031661025d610e8b565b6040516351fa6fbf60e11b81526001600160a01b03821691602082600481865afa9182156105e4575f926105b0575b505f828152600360205260409020546001600160a01b03161561055e575b61053890825f52600360205260405f20846001600160601b0360a01b825416179055825f52600460205260405f20610d71565b7fd58fcbf380bae0241f359d0f293ee1c39cdcc598a96dfa5339ecad21560b4db65f80a3005b60025490600160401b82101561059c576105818260016105389401600255610c5f565b81549060031b9085821b915f19901b19161790559050610505565b634e487b7160e01b5f52604160045260245ffd5b9091506020813d6020116105dc575b816105cc60209383610cf8565b81010312610173575190836104e7565b3d91506105bf565b6040513d5f823e3d90fd5b34610173576020366003190112610173576004355f52600460205260405f206040519081602082549182815201915f5260205f20905f5b818110610649576103ed8561063d81870382610cf8565b60405191829182610cb6565b82546001600160a01b0316845260209093019260019283019201610626565b3461017357602036600319011261017357610681610c49565b60ff60015460a01c166106ac57610697906110fc565b6001805460ff60a01b1916600160a01b179055005b60405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461017357602036600319011261017357610700610c49565b5f54610717906001600160a01b031661025d610e8b565b600180546001600160a01b0319166001600160a01b039290921691821790557f68f49b346b94582a8b5f9d10e3fe3365318fe8f191ff8dce7c59c6cad06b02f55f80a2005b34610173575f366003190112610173576040516a436f626f466163746f727960a81b8152602090f35b34610173576040366003190112610173576001600160a01b036107a6610c49565b165f52600560205260405f206024355f5260205260405f206040519081602082549182815201915f5260205f20905f5b8181106107ed576103ed8561063d81870382610cf8565b82546001600160a01b03168452602090930192600192830192016107d6565b34610173575f366003190112610173575f546040516001600160a01b039091168152602090f35b3461017357602061084e61084636610ca0565b819291610db2565b90335f526005835260405f20905f5282526102e38160405f20610d71565b3461017357606036600319011261017357610885610c49565b6044359060018060a01b03165f52600560205260405f206024355f5260205260405f208054821015610173576020916108bd91610c8b565b905460405160039290921b1c6001600160a01b03168152f35b346101735760203660031901126101735760206102e3600435610eeb565b34610173575f366003190112610173575f5461091b906001600160a01b031661025d610e8b565b6001600160601b0360a01b5f54165f556001600160601b0360a01b600154166001555f7f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b8180a2005b34610173576020366003190112610173576004355f526003602052602060018060a01b0360405f205416604051908152f35b346101735760206102e36109a936610ca0565b90610db2565b3461017357602036600319011261017357600435600254811015610173576109d8602091610c5f565b90549060031b1c604051908152f35b34610173576040366003190112610173576024356004355f52600460205260405f208054821015610173576020916108bd91610c8b565b3461017357602036600319011261017357602060043561084e81610eeb565b34610173576040366003190112610173576001600160a01b03610a5e610c49565b165f52600560205260405f206024355f52602052602060405f2054604051908152f35b34610173575f36600319011261017357600254610a9d81610d45565b90610aab6040519283610cf8565b808252601f19610aba82610d45565b015f5b818110610b5e5750505f5b818110610b3657826040518091602082016020835281518091526040830190602060408260051b8601019301915f905b828210610b0757505050500390f35b91936001919395506020610b268192603f198a82030186528851610c25565b9601920192018594939192610af8565b80610b42600192610d1a565b610b4c8286610d5d565b52610b578185610d5d565b5001610ac8565b806060602080938701015201610abd565b34610173575f366003190112610173576040516351fa6fbf60e11b8152602081600481305afa80156105e4575f90610bd2575b6103ed9060405190602082015260208152610bbe604082610cf8565b604051918291602083526020830190610c25565b506020813d602011610bfe575b81610bec60209383610cf8565b81010312610173576103ed9051610ba2565b3d9150610bdf565b34610173576020366003190112610173576103ed610bbe600435610d1a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361017357565b600254811015610c775760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015610c77575f5260205f2001905f90565b6040906003190112610173576004359060243590565b60206040818301928281528451809452019201905f5b818110610cd95750505090565b82516001600160a01b0316845260209384019390920191600101610ccc565b90601f8019910116810190811067ffffffffffffffff82111761059c57604052565b610d2390610c5f565b90549060031b1c60405190602082015260208152610d42604082610cf8565b90565b67ffffffffffffffff811161059c5760051b60200190565b8051821015610c775760209160051b010190565b8054600160401b81101561059c57610d8e91600182018155610c8b565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b919091610dbe816110a3565b604080513360208201908152918101959095529093610dea81606081015b03601f198101835282610cf8565b519020763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8560881c16175f526e5af43d82803e903d91602b57fd5bf38460781b17602052603760095ff56001600160a01b03811691908215610e7c57604051928352936001600160a01b03169133907f532cf4635ae9ff4e1e42ba14917e825d00f602f28297cc654fa3b414b911232b90602090a4565b6330be1a3d60e21b5f5260045ffd5b604051906040820182811067ffffffffffffffff82111761059c57604052600382526245333560e81b6020830152565b15610ec35750565b60405162461bcd60e51b815260206004820152908190610ee7906024830190610c25565b0390fd5b90610ef5826110a3565b91763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8460881c16175f526e5af43d82803e903d91602b57fd5bf38360781b17602052603760095ff06001600160a01b03811691908215610e7c57604051928352936001600160a01b03169133907f532cf4635ae9ff4e1e42ba14917e825d00f602f28297cc654fa3b414b911232b90602090a4565b91908203918211610f9257565b634e487b7160e01b5f52601160045260245ffd5b60018060a01b03165f52600560205260405f20905f5260205260405f2080548015610ff4575f198101908111610f9257610fdf91610c8b565b905460039190911b1c6001600160a01b031690565b50505f90565b91905f52600360205260018060a01b0360405f205416801561109c57604080516001600160a01b039094166020850190815290840192909252605592604392906110478160608101610ddc565b519020604051913060388401526f5af43d82803e903d91602b57fd5bf3ff60248401526014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152012090565b5050505f90565b5f908152600360205260409020546001600160a01b03169081156110c357565b60405162461bcd60e51b815260206004820152601160248201527027379034b6b83632b6b2b73a30ba34b7b760791b6044820152606490fd5b60018060a01b0316806001600160601b0360a01b5f5416175f556001600160601b0360a01b600154166001557f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b5f80a256fea2646970667358221220fe9cea6e5aa7930266437635c93938eb2299e3c4d539e4e317f943c18df7754364736f6c634300081a0033000000000000000000000000dd006633a161deb07661b7e73ecf1fe3dde3b1ff

Deployed Bytecode

0x60806040526004361015610011575f80fd5b5f3560e01c80630383eddc14610c0657806308dbebf614610b6f578063271a799c14610a815780632c1b79d614610a3d578063300a62bc14610a1e5780633054b76e146109e757806344ab6680146109645780634622ab03146109af578063523d53241461099657806352b347aa14610964578063715018a6146108f45780637368a8ce146108d65780637662f1121461086c578063772fa9da146108335780638da5cb5b1461080c5780639815121314610785578063a3f4df7e1461075c578063c42069ec146106e7578063c4d66de814610668578063c516bd48146105ef578063c6e2a40014610488578063d9eac8b414610461578063dcebb2001461034a578063e30c397814610322578063ebbc4965146102f5578063eff95b3e146102b8578063f2fde38b1461022d578063fb825e5f146101775763ffa1ad7414610158575f80fd5b34610173575f36600319011261017357602060405160018152f35b5f80fd5b34610173575f366003190112610173576040518060206002549283815201809260025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace905f5b81811061021757505050816101d5910382610cf8565b604051918291602083019060208452518091526040830191905f5b8181106101fe575050500390f35b82518452859450602093840193909201916001016101f0565b82548452602090930192600192830192016101bf565b3461017357602036600319011261017357610246610c49565b5f54610265906001600160a01b031661025d610e8b565b903314610ebb565b6001600160a01b0381161561027f5761027d906110fc565b005b60405162461bcd60e51b81526020600482015260116024820152704e6577204f776e6572206973207a65726f60781b6044820152606490fd5b346101735760603660031901126101735760206102e36102d6610c49565b6044359060243590610ffa565b6040516001600160a01b039091168152f35b34610173575f366003190112610173576001546001600160a01b0316338190036101735761027d906110fc565b34610173575f366003190112610173576001546040516001600160a01b039091168152602090f35b3461017357608036600319011261017357610363610c49565b604435906064359060018060a01b03165f52600560205260405f206024355f5260205260405f20918254808311610459575b5080821115610426576103a88183610f85565b926103b284610d45565b936103c06040519586610cf8565b8085526103cf601f1991610d45565b01366020860137815b8381106103f157604051806103ed8782610cb6565b0390f35b806103fe60019284610c8b565b838060a01b0391549060031b1c1661041f6104198684610f85565b88610d5d565b52016103d8565b60405162461bcd60e51b815260206004820152600b60248201526a195b99080f881cdd185c9d60aa1b6044820152606490fd5b915083610395565b346101735760403660031901126101735760206102e361047f610c49565b60243590610fa6565b34610173576020366003190112610173576104a1610c49565b5f546104b8906001600160a01b031661025d610e8b565b6040516351fa6fbf60e11b81526001600160a01b03821691602082600481865afa9182156105e4575f926105b0575b505f828152600360205260409020546001600160a01b03161561055e575b61053890825f52600360205260405f20846001600160601b0360a01b825416179055825f52600460205260405f20610d71565b7fd58fcbf380bae0241f359d0f293ee1c39cdcc598a96dfa5339ecad21560b4db65f80a3005b60025490600160401b82101561059c576105818260016105389401600255610c5f565b81549060031b9085821b915f19901b19161790559050610505565b634e487b7160e01b5f52604160045260245ffd5b9091506020813d6020116105dc575b816105cc60209383610cf8565b81010312610173575190836104e7565b3d91506105bf565b6040513d5f823e3d90fd5b34610173576020366003190112610173576004355f52600460205260405f206040519081602082549182815201915f5260205f20905f5b818110610649576103ed8561063d81870382610cf8565b60405191829182610cb6565b82546001600160a01b0316845260209093019260019283019201610626565b3461017357602036600319011261017357610681610c49565b60ff60015460a01c166106ac57610697906110fc565b6001805460ff60a01b1916600160a01b179055005b60405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461017357602036600319011261017357610700610c49565b5f54610717906001600160a01b031661025d610e8b565b600180546001600160a01b0319166001600160a01b039290921691821790557f68f49b346b94582a8b5f9d10e3fe3365318fe8f191ff8dce7c59c6cad06b02f55f80a2005b34610173575f366003190112610173576040516a436f626f466163746f727960a81b8152602090f35b34610173576040366003190112610173576001600160a01b036107a6610c49565b165f52600560205260405f206024355f5260205260405f206040519081602082549182815201915f5260205f20905f5b8181106107ed576103ed8561063d81870382610cf8565b82546001600160a01b03168452602090930192600192830192016107d6565b34610173575f366003190112610173575f546040516001600160a01b039091168152602090f35b3461017357602061084e61084636610ca0565b819291610db2565b90335f526005835260405f20905f5282526102e38160405f20610d71565b3461017357606036600319011261017357610885610c49565b6044359060018060a01b03165f52600560205260405f206024355f5260205260405f208054821015610173576020916108bd91610c8b565b905460405160039290921b1c6001600160a01b03168152f35b346101735760203660031901126101735760206102e3600435610eeb565b34610173575f366003190112610173575f5461091b906001600160a01b031661025d610e8b565b6001600160601b0360a01b5f54165f556001600160601b0360a01b600154166001555f7f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b8180a2005b34610173576020366003190112610173576004355f526003602052602060018060a01b0360405f205416604051908152f35b346101735760206102e36109a936610ca0565b90610db2565b3461017357602036600319011261017357600435600254811015610173576109d8602091610c5f565b90549060031b1c604051908152f35b34610173576040366003190112610173576024356004355f52600460205260405f208054821015610173576020916108bd91610c8b565b3461017357602036600319011261017357602060043561084e81610eeb565b34610173576040366003190112610173576001600160a01b03610a5e610c49565b165f52600560205260405f206024355f52602052602060405f2054604051908152f35b34610173575f36600319011261017357600254610a9d81610d45565b90610aab6040519283610cf8565b808252601f19610aba82610d45565b015f5b818110610b5e5750505f5b818110610b3657826040518091602082016020835281518091526040830190602060408260051b8601019301915f905b828210610b0757505050500390f35b91936001919395506020610b268192603f198a82030186528851610c25565b9601920192018594939192610af8565b80610b42600192610d1a565b610b4c8286610d5d565b52610b578185610d5d565b5001610ac8565b806060602080938701015201610abd565b34610173575f366003190112610173576040516351fa6fbf60e11b8152602081600481305afa80156105e4575f90610bd2575b6103ed9060405190602082015260208152610bbe604082610cf8565b604051918291602083526020830190610c25565b506020813d602011610bfe575b81610bec60209383610cf8565b81010312610173576103ed9051610ba2565b3d9150610bdf565b34610173576020366003190112610173576103ed610bbe600435610d1a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361017357565b600254811015610c775760025f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015610c77575f5260205f2001905f90565b6040906003190112610173576004359060243590565b60206040818301928281528451809452019201905f5b818110610cd95750505090565b82516001600160a01b0316845260209384019390920191600101610ccc565b90601f8019910116810190811067ffffffffffffffff82111761059c57604052565b610d2390610c5f565b90549060031b1c60405190602082015260208152610d42604082610cf8565b90565b67ffffffffffffffff811161059c5760051b60200190565b8051821015610c775760209160051b010190565b8054600160401b81101561059c57610d8e91600182018155610c8b565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b919091610dbe816110a3565b604080513360208201908152918101959095529093610dea81606081015b03601f198101835282610cf8565b519020763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8560881c16175f526e5af43d82803e903d91602b57fd5bf38460781b17602052603760095ff56001600160a01b03811691908215610e7c57604051928352936001600160a01b03169133907f532cf4635ae9ff4e1e42ba14917e825d00f602f28297cc654fa3b414b911232b90602090a4565b6330be1a3d60e21b5f5260045ffd5b604051906040820182811067ffffffffffffffff82111761059c57604052600382526245333560e81b6020830152565b15610ec35750565b60405162461bcd60e51b815260206004820152908190610ee7906024830190610c25565b0390fd5b90610ef5826110a3565b91763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8460881c16175f526e5af43d82803e903d91602b57fd5bf38360781b17602052603760095ff06001600160a01b03811691908215610e7c57604051928352936001600160a01b03169133907f532cf4635ae9ff4e1e42ba14917e825d00f602f28297cc654fa3b414b911232b90602090a4565b91908203918211610f9257565b634e487b7160e01b5f52601160045260245ffd5b60018060a01b03165f52600560205260405f20905f5260205260405f2080548015610ff4575f198101908111610f9257610fdf91610c8b565b905460039190911b1c6001600160a01b031690565b50505f90565b91905f52600360205260018060a01b0360405f205416801561109c57604080516001600160a01b039094166020850190815290840192909252605592604392906110478160608101610ddc565b519020604051913060388401526f5af43d82803e903d91602b57fd5bf3ff60248401526014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152012090565b5050505f90565b5f908152600360205260409020546001600160a01b03169081156110c357565b60405162461bcd60e51b815260206004820152601160248201527027379034b6b83632b6b2b73a30ba34b7b760791b6044820152606490fd5b60018060a01b0316806001600160601b0360a01b5f5416175f556001600160601b0360a01b600154166001557f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b5f80a256fea2646970667358221220fe9cea6e5aa7930266437635c93938eb2299e3c4d539e4e317f943c18df7754364736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dd006633a161deb07661b7e73ecf1fe3dde3b1ff

-----Decoded View---------------
Arg [0] : _owner (address): 0xDd006633A161deb07661B7e73eCf1fe3DdE3B1ff

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dd006633a161deb07661b7e73ecf1fe3dde3b1ff


Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.