ETH Price: $3,234.12 (+1.03%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint Public Batc...163204312023-01-02 16:57:59759 days ago1672678679IN
0x97D77a26...721DD638b
0 ETH0.0374763516.03368123
Mint Public Batc...163203832023-01-02 16:48:23759 days ago1672678103IN
0x97D77a26...721DD638b
0 ETH0.02149615.05638618
Mint Allow List163203762023-01-02 16:46:59759 days ago1672678019IN
0x97D77a26...721DD638b
0 ETH0.0246656316.94435099
Mint Public163203022023-01-02 16:31:59759 days ago1672677119IN
0x97D77a26...721DD638b
0 ETH0.0091288217.63700552
Mint Public Batc...163202562023-01-02 16:22:35759 days ago1672676555IN
0x97D77a26...721DD638b
0 ETH0.040809817.45993382
Mint Public Batc...163201262023-01-02 15:56:23759 days ago1672674983IN
0x97D77a26...721DD638b
0 ETH0.0149733415.3910217
Mint Public Batc...163201212023-01-02 15:55:23759 days ago1672674923IN
0x97D77a26...721DD638b
0 ETH0.015779216.21917115
Mint Public Batc...163200992023-01-02 15:50:59759 days ago1672674659IN
0x97D77a26...721DD638b
0 ETH0.0350602815
Mint Public Batc...163200832023-01-02 15:47:47759 days ago1672674467IN
0x97D77a26...721DD638b
0 ETH0.0754181316.35442455
Mint Public Batc...163200792023-01-02 15:46:59759 days ago1672674419IN
0x97D77a26...721DD638b
0 ETH0.0232422416.27949924
Mint Public Batc...163200452023-01-02 15:40:11759 days ago1672674011IN
0x97D77a26...721DD638b
0 ETH0.072936615.81630428
Mint Public Batc...163176652023-01-02 7:42:11759 days ago1672645331IN
0x97D77a26...721DD638b
0 ETH0.0672818914.59008036
Mint Public Batc...163174342023-01-02 6:55:59759 days ago1672642559IN
0x97D77a26...721DD638b
0 ETH0.0717988615.56958505
Mint Public Batc...163163412023-01-02 3:16:11760 days ago1672629371IN
0x97D77a26...721DD638b
0 ETH0.019802813.87042496
Mint Public Batc...163163082023-01-02 3:09:35760 days ago1672628975IN
0x97D77a26...721DD638b
0 ETH0.0661445314.34344413
Mint Public163162172023-01-02 2:51:23760 days ago1672627883IN
0x97D77a26...721DD638b
0 ETH0.0067941813.12644309
Mint Public Batc...163161972023-01-02 2:47:23760 days ago1672627643IN
0x97D77a26...721DD638b
0 ETH0.0395490816.92046583
Mint Public Batc...163161882023-01-02 2:45:35760 days ago1672627535IN
0x97D77a26...721DD638b
0 ETH0.0370073515.84861924
Mint Public Batc...163161852023-01-02 2:44:59760 days ago1672627499IN
0x97D77a26...721DD638b
0 ETH0.0350560115.03516294
Mint Public Batc...163160932023-01-02 2:26:35760 days ago1672626395IN
0x97D77a26...721DD638b
0 ETH0.0206535914.50138216
Mint Public Batc...163160862023-01-02 2:25:11760 days ago1672626311IN
0x97D77a26...721DD638b
0 ETH0.0209377114.70086822
Mint Public Batc...163160612023-01-02 2:20:11760 days ago1672626011IN
0x97D77a26...721DD638b
0 ETH0.0185152513
Mint Public Batc...163160362023-01-02 2:15:11760 days ago1672625711IN
0x97D77a26...721DD638b
0 ETH0.0136446714.05835401
Mint Public163160102023-01-02 2:09:59760 days ago1672625399IN
0x97D77a26...721DD638b
0 ETH0.0080111416.04331625
Mint Public163159942023-01-02 2:06:47760 days ago1672625207IN
0x97D77a26...721DD638b
0 ETH0.0080499315.58721349
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:
FiefdomsMinter

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : FiefdomsMinter.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

import "openzeppelin/utils/cryptography/MerkleProof.sol";

interface IFiefdomsKingdom {
    function mintBatch(address to, uint256 amount) external;

    function mint(address to) external;

    function setMinter(address newMinter) external;
}

contract FiefdomsMinter {
    IFiefdomsKingdom public fiefdomsKingdom;
    address public owner;
    bytes32 public merkleRoot;
    bool public isPublicMintable;
    uint256 public maxPerAllowed;
    mapping(address => uint256) public claimed;

    constructor(address addr) {
        owner = msg.sender;
        maxPerAllowed = 7;
        fiefdomsKingdom = IFiefdomsKingdom(addr);
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner can call this function");
        _;
    }

    function transferMinter(address newMinter) external onlyOwner {
        fiefdomsKingdom.setMinter(newMinter);
    }

    function setMerkleRoot(bytes32 root) external onlyOwner {
        merkleRoot = root;
    }

    function setAllowedPerMint(uint256 amount) external onlyOwner {
        maxPerAllowed = amount;
    }

    function setPublicMintable(bool isPublic) external onlyOwner {
        isPublicMintable = isPublic;
    }

    function mintAllowList(
        address to,
        uint256 amount,
        bytes32[] calldata merkleProof
    ) external {
        require(
            claimed[to] + amount <= maxPerAllowed,
            "Exceeds max allowed per address"
        );
        require(verify(to, merkleProof), "Invalid proof");
        claimed[to] += amount;
        fiefdomsKingdom.mintBatch(to, amount);
    }

    function mintPublic(address to) external {
        require(isPublicMintable, "Public minting is not allowed");
        fiefdomsKingdom.mint(to);
    }

    function mintPublicBatch(address to, uint256 amount) external {
        require(isPublicMintable, "Public minting is not allowed");
        fiefdomsKingdom.mintBatch(to, amount);
    }

    function verify(address to, bytes32[] calldata merkleProof)
        public
        view
        returns (bool)
    {
        return
            MerkleProof.verifyCalldata(
                merkleProof,
                merkleRoot,
                keccak256(abi.encodePacked(to))
            );
    }
}

File 2 of 2 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Tree proofs.
 *
 * The tree and the proofs can be generated using our
 * https://github.com/OpenZeppelin/merkle-tree[JavaScript library].
 * You will find a quickstart guide in the readme.
 *
 * WARNING: You should avoid using leaf values that are 64 bytes long prior to
 * hashing, or use a hash function other than keccak256 for hashing leaves.
 * This is because the concatenation of a sorted pair of internal nodes in
 * the merkle tree could be reinterpreted as a leaf value.
 * OpenZeppelin's JavaScript library generates merkle trees that are safe
 * against this attack out of the box.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Calldata version of {verify}
     *
     * _Available since v4.7._
     */
    function verifyCalldata(bytes32[] calldata proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
        return processProofCalldata(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Calldata version of {processProof}
     *
     * _Available since v4.7._
     */
    function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a merkle tree defined by
     * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.
     *
     * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details.
     *
     * _Available since v4.7._
     */
    function multiProofVerify(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProof(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Calldata version of {multiProofVerify}
     *
     * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details.
     *
     * _Available since v4.7._
     */
    function multiProofVerifyCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProofCalldata(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction
     * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another
     * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false
     * respectively.
     *
     * CAUTION: Not all merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree
     * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the
     * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer).
     *
     * _Available since v4.7._
     */
    function processMultiProof(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i]
                ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++])
                : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    /**
     * @dev Calldata version of {processMultiProof}.
     *
     * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details.
     *
     * _Available since v4.7._
     */
    function processMultiProofCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i]
                ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++])
                : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return a < b ? _efficientHash(a, b) : _efficientHash(b, a);
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/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

[{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fiefdomsKingdom","outputs":[{"internalType":"contract IFiefdomsKingdom","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"mintAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mintPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintPublicBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAllowedPerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPublic","type":"bool"}],"name":"setPublicMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMinter","type":"address"}],"name":"transferMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516109e43803806109e483398101604081905261002f91610067565b60018054336001600160a01b0319918216179091556007600455600080549091166001600160a01b0392909216919091179055610097565b60006020828403121561007957600080fd5b81516001600160a01b038116811461009057600080fd5b9392505050565b61093e806100a66000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a06cb7191161008c578063c884ef8311610066578063c884ef83146101d0578063d70e7b7e146101f0578063fbd9664414610203578063fe99ad5a1461021657600080fd5b8063a06cb71914610197578063b76a0df4146101aa578063b9a6a2fd146101bd57600080fd5b80635ff41a66116100c85780635ff41a661461013f57806363ba509d146101545780637cb64759146101715780638da5cb5b1461018457600080fd5b80630eb5cfe6146100ef5780632eb4a7ab1461010b5780635d7f884e14610114575b600080fd5b6100f860045481565b6040519081526020015b60405180910390f35b6100f860025481565b600054610127906001600160a01b031681565b6040516001600160a01b039091168152602001610102565b61015261014d36600461073b565b610229565b005b6003546101619060ff1681565b6040519015158152602001610102565b61015261017f366004610795565b610383565b600154610127906001600160a01b031681565b6101526101a53660046107ae565b6103b2565b6101616101b83660046107c9565b610467565b6101526101cb366004610795565b6104b7565b6100f86101de3660046107ae565b60056020526000908152604090205481565b6101526101fe36600461081c565b6104e6565b610152610211366004610846565b6105a2565b6101526102243660046107ae565b6105df565b6004546001600160a01b038516600090815260056020526040902054610250908590610885565b11156102a35760405162461bcd60e51b815260206004820152601f60248201527f45786365656473206d617820616c6c6f7765642070657220616464726573730060448201526064015b60405180910390fd5b6102ae848383610467565b6102ea5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161029a565b6001600160a01b03841660009081526005602052604081208054859290610312908490610885565b9091555050600054604051630922dc7f60e21b81526001600160a01b038681166004830152602482018690529091169063248b71fc90604401600060405180830381600087803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b031633146103ad5760405162461bcd60e51b815260040161029a90610898565b600255565b60035460ff166104045760405162461bcd60e51b815260206004820152601d60248201527f5075626c6963206d696e74696e67206973206e6f7420616c6c6f776564000000604482015260640161029a565b6000546040516335313c2160e11b81526001600160a01b03838116600483015290911690636a627842906024015b600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b5050505050565b6002546040516bffffffffffffffffffffffff19606086901b1660208201526000916104af91859185916034016040516020818303038152906040528051906020012061063b565b949350505050565b6001546001600160a01b031633146104e15760405162461bcd60e51b815260040161029a90610898565b600455565b60035460ff166105385760405162461bcd60e51b815260206004820152601d60248201527f5075626c6963206d696e74696e67206973206e6f7420616c6c6f776564000000604482015260640161029a565b600054604051630922dc7f60e21b81526001600160a01b038481166004830152602482018490529091169063248b71fc90604401600060405180830381600087803b15801561058657600080fd5b505af115801561059a573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146105cc5760405162461bcd60e51b815260040161029a90610898565b6003805460ff1916911515919091179055565b6001546001600160a01b031633146106095760405162461bcd60e51b815260040161029a90610898565b600054604051637e51dad560e11b81526001600160a01b0383811660048301529091169063fca3b5aa90602401610432565b600082610649868685610653565b1495945050505050565b600081815b848110156106965761068282878784818110610676576106766108d9565b9050602002013561069f565b91508061068e816108ef565b915050610658565b50949350505050565b60008183106106bb5760008281526020849052604090206106ca565b60008381526020839052604090205b90505b92915050565b80356001600160a01b03811681146106ea57600080fd5b919050565b60008083601f84011261070157600080fd5b50813567ffffffffffffffff81111561071957600080fd5b6020830191508360208260051b850101111561073457600080fd5b9250929050565b6000806000806060858703121561075157600080fd5b61075a856106d3565b935060208501359250604085013567ffffffffffffffff81111561077d57600080fd5b610789878288016106ef565b95989497509550505050565b6000602082840312156107a757600080fd5b5035919050565b6000602082840312156107c057600080fd5b6106ca826106d3565b6000806000604084860312156107de57600080fd5b6107e7846106d3565b9250602084013567ffffffffffffffff81111561080357600080fd5b61080f868287016106ef565b9497909650939450505050565b6000806040838503121561082f57600080fd5b610838836106d3565b946020939093013593505050565b60006020828403121561085857600080fd5b8135801515811461086857600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106cd576106cd61086f565b60208082526021908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6040820152603760f91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016109015761090161086f565b506001019056fea2646970667358221220ef2d8ccce9c93f97941c45ec421264c03820ebe704ed05e5053efe0e18512f7064736f6c634300081100330000000000000000000000004507c566e756e000f976fd2bfa7f6ec9e90bd667

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a06cb7191161008c578063c884ef8311610066578063c884ef83146101d0578063d70e7b7e146101f0578063fbd9664414610203578063fe99ad5a1461021657600080fd5b8063a06cb71914610197578063b76a0df4146101aa578063b9a6a2fd146101bd57600080fd5b80635ff41a66116100c85780635ff41a661461013f57806363ba509d146101545780637cb64759146101715780638da5cb5b1461018457600080fd5b80630eb5cfe6146100ef5780632eb4a7ab1461010b5780635d7f884e14610114575b600080fd5b6100f860045481565b6040519081526020015b60405180910390f35b6100f860025481565b600054610127906001600160a01b031681565b6040516001600160a01b039091168152602001610102565b61015261014d36600461073b565b610229565b005b6003546101619060ff1681565b6040519015158152602001610102565b61015261017f366004610795565b610383565b600154610127906001600160a01b031681565b6101526101a53660046107ae565b6103b2565b6101616101b83660046107c9565b610467565b6101526101cb366004610795565b6104b7565b6100f86101de3660046107ae565b60056020526000908152604090205481565b6101526101fe36600461081c565b6104e6565b610152610211366004610846565b6105a2565b6101526102243660046107ae565b6105df565b6004546001600160a01b038516600090815260056020526040902054610250908590610885565b11156102a35760405162461bcd60e51b815260206004820152601f60248201527f45786365656473206d617820616c6c6f7765642070657220616464726573730060448201526064015b60405180910390fd5b6102ae848383610467565b6102ea5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161029a565b6001600160a01b03841660009081526005602052604081208054859290610312908490610885565b9091555050600054604051630922dc7f60e21b81526001600160a01b038681166004830152602482018690529091169063248b71fc90604401600060405180830381600087803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b031633146103ad5760405162461bcd60e51b815260040161029a90610898565b600255565b60035460ff166104045760405162461bcd60e51b815260206004820152601d60248201527f5075626c6963206d696e74696e67206973206e6f7420616c6c6f776564000000604482015260640161029a565b6000546040516335313c2160e11b81526001600160a01b03838116600483015290911690636a627842906024015b600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b5050505050565b6002546040516bffffffffffffffffffffffff19606086901b1660208201526000916104af91859185916034016040516020818303038152906040528051906020012061063b565b949350505050565b6001546001600160a01b031633146104e15760405162461bcd60e51b815260040161029a90610898565b600455565b60035460ff166105385760405162461bcd60e51b815260206004820152601d60248201527f5075626c6963206d696e74696e67206973206e6f7420616c6c6f776564000000604482015260640161029a565b600054604051630922dc7f60e21b81526001600160a01b038481166004830152602482018490529091169063248b71fc90604401600060405180830381600087803b15801561058657600080fd5b505af115801561059a573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146105cc5760405162461bcd60e51b815260040161029a90610898565b6003805460ff1916911515919091179055565b6001546001600160a01b031633146106095760405162461bcd60e51b815260040161029a90610898565b600054604051637e51dad560e11b81526001600160a01b0383811660048301529091169063fca3b5aa90602401610432565b600082610649868685610653565b1495945050505050565b600081815b848110156106965761068282878784818110610676576106766108d9565b9050602002013561069f565b91508061068e816108ef565b915050610658565b50949350505050565b60008183106106bb5760008281526020849052604090206106ca565b60008381526020839052604090205b90505b92915050565b80356001600160a01b03811681146106ea57600080fd5b919050565b60008083601f84011261070157600080fd5b50813567ffffffffffffffff81111561071957600080fd5b6020830191508360208260051b850101111561073457600080fd5b9250929050565b6000806000806060858703121561075157600080fd5b61075a856106d3565b935060208501359250604085013567ffffffffffffffff81111561077d57600080fd5b610789878288016106ef565b95989497509550505050565b6000602082840312156107a757600080fd5b5035919050565b6000602082840312156107c057600080fd5b6106ca826106d3565b6000806000604084860312156107de57600080fd5b6107e7846106d3565b9250602084013567ffffffffffffffff81111561080357600080fd5b61080f868287016106ef565b9497909650939450505050565b6000806040838503121561082f57600080fd5b610838836106d3565b946020939093013593505050565b60006020828403121561085857600080fd5b8135801515811461086857600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106cd576106cd61086f565b60208082526021908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6040820152603760f91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016109015761090161086f565b506001019056fea2646970667358221220ef2d8ccce9c93f97941c45ec421264c03820ebe704ed05e5053efe0e18512f7064736f6c63430008110033

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

0000000000000000000000004507c566e756e000f976fd2bfa7f6ec9e90bd667

-----Decoded View---------------
Arg [0] : addr (address): 0x4507C566e756e000F976fD2bfa7F6Ec9E90bd667

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004507c566e756e000f976fd2bfa7f6ec9e90bd667


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.