ETH Price: $1,974.01 (-4.16%)

Contract

0x8A031f000E3E2e1E3F0A3fEC9e856bd7c9732896
 

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
Collect Dust To143858672022-03-14 16:42:001453 days ago1647276120IN
0x8A031f00...7c9732896
0 ETH0.0016672124.64944699
Collect Dust To143858492022-03-14 16:37:591453 days ago1647275879IN
0x8A031f00...7c9732896
0 ETH0.001570427.03403249
Claim143449622022-03-08 7:49:391459 days ago1646725779IN
0x8A031f00...7c9732896
0 ETH0.001871224.75953023
Claim137488872021-12-05 23:30:031551 days ago1638747003IN
0x8A031f00...7c9732896
0 ETH0.0072202395.59553981
Claim137006032021-11-28 5:37:361559 days ago1638077856IN
0x8A031f00...7c9732896
0 ETH0.0065011186.00155512
Claim136899082021-11-26 13:07:551561 days ago1637932075IN
0x8A031f00...7c9732896
0 ETH0.00308529102
Claim134338742021-10-17 6:37:111601 days ago1634452631IN
0x8A031f00...7c9732896
0 ETH0.0048352664
Claim134133952021-10-14 1:17:431604 days ago1634174263IN
0x8A031f00...7c9732896
0 ETH0.007327196.96677798
Claim134119642021-10-13 19:58:491604 days ago1634155129IN
0x8A031f00...7c9732896
0 ETH0.00817241108.11076791
Claim132492432021-09-18 10:53:291630 days ago1631962409IN
0x8A031f00...7c9732896
0 ETH0.0031726841.99399144
Claim132265432021-09-14 22:30:241633 days ago1631658624IN
0x8A031f00...7c9732896
0 ETH0.0035929647.54548216
Claim132238182021-09-14 12:20:041634 days ago1631622004IN
0x8A031f00...7c9732896
0 ETH0.0034509845.66552518
Claim132237612021-09-14 12:06:581634 days ago1631621218IN
0x8A031f00...7c9732896
0 ETH0.0047533962.87145608
Claim132234662021-09-14 11:04:551634 days ago1631617495IN
0x8A031f00...7c9732896
0 ETH0.0031754742.03315853
Claim132174862021-09-13 12:55:581635 days ago1631537758IN
0x8A031f00...7c9732896
0 ETH0.0016632555.05293261
Claim132174792021-09-13 12:55:071635 days ago1631537707IN
0x8A031f00...7c9732896
0 ETH0.0049017164.8726388
Claim131679552021-09-05 20:49:421642 days ago1630874982IN
0x8A031f00...7c9732896
0 ETH0.00973662128.84080435
Claim131579492021-09-04 7:46:231644 days ago1630741583IN
0x8A031f00...7c9732896
0 ETH0.0055603773.57626061
Claim131174792021-08-29 1:39:231650 days ago1630201163IN
0x8A031f00...7c9732896
0 ETH0.00811437107.3288039
Collect Dust To130870382021-08-24 8:50:051655 days ago1629795005IN
0x8A031f00...7c9732896
0 ETH0.0039195764.46032962
Claim130752042021-08-22 12:46:421657 days ago1629636402IN
0x8A031f00...7c9732896
0 ETH0.0021163828
Claim130635922021-08-20 17:56:231658 days ago1629482183IN
0x8A031f00...7c9732896
0 ETH0.0044088558.37140932
Claim129579032021-08-04 9:44:271675 days ago1628070267IN
0x8A031f00...7c9732896
0 ETH0.0019649526
Claim129578982021-08-04 9:43:111675 days ago1628070191IN
0x8A031f00...7c9732896
0 ETH0.0019642726
Claim129578982021-08-04 9:43:111675 days ago1628070191IN
0x8A031f00...7c9732896
0 ETH0.0019643726
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerkleDistributor

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 100000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.3;

import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import "../interfaces/IMerkleDistributor.sol";
import "../interfaces/IERC1155.sol";
import "../interfaces/IERC1155TokenReceiver.sol";

contract MerkleDistributor is IMerkleDistributor, IERC1155TokenReceiver {
    address public immutable override nftAddress;
    bytes32 public immutable override merkleRoot;
    address public immutable owner;
    mapping(uint256 => uint256) private claimedBitMap;

    constructor(address nftAddress_, bytes32 merkleRoot_) {
        nftAddress = nftAddress_;
        merkleRoot = merkleRoot_;
        owner = msg.sender;
    }

    function isClaimed(uint256 index) public view override returns (bool) {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        uint256 claimedWord = claimedBitMap[claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWord & mask == mask;
    }

    function _setClaimed(uint256 index) private {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex);
    }

    function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external override {
        require(!isClaimed(index), 'MerkleDistributor: Drop already claimed.');
        bytes32 node = keccak256(abi.encodePacked(index, account, amount));
        require(MerkleProof.verify(merkleProof, merkleRoot, node), 'MerkleDistributor: Invalid proof.');
        _setClaimed(index);
        IERC1155(nftAddress).safeTransferFrom(address(this), account, 1, 1, "");
        emit Claimed(index, account, amount);
    }

    function collectDustTo(uint256 _amount, address _to) public {
        require(msg.sender == owner, "not allowed");
        IERC1155(nftAddress).safeTransferFrom(address(this), _to, 1, _amount, "");
    }

    function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure override returns(bytes4) {
        return 0xf23a6e61;
    }

    function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) external pure override returns(bytes4) {
        return 0xbc197c81;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle trees (hash trees),
 */
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) {
        bytes32 computedHash = leaf;

        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];

            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }

        // Check if the computed hash (root) is equal to the provided root
        return computedHash == root;
    }
}

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.3;

// Allows anyone to claim a token if they exist in a merkle root.
interface IMerkleDistributor {
    // Returns the address of the nft contract distributed by this contract.
    function nftAddress() external view returns (address);
    // Returns the merkle root of the merkle tree containing account balances available to claim.
    function merkleRoot() external view returns (bytes32);

    // Returns true if the index has been marked claimed.
    function isClaimed(uint256 index) external view returns (bool);
    // Claim the given amount of the token to the given address. Reverts if the inputs are invalid.
    function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external;

    // This event is triggered whenever a call to #claim succeeds.
    event Claimed(uint256 index, address account, uint256 amount);
}

// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.3;


interface IERC1155 {

  /****************************************|
  |                 Events                 |
  |_______________________________________*/

  /**
   * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning
   *   Operator MUST be msg.sender
   *   When minting/creating tokens, the `_from` field MUST be set to `0x0`
   *   When burning/destroying tokens, the `_to` field MUST be set to `0x0`
   *   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID
   *   To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0
   */
  event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount);

  /**
   * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning
   *   Operator MUST be msg.sender
   *   When minting/creating tokens, the `_from` field MUST be set to `0x0`
   *   When burning/destroying tokens, the `_to` field MUST be set to `0x0`
   *   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID
   *   To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0
   */
  event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts);

  /**
   * @dev MUST emit when an approval is updated
   */
  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);


  /****************************************|
  |                Functions               |
  |_______________________________________*/

  /**
    * @notice Transfers amount of an _id from the _from address to the _to address specified
    * @dev MUST emit TransferSingle event on success
    * Caller must be approved to manage the _from account's tokens (see isApprovedForAll)
    * MUST throw if `_to` is the zero address
    * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent
    * MUST throw on any other error
    * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
    * @param _from    Source address
    * @param _to      Target address
    * @param _id      ID of the token type
    * @param _amount  Transfered amount
    * @param _data    Additional data with no specified format, sent in call to `_to`
    */
  function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external;

  /**
    * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)
    * @dev MUST emit TransferBatch event on success
    * Caller must be approved to manage the _from account's tokens (see isApprovedForAll)
    * MUST throw if `_to` is the zero address
    * MUST throw if length of `_ids` is not the same as length of `_amounts`
    * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent
    * MUST throw on any other error
    * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
    * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc)
    * @param _from     Source addresses
    * @param _to       Target addresses
    * @param _ids      IDs of each token type
    * @param _amounts  Transfer amounts per token type
    * @param _data     Additional data with no specified format, sent in call to `_to`
  */
  function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external;

  /**
   * @notice Get the balance of an account's Tokens
   * @param _owner  The address of the token holder
   * @param _id     ID of the Token
   * @return        The _owner's balance of the Token type requested
   */
  function balanceOf(address _owner, uint256 _id) external view returns (uint256);

  /**
   * @notice Get the balance of multiple account/token pairs
   * @param _owners The addresses of the token holders
   * @param _ids    ID of the Tokens
   * @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)
   */
  function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);

  /**
   * @notice Enable or disable approval for a third party ("operator") to manage all of caller's tokens
   * @dev MUST emit the ApprovalForAll event on success
   * @param _operator  Address to add to the set of authorized operators
   * @param _approved  True if the operator is approved, false to revoke approval
   */
  function setApprovalForAll(address _operator, bool _approved) external;

  /**
   * @notice Queries the approval status of an operator for a given owner
   * @param _owner     The owner of the Tokens
   * @param _operator  Address of authorized operator
   * @return isOperator True if the operator is approved, false if not
   */
  function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator);
}

// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.3;

/**
 * @dev ERC-1155 interface for accepting safe transfers.
 */
interface IERC1155TokenReceiver {

  /**
   * @notice Handle the receipt of a single ERC1155 token type
   * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated
   * This function MAY throw to revert and reject the transfer
   * Return of other amount than the magic value MUST result in the transaction being reverted
   * Note: The token contract address is always the message sender
   * @param _operator  The address which called the `safeTransferFrom` function
   * @param _from      The address which previously owned the token
   * @param _id        The id of the token being transferred
   * @param _amount    The amount of tokens being transferred
   * @param _data      Additional data with no specified format
   * @return           `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
   */
  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4);

  /**
   * @notice Handle the receipt of multiple ERC1155 token types
   * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated
   * This function MAY throw to revert and reject the transfer
   * Return of other amount than the magic value WILL result in the transaction being reverted
   * Note: The token contract address is always the message sender
   * @param _operator  The address which called the `safeBatchTransferFrom` function
   * @param _from      The address which previously owned the token
   * @param _ids       An array containing ids of each token being transferred
   * @param _amounts   An array containing amounts of each token being transferred
   * @param _data      Additional data with no specified format
   * @return           `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
   */
  function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 100000,
    "details": {
      "yul": true,
      "constantOptimizer": false
    }
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"nftAddress_","type":"address"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"collectDustTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e060405234801561001057600080fd5b50604051610c61380380610c6183398101604081905261002f91610067565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1660805260a05233901b60c0526100ac565b60008060408385031215610079578182fd5b825173ffffffffffffffffffffffffffffffffffffffff8116811461009c578283fd5b6020939093015192949293505050565b60805160601c60a05160c05160601c610b666100fb60003960008181610140015261024201526000818160ba01526104be01526000818160f40152818161033501526105e50152610b666000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b1461013b5780639e34070f14610162578063bc197c8114610185578063f23a6e61146101f157610088565b80631ebee1cd1461008d5780632e7ba6ef146100a25780632eb4a7ab146100b55780635bf8633a146100ef575b600080fd5b6100a061009b3660046109ea565b61022a565b005b6100a06100b0366004610a15565b610395565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101167f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6101756101703660046109d2565b6106a0565b60405190151581526020016100e6565b6101c06101933660046108a5565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e6565b6101c06101ff36600461095c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420616c6c6f77656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517ff242432a00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8281166024830152600160448301526064820184905260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c401600060405180830381600087803b15801561037957600080fd5b505af115801561038d573d6000803e3d6000fd5b505050505050565b61039e856106a0565b1561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201527f636c61696d65642e00000000000000000000000000000000000000000000000060648201526084016102c5565b60408051602081018790527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1691810191909152605481018490526000906074016040516020818303038152906040528051906020012090506104e98383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506106e39050565b610575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f6660448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016102c5565b61057e866107b9565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152600160448301819052606483015260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c401600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b50506040805189815273ffffffffffffffffffffffffffffffffffffffff891660208201529081018790527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269250606001905060405180910390a1505050505050565b6000806106af61010084610a7b565b905060006106bf61010085610aed565b60009283526020839052604090922054600190921b9182169091149150505b919050565b600081815b85518110156107ae57600086828151811061072c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905080831161076e57604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061079b565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806107a681610a8f565b9150506106e8565b509092149392505050565b60006107c761010083610a7b565b905060006107d761010084610aed565b6000928352602083905260409092208054600190931b9092179091555050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106de57600080fd5b60008083601f84011261082c578182fd5b50813567ffffffffffffffff811115610843578182fd5b6020830191508360208260051b850101111561085e57600080fd5b9250929050565b60008083601f840112610876578182fd5b50813567ffffffffffffffff81111561088d578182fd5b60208301915083602082850101111561085e57600080fd5b60008060008060008060008060a0898b0312156108c0578384fd5b6108c9896107f7565b97506108d760208a016107f7565b9650604089013567ffffffffffffffff808211156108f3578586fd5b6108ff8c838d0161081b565b909850965060608b0135915080821115610917578586fd5b6109238c838d0161081b565b909650945060808b013591508082111561093b578384fd5b506109488b828c01610865565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610974578182fd5b61097d876107f7565b955061098b602088016107f7565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109b4578283fd5b6109c089828a01610865565b979a9699509497509295939492505050565b6000602082840312156109e3578081fd5b5035919050565b600080604083850312156109fc578182fd5b82359150610a0c602084016107f7565b90509250929050565b600080600080600060808688031215610a2c578081fd5b85359450610a3c602087016107f7565b935060408601359250606086013567ffffffffffffffff811115610a5e578182fd5b610a6a8882890161081b565b969995985093965092949392505050565b600082610a8a57610a8a610b01565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ae6577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610afc57610afc610b01565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220163a43695e12a1330af3fadad01b98cb4bfb4ab3f3a78ee5ac33db33b8f38ad264736f6c634300080300330000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b1461013b5780639e34070f14610162578063bc197c8114610185578063f23a6e61146101f157610088565b80631ebee1cd1461008d5780632e7ba6ef146100a25780632eb4a7ab146100b55780635bf8633a146100ef575b600080fd5b6100a061009b3660046109ea565b61022a565b005b6100a06100b0366004610a15565b610395565b6100dc7f1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba81565b6040519081526020015b60405180910390f35b6101167f0000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b6101167f00000000000000000000000000000444e5a1a667663b0adfd853e8efa047069881565b6101756101703660046109d2565b6106a0565b60405190151581526020016100e6565b6101c06101933660046108a5565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e6565b6101c06101ff36600461095c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000444e5a1a667663b0adfd853e8efa047069816146102ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420616c6c6f77656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517ff242432a00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8281166024830152600160448301526064820184905260a06084830152600060a48301527f0000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c169063f242432a9060c401600060405180830381600087803b15801561037957600080fd5b505af115801561038d573d6000803e3d6000fd5b505050505050565b61039e856106a0565b1561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201527f636c61696d65642e00000000000000000000000000000000000000000000000060648201526084016102c5565b60408051602081018790527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1691810191909152605481018490526000906074016040516020818303038152906040528051906020012090506104e98383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba92508591506106e39050565b610575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f6660448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016102c5565b61057e866107b9565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152600160448301819052606483015260a06084830152600060a48301527f0000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c169063f242432a9060c401600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b50506040805189815273ffffffffffffffffffffffffffffffffffffffff891660208201529081018790527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269250606001905060405180910390a1505050505050565b6000806106af61010084610a7b565b905060006106bf61010085610aed565b60009283526020839052604090922054600190921b9182169091149150505b919050565b600081815b85518110156107ae57600086828151811061072c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905080831161076e57604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061079b565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806107a681610a8f565b9150506106e8565b509092149392505050565b60006107c761010083610a7b565b905060006107d761010084610aed565b6000928352602083905260409092208054600190931b9092179091555050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106de57600080fd5b60008083601f84011261082c578182fd5b50813567ffffffffffffffff811115610843578182fd5b6020830191508360208260051b850101111561085e57600080fd5b9250929050565b60008083601f840112610876578182fd5b50813567ffffffffffffffff81111561088d578182fd5b60208301915083602082850101111561085e57600080fd5b60008060008060008060008060a0898b0312156108c0578384fd5b6108c9896107f7565b97506108d760208a016107f7565b9650604089013567ffffffffffffffff808211156108f3578586fd5b6108ff8c838d0161081b565b909850965060608b0135915080821115610917578586fd5b6109238c838d0161081b565b909650945060808b013591508082111561093b578384fd5b506109488b828c01610865565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610974578182fd5b61097d876107f7565b955061098b602088016107f7565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109b4578283fd5b6109c089828a01610865565b979a9699509497509295939492505050565b6000602082840312156109e3578081fd5b5035919050565b600080604083850312156109fc578182fd5b82359150610a0c602084016107f7565b90509250929050565b600080600080600060808688031215610a2c578081fd5b85359450610a3c602087016107f7565b935060408601359250606086013567ffffffffffffffff811115610a5e578182fd5b610a6a8882890161081b565b969995985093965092949392505050565b600082610a8a57610a8a610b01565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ae6577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610afc57610afc610b01565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220163a43695e12a1330af3fadad01b98cb4bfb4ab3f3a78ee5ac33db33b8f38ad264736f6c63430008030033

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

0000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba

-----Decoded View---------------
Arg [0] : nftAddress_ (address): 0x0db8C099B426677f575D512874D45A767e9acC3c
Arg [1] : merkleRoot_ (bytes32): 0x1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000db8c099b426677f575d512874d45a767e9acc3c
Arg [1] : 1de1a79be707f8000640674ed3957c21e33277be8725e7e185210375981d36ba


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.