ETH Price: $1,578.91 (-3.30%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy185910802023-11-17 10:44:11516 days ago1700217851IN
0x7B44d15c...A01bFD4D4
0 ETH0.0248019721.79431263
Deploy184091422023-10-22 23:35:23541 days ago1698017723IN
0x7B44d15c...A01bFD4D4
0 ETH0.010608029.48915827
Deploy183387222023-10-13 3:13:11551 days ago1697166791IN
0x7B44d15c...A01bFD4D4
0 ETH0.005849565.23337957
Deploy183175042023-10-10 3:54:59554 days ago1696910099IN
0x7B44d15c...A01bFD4D4
0 ETH0.005813325.10970826
Deploy182433752023-09-29 19:11:59564 days ago1696014719IN
0x7B44d15c...A01bFD4D4
0 ETH0.009165718.05489254
Deploy181827512023-09-21 7:25:35573 days ago1695281135IN
0x7B44d15c...A01bFD4D4
0 ETH0.009201888.23177274
Deploy180903392023-09-08 7:54:11586 days ago1694159651IN
0x7B44d15c...A01bFD4D4
0 ETH0.0124289210.92274075
Transfer180211532023-08-29 15:25:59595 days ago1693322759IN
0x7B44d15c...A01bFD4D4
0.01 ETH0.0020015295.310613
Deploy180194372023-08-29 9:38:59596 days ago1693301939IN
0x7B44d15c...A01bFD4D4
0 ETH0.0215590418.94784131
Transfer*180194282023-08-29 9:37:11596 days ago1693301831IN
0x7B44d15c...A01bFD4D4
0 ETH0.000400419
Deploy175680432023-06-27 3:28:47659 days ago1687836527IN
0x7B44d15c...A01bFD4D4
0 ETH0.0174907715.64662882
Deploy175325592023-06-22 3:41:47664 days ago1687405307IN
0x7B44d15c...A01bFD4D4
0 ETH0.0171694715.35953843
Deploy175179972023-06-20 2:39:47666 days ago1687228787IN
0x7B44d15c...A01bFD4D4
0 ETH0.0164290814.43784647
Deploy173817062023-05-31 22:06:59685 days ago1685570819IN
0x7B44d15c...A01bFD4D4
0 ETH0.0381751634.07395159
Deploy173108292023-05-21 22:56:11695 days ago1684709771IN
0x7B44d15c...A01bFD4D4
0 ETH0.0307932427.06503794
Deploy172381122023-05-11 15:51:59705 days ago1683820319IN
0x7B44d15c...A01bFD4D4
0 ETH0.12335495110.09923114
Deploy171977992023-05-05 23:48:11711 days ago1683330491IN
0x7B44d15c...A01bFD4D4
0 ETH0.1533803134.79598421
Deploy171947162023-05-05 13:25:23711 days ago1683293123IN
0x7B44d15c...A01bFD4D4
0 ETH0.15531319136.50762701
Deploy171805802023-05-03 13:45:59713 days ago1683121559IN
0x7B44d15c...A01bFD4D4
0 ETH0.0871893677.99235023
Deploy171755352023-05-02 20:44:11714 days ago1683060251IN
0x7B44d15c...A01bFD4D4
0 ETH0.1055785691
Deploy171663632023-05-01 13:46:23715 days ago1682948783IN
0x7B44d15c...A01bFD4D4
0 ETH0.0795695571.17935546
Deploy171253832023-04-25 19:34:47721 days ago1682451287IN
0x7B44d15c...A01bFD4D4
0 ETH0.0402507635.38124641
Deploy171030612023-04-22 16:25:59724 days ago1682180759IN
0x7B44d15c...A01bFD4D4
0 ETH0.0469362241.24876073
Deploy170880632023-04-20 13:40:23726 days ago1681998023IN
0x7B44d15c...A01bFD4D4
0 ETH0.0699826962.60472447
Deploy170560702023-04-16 0:57:11731 days ago1681606631IN
0x7B44d15c...A01bFD4D4
0 ETH0.0274820124.5815397
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SignatureDropDeployer

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : SignatureDropDeployer.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

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

import "./Ownable.sol";

interface ITWFactory {
    function deployProxyByImplementation(
        address _implementation,
        bytes memory _data,
        bytes32 _salt
    ) external returns (address);
}

interface ITWTokenERC1155 {
    function initialize(
        address _defaultAdmin,
        string memory _name,
        string memory _symbol,
        string memory _contractURI,
        address[] memory _trustedForwarders,
        address _primarySaleRecipient,
        address _royaltyRecipient,
        uint128 _royaltyBps,
        uint128 _platformFeeBps,
        address _platformFeeRecipient
    ) external;

    function mintTo(
        address to,
        uint256 tokenId,
        string calldata uri,
        uint256 amount
    ) external;

    function grantRole(bytes32 role, address account) external;

    function revokeRole(bytes32 role, address account) external;

    function setOwner(address _newOwner) external;

    function setFlatPlatformFeeInfo(
        address _platformFeeRecipient,
        uint256 _flatFee
    ) external;

    enum PlatformFeeType {
        Bps,
        FLAT
    }

    function setPlatformFeeType(PlatformFeeType _feeType) external;
}

interface ISignatureDropDeployer {
    event ProxyDeployed(
        address indexed proxyAddress,
        address indexed admin,
        bytes32 salt
    );

    event NewMinter(address indexed oldMinter, address indexed newMinter);

    struct DeployParams {
        address admin;
        string _name;
        string _symbol;
        string _contractURI;
        string _uri;
        address[] _trustedForwarders;
        address _primarySaleRecipient;
        address _royaltyRecipient;
        uint128 _royaltyBps;
        uint256 _platformFee;
        address _platformFeeRecipient;
        bytes32 salt;
    }

    function setMinter(address _newMinter) external;

    function deploy(DeployParams memory params) external returns (address);

    function predictDeterministicAddress(bytes32 _salt)
        external
        view
        returns (address);
}

contract SignatureDropDeployer is ISignatureDropDeployer, Ownable {
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    bytes32 public constant TRANSFER_ROLE = keccak256("TRANSFER_ROLE");

    address public immutable TWFactoryAddress;

    address public immutable TWEditionImplementationAddress;

    address public minter;

    constructor(
        address _owner,
        address _minter,
        address _factory,
        address _implementation
    ) Ownable(_owner) {
        _setMinter(_minter);

        TWFactoryAddress = _factory;
        TWEditionImplementationAddress = _implementation;
    }

    function setMinter(address _newMinter) public override onlyOwner {
        _setMinter(_newMinter);
    }

    function deploy(DeployParams memory params)
        public
        override
        returns (address)
    {
        bytes memory callData = abi.encodeWithSelector(
            ITWTokenERC1155.initialize.selector,
            address(this),
            params._name,
            params._symbol,
            params._contractURI,
            params._trustedForwarders,
            params._primarySaleRecipient,
            params._royaltyRecipient,
            params._royaltyBps,
            0, // no bps fee for platform
            params._platformFeeRecipient
        );

        // Deploy proxy.
        address proxyAddress = _deployProxy(callData, params.salt);

        // Mint token to admin.
        ITWTokenERC1155(proxyAddress).mintTo(
            params.admin,
            type(uint256).max,
            params._uri,
            0
        );

        // Set fees.
        _setFees(
            proxyAddress,
            params._platformFeeRecipient,
            params._platformFee
        );

        // Set roles.
        _setRoles(proxyAddress, params.admin);

        emit ProxyDeployed(proxyAddress, params.admin, params.salt);

        return proxyAddress;
    }

    function predictDeterministicAddress(bytes32 _salt)
        public
        view
        override
        returns (address)
    {
        return
            Clones.predictDeterministicAddress(
                TWEditionImplementationAddress,
                keccak256(abi.encodePacked(address(this), _salt)),
                TWFactoryAddress
            );
    }

    function _setMinter(address _newMinter) internal {
        emit NewMinter(minter, _newMinter);

        minter = _newMinter;
    }

    function _deployProxy(bytes memory callData, bytes32 salt)
        internal
        returns (address)
    {
        return
            ITWFactory(TWFactoryAddress).deployProxyByImplementation(
                TWEditionImplementationAddress,
                callData,
                salt
            );
    }

    function _setFees(
        address proxyAddress,
        address _platformFeeRecipient,
        uint256 _platformFee
    ) internal {
        ITWTokenERC1155(proxyAddress).setFlatPlatformFeeInfo(
            _platformFeeRecipient,
            _platformFee
        );
        ITWTokenERC1155(proxyAddress).setPlatformFeeType(
            ITWTokenERC1155.PlatformFeeType.FLAT
        );
    }

    function _setRoles(address proxyAddress, address admin) internal {
        // Grant minter role to Mirror wallet.
        ITWTokenERC1155(proxyAddress).grantRole(MINTER_ROLE, minter);

        // Set roles for admin.
        ITWTokenERC1155(proxyAddress).grantRole(DEFAULT_ADMIN_ROLE, admin);
        ITWTokenERC1155(proxyAddress).grantRole(MINTER_ROLE, admin);
        ITWTokenERC1155(proxyAddress).grantRole(TRANSFER_ROLE, admin);

        // Remove roles for deployer.
        ITWTokenERC1155(proxyAddress).revokeRole(MINTER_ROLE, address(this));
        ITWTokenERC1155(proxyAddress).revokeRole(TRANSFER_ROLE, address(this));

        // Transfer ownership to admin.
        ITWTokenERC1155(proxyAddress).setOwner(admin);

        ITWTokenERC1155(proxyAddress).revokeRole(
            DEFAULT_ADMIN_ROLE,
            address(this)
        );
    }
}

File 2 of 3 : Clones.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (proxy/Clones.sol)

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) {
        /// @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)
        }
        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) {
        /// @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)
        }
        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) {
        /// @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 3 : Ownable.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.13;

interface IOwnableEvents {
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
}

interface IOwnable {
    function transferOwnership(address nextOwner_) external;

    function cancelOwnershipTransfer() external;

    function acceptOwnership() external;

    function renounceOwnership() external;

    function isOwner() external view returns (bool);

    function isNextOwner() external view returns (bool);
}

contract Ownable is IOwnable, IOwnableEvents {
    address public owner;
    address private nextOwner;

    /// > [[[[[[[[[[[ Modifiers ]]]]]]]]]]]

    modifier onlyOwner() {
        require(isOwner(), "caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(isNextOwner(), "current owner must set caller as next owner.");
        _;
    }

    /// @notice Initialize contract by setting the initial owner.
    constructor(address owner_) {
        _setInitialOwner(owner_);
    }

    /// @notice Initiate ownership transfer by setting nextOwner.
    function transferOwnership(address nextOwner_) external override onlyOwner {
        require(nextOwner_ != address(0), "Next owner is the zero address.");

        nextOwner = nextOwner_;
    }

    /// @notice Cancel ownership transfer by deleting nextOwner.
    function cancelOwnershipTransfer() external override onlyOwner {
        delete nextOwner;
    }

    /// @notice Accepts ownership transfer by setting owner.
    function acceptOwnership() external override onlyNextOwner {
        delete nextOwner;

        owner = msg.sender;

        emit OwnershipTransferred(owner, msg.sender);
    }

    /// @notice Renounce ownership by setting owner to zero address.
    function renounceOwnership() external override onlyOwner {
        _renounceOwnership();
    }

    /// @notice Returns true if the caller is the current owner.
    function isOwner() public view override returns (bool) {
        return msg.sender == owner;
    }

    /// @notice Returns true if the caller is the next owner.
    function isNextOwner() public view override returns (bool) {
        return msg.sender == nextOwner;
    }

    /// > [[[[[[[[[[[ Internal Functions ]]]]]]]]]]]

    function _setOwner(address previousOwner, address newOwner) internal {
        owner = newOwner;
        emit OwnershipTransferred(previousOwner, owner);
    }

    function _setInitialOwner(address newOwner) internal {
        owner = newOwner;
        emit OwnershipTransferred(address(0), newOwner);
    }

    function _renounceOwnership() internal {
        emit OwnershipTransferred(owner, address(0));

        owner = address(0);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_minter","type":"address"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMinter","type":"address"},{"indexed":true,"internalType":"address","name":"newMinter","type":"address"}],"name":"NewMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"},{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"ProxyDeployed","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TWEditionImplementationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TWFactoryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_contractURI","type":"string"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"address[]","name":"_trustedForwarders","type":"address[]"},{"internalType":"address","name":"_primarySaleRecipient","type":"address"},{"internalType":"address","name":"_royaltyRecipient","type":"address"},{"internalType":"uint128","name":"_royaltyBps","type":"uint128"},{"internalType":"uint256","name":"_platformFee","type":"uint256"},{"internalType":"address","name":"_platformFeeRecipient","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ISignatureDropDeployer.DeployParams","name":"params","type":"tuple"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"name":"predictDeterministicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMinter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b50604051620014183803806200141883398101604081905262000034916200012b565b83620000408162000067565b506200004c83620000b2565b6001600160a01b039182166080521660a05250620001889050565b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b6002546040516001600160a01b038084169216907f0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a990600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b03811681146200012657600080fd5b919050565b600080600080608085870312156200014257600080fd5b6200014d856200010e565b93506200015d602086016200010e565b92506200016d604086016200010e565b91506200017d606086016200010e565b905092959194509250565b60805160a05161124e620001ca60003960008181610179015281816102f0015261073d0152600081816102250152818161032b0152610710015261124e6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063e47957d311610066578063e47957d314610220578063ed459df214610247578063f2fde38b1461025a578063fca3b5aa1461026d57600080fd5b80638da5cb5b146101d15780638f32d59b146101e4578063a217fddf14610203578063d53913931461020b57600080fd5b80635414dff0116100d35780635414dff01461019b57806367f1a2f1146101ae578063715018a6146101c157806379ba5097146101c957600080fd5b80630754617214610105578063206b60f91461013557806323452b9c1461016a578063382d9cc414610174575b600080fd5b600254610118906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015c7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c81565b60405190815260200161012c565b610172610280565b005b6101187f000000000000000000000000000000000000000000000000000000000000000081565b6101186101a9366004610c8f565b6102c5565b6101186101bc366004610e4e565b6103ac565b610172610533565b610172610567565b600054610118906001600160a01b031681565b6000546001600160a01b031633145b604051901515815260200161012c565b61015c600081565b61015c6000805160206111f983398151915281565b6101187f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031633146101f3565b610172610268366004610fc3565b61061e565b61017261027b366004610fc3565b6106c0565b6000546001600160a01b031633146102b35760405162461bcd60e51b81526004016102aa90610fe0565b60405180910390fd5b600180546001600160a01b0319169055565b6040516bffffffffffffffffffffffff193060601b166020820152603481018290526000906103a6907f000000000000000000000000000000000000000000000000000000000000000090605401604051602081830303815290604052805190602001207f000000000000000000000000000000000000000000000000000000000000000060405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b92915050565b60008063e159163460e01b308460200151856040015186606001518760a001518860c001518960e001518a610100015160008c61014001516040516024016103fd9a9998979695949392919061105d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000610443828561016001516106f6565b84516080860151604051631607e8a560e31b81529293506001600160a01b0384169263b03f4528926104819290916000199190600090600401611147565b600060405180830381600087803b15801561049b57600080fd5b505af11580156104af573d6000803e3d6000fd5b505050506104c8818561014001518661012001516107b3565b6104d6818560000151610879565b83600001516001600160a01b0316816001600160a01b03167fd283ed05905c0eb69fe3ef042c6ad706d8d9c75b138624098de540fa2c011a0586610160015160405161052491815260200190565b60405180910390a39392505050565b6000546001600160a01b0316331461055d5760405162461bcd60e51b81526004016102aa90610fe0565b610565610be9565b565b6001546001600160a01b031633146105d65760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201526b103732bc3a1037bbb732b91760a11b60648201526084016102aa565b600180546001600160a01b0319908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6000546001600160a01b031633146106485760405162461bcd60e51b81526004016102aa90610fe0565b6001600160a01b03811661069e5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016102aa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106ea5760405162461bcd60e51b81526004016102aa90610fe0565b6106f381610c33565b50565b6040516311b804ab60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906311b804ab90610769907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161117f565b6020604051808303816000875af1158015610788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ac91906111b3565b9392505050565b604051631f95148f60e21b81526001600160a01b03838116600483015260248201839052841690637e54523c90604401600060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505060405163b6f10c7960e01b81526001600160a01b038616925063b6f10c799150610842906001906004016111d0565b600060405180830381600087803b15801561085c57600080fd5b505af1158015610870573d6000803e3d6000fd5b50505050505050565b600254604051632f2ff15d60e01b81526000805160206111f983398151915260048201526001600160a01b03918216602482015290831690632f2ff15d90604401600060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b5050604051632f2ff15d60e01b8152600060048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b15801561093657600080fd5b505af115801561094a573d6000803e3d6000fd5b5050604051632f2ff15d60e01b81526000805160206111f983398151915260048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b5050604051632f2ff15d60e01b81527f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b158015610a2657600080fd5b505af1158015610a3a573d6000803e3d6000fd5b505060405163d547741f60e01b81526000805160206111f983398151915260048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b505060405163d547741f60e01b81527f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b50506040516313af403560e01b81526001600160a01b038481166004830152851692506313af40359150602401600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505060405163d547741f60e01b8152600060048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610bcd57600080fd5b505af1158015610be1573d6000803e3d6000fd5b505050505050565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546040516001600160a01b038084169216907f0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a990600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610ca157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715610ce257610ce2610ca8565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d1157610d11610ca8565b604052919050565b6001600160a01b03811681146106f357600080fd5b8035610d3981610d19565b919050565b600082601f830112610d4f57600080fd5b813567ffffffffffffffff811115610d6957610d69610ca8565b610d7c601f8201601f1916602001610ce8565b818152846020838601011115610d9157600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610dbf57600080fd5b8135602067ffffffffffffffff821115610ddb57610ddb610ca8565b8160051b610dea828201610ce8565b9283528481018201928281019087851115610e0457600080fd5b83870192505b84831015610e2c578235610e1d81610d19565b82529183019190830190610e0a565b979650505050505050565b80356001600160801b0381168114610d3957600080fd5b600060208284031215610e6057600080fd5b813567ffffffffffffffff80821115610e7857600080fd5b908301906101808286031215610e8d57600080fd5b610e95610cbe565b610e9e83610d2e565b8152602083013582811115610eb257600080fd5b610ebe87828601610d3e565b602083015250604083013582811115610ed657600080fd5b610ee287828601610d3e565b604083015250606083013582811115610efa57600080fd5b610f0687828601610d3e565b606083015250608083013582811115610f1e57600080fd5b610f2a87828601610d3e565b60808301525060a083013582811115610f4257600080fd5b610f4e87828601610dae565b60a083015250610f6060c08401610d2e565b60c0820152610f7160e08401610d2e565b60e08201526101009150610f86828401610e37565b82820152610120915081830135828201526101409150610fa7828401610d2e565b9181019190915261016091820135918101919091529392505050565b600060208284031215610fd557600080fd5b81356107ac81610d19565b60208082526018908201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604082015260600190565b6000815180845260005b8181101561103d57602081850181015186830182015201611021565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038b811682526101406020808401829052600092906110858584018f611017565b92508483036040860152611099838e611017565b925084830360608601526110ad838d611017565b85810360808701528b51808252828d0194509082019060005b818110156110e45785518516835294830194918301916001016110c6565b50506001600160a01b038b1660a0870152935061110092505050565b6001600160a01b03861660c08301526001600160801b03851660e083015260ff84166101008301526001600160a01b0383166101208301529b9a5050505050505050505050565b60018060a01b038516815283602082015260806040820152600061116e6080830185611017565b905082606083015295945050505050565b6001600160a01b03841681526060602082018190526000906111a390830185611017565b9050826040830152949350505050565b6000602082840312156111c557600080fd5b81516107ac81610d19565b60208101600283106111f257634e487b7160e01b600052602160045260246000fd5b9190529056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220757638bf4dd42a39a9e38934d415802a62a55120d9421fc0076f3fb8c75543f864736f6c634300081100330000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000005be12d4b22eaa4354b3d6f636df047ab7a2a0af80000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a0000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063e47957d311610066578063e47957d314610220578063ed459df214610247578063f2fde38b1461025a578063fca3b5aa1461026d57600080fd5b80638da5cb5b146101d15780638f32d59b146101e4578063a217fddf14610203578063d53913931461020b57600080fd5b80635414dff0116100d35780635414dff01461019b57806367f1a2f1146101ae578063715018a6146101c157806379ba5097146101c957600080fd5b80630754617214610105578063206b60f91461013557806323452b9c1461016a578063382d9cc414610174575b600080fd5b600254610118906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015c7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c81565b60405190815260200161012c565b610172610280565b005b6101187f000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc81565b6101186101a9366004610c8f565b6102c5565b6101186101bc366004610e4e565b6103ac565b610172610533565b610172610567565b600054610118906001600160a01b031681565b6000546001600160a01b031633145b604051901515815260200161012c565b61015c600081565b61015c6000805160206111f983398151915281565b6101187f0000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a081565b6001546001600160a01b031633146101f3565b610172610268366004610fc3565b61061e565b61017261027b366004610fc3565b6106c0565b6000546001600160a01b031633146102b35760405162461bcd60e51b81526004016102aa90610fe0565b60405180910390fd5b600180546001600160a01b0319169055565b6040516bffffffffffffffffffffffff193060601b166020820152603481018290526000906103a6907f000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc90605401604051602081830303815290604052805190602001207f0000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a060405160388101919091526f5af43d82803e903d91602b57fd5bf3ff60248201526014810192909252733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152605560439091012090565b92915050565b60008063e159163460e01b308460200151856040015186606001518760a001518860c001518960e001518a610100015160008c61014001516040516024016103fd9a9998979695949392919061105d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000610443828561016001516106f6565b84516080860151604051631607e8a560e31b81529293506001600160a01b0384169263b03f4528926104819290916000199190600090600401611147565b600060405180830381600087803b15801561049b57600080fd5b505af11580156104af573d6000803e3d6000fd5b505050506104c8818561014001518661012001516107b3565b6104d6818560000151610879565b83600001516001600160a01b0316816001600160a01b03167fd283ed05905c0eb69fe3ef042c6ad706d8d9c75b138624098de540fa2c011a0586610160015160405161052491815260200190565b60405180910390a39392505050565b6000546001600160a01b0316331461055d5760405162461bcd60e51b81526004016102aa90610fe0565b610565610be9565b565b6001546001600160a01b031633146105d65760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201526b103732bc3a1037bbb732b91760a11b60648201526084016102aa565b600180546001600160a01b0319908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6000546001600160a01b031633146106485760405162461bcd60e51b81526004016102aa90610fe0565b6001600160a01b03811661069e5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016102aa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106ea5760405162461bcd60e51b81526004016102aa90610fe0565b6106f381610c33565b50565b6040516311b804ab60e01b81526000906001600160a01b037f0000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a016906311b804ab90610769907f000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc908790879060040161117f565b6020604051808303816000875af1158015610788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ac91906111b3565b9392505050565b604051631f95148f60e21b81526001600160a01b03838116600483015260248201839052841690637e54523c90604401600060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505060405163b6f10c7960e01b81526001600160a01b038616925063b6f10c799150610842906001906004016111d0565b600060405180830381600087803b15801561085c57600080fd5b505af1158015610870573d6000803e3d6000fd5b50505050505050565b600254604051632f2ff15d60e01b81526000805160206111f983398151915260048201526001600160a01b03918216602482015290831690632f2ff15d90604401600060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b5050604051632f2ff15d60e01b8152600060048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b15801561093657600080fd5b505af115801561094a573d6000803e3d6000fd5b5050604051632f2ff15d60e01b81526000805160206111f983398151915260048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b5050604051632f2ff15d60e01b81527f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60048201526001600160a01b03848116602483015285169250632f2ff15d9150604401600060405180830381600087803b158015610a2657600080fd5b505af1158015610a3a573d6000803e3d6000fd5b505060405163d547741f60e01b81526000805160206111f983398151915260048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b505060405163d547741f60e01b81527f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b50506040516313af403560e01b81526001600160a01b038481166004830152851692506313af40359150602401600060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505060405163d547741f60e01b8152600060048201523060248201526001600160a01b038516925063d547741f9150604401600060405180830381600087803b158015610bcd57600080fd5b505af1158015610be1573d6000803e3d6000fd5b505050505050565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546040516001600160a01b038084169216907f0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a990600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610ca157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715610ce257610ce2610ca8565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d1157610d11610ca8565b604052919050565b6001600160a01b03811681146106f357600080fd5b8035610d3981610d19565b919050565b600082601f830112610d4f57600080fd5b813567ffffffffffffffff811115610d6957610d69610ca8565b610d7c601f8201601f1916602001610ce8565b818152846020838601011115610d9157600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610dbf57600080fd5b8135602067ffffffffffffffff821115610ddb57610ddb610ca8565b8160051b610dea828201610ce8565b9283528481018201928281019087851115610e0457600080fd5b83870192505b84831015610e2c578235610e1d81610d19565b82529183019190830190610e0a565b979650505050505050565b80356001600160801b0381168114610d3957600080fd5b600060208284031215610e6057600080fd5b813567ffffffffffffffff80821115610e7857600080fd5b908301906101808286031215610e8d57600080fd5b610e95610cbe565b610e9e83610d2e565b8152602083013582811115610eb257600080fd5b610ebe87828601610d3e565b602083015250604083013582811115610ed657600080fd5b610ee287828601610d3e565b604083015250606083013582811115610efa57600080fd5b610f0687828601610d3e565b606083015250608083013582811115610f1e57600080fd5b610f2a87828601610d3e565b60808301525060a083013582811115610f4257600080fd5b610f4e87828601610dae565b60a083015250610f6060c08401610d2e565b60c0820152610f7160e08401610d2e565b60e08201526101009150610f86828401610e37565b82820152610120915081830135828201526101409150610fa7828401610d2e565b9181019190915261016091820135918101919091529392505050565b600060208284031215610fd557600080fd5b81356107ac81610d19565b60208082526018908201527f63616c6c6572206973206e6f7420746865206f776e65722e0000000000000000604082015260600190565b6000815180845260005b8181101561103d57602081850181015186830182015201611021565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038b811682526101406020808401829052600092906110858584018f611017565b92508483036040860152611099838e611017565b925084830360608601526110ad838d611017565b85810360808701528b51808252828d0194509082019060005b818110156110e45785518516835294830194918301916001016110c6565b50506001600160a01b038b1660a0870152935061110092505050565b6001600160a01b03861660c08301526001600160801b03851660e083015260ff84166101008301526001600160a01b0383166101208301529b9a5050505050505050505050565b60018060a01b038516815283602082015260806040820152600061116e6080830185611017565b905082606083015295945050505050565b6001600160a01b03841681526060602082018190526000906111a390830185611017565b9050826040830152949350505050565b6000602082840312156111c557600080fd5b81516107ac81610d19565b60208101600283106111f257634e487b7160e01b600052602160045260246000fd5b9190529056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220757638bf4dd42a39a9e38934d415802a62a55120d9421fc0076f3fb8c75543f864736f6c63430008110033

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

0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000005be12d4b22eaa4354b3d6f636df047ab7a2a0af80000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a0000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc

-----Decoded View---------------
Arg [0] : _owner (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [1] : _minter (address): 0x5bE12d4b22EAa4354b3D6F636df047AB7A2A0aF8
Arg [2] : _factory (address): 0x5DBC7B840baa9daBcBe9D2492E45D7244B54A2A0
Arg [3] : _implementation (address): 0xAb1a1c03BE678B5d55Cec01322f7DAC5a2Bc7aFC

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [1] : 0000000000000000000000005be12d4b22eaa4354b3d6f636df047ab7a2a0af8
Arg [2] : 0000000000000000000000005dbc7b840baa9dabcbe9d2492e45d7244b54a2a0
Arg [3] : 000000000000000000000000ab1a1c03be678b5d55cec01322f7dac5a2bc7afc


Block Transaction Difficulty 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
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.