ETH Price: $3,259.05 (+2.31%)
Gas: 1 Gwei

Contract

0x62c66D4A9D2aaE2F63039c426b927B4605E333d6
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim138248662021-12-17 20:48:51952 days ago1639774131IN
0x62c66D4A...605E333d6
0 ETH0.00319852104
Claim120986282021-03-24 1:27:331221 days ago1616549253IN
0x62c66D4A...605E333d6
0 ETH0.0119004150
Claim120983942021-03-24 0:34:011221 days ago1616546041IN
0x62c66D4A...605E333d6
0 ETH0.01213078152.90000023
Claim120969502021-03-23 19:15:181221 days ago1616526918IN
0x62c66D4A...605E333d6
0 ETH0.01363923171.9
Claim120969062021-03-23 19:03:431221 days ago1616526223IN
0x62c66D4A...605E333d6
0 ETH0.0158716200
Claim120965192021-03-23 17:34:151221 days ago1616520855IN
0x62c66D4A...605E333d6
0 ETH0.01486669231
Claim120953912021-03-23 13:22:561221 days ago1616505776IN
0x62c66D4A...605E333d6
0 ETH0.00938043118.21
Claim120945492021-03-23 10:22:511221 days ago1616494971IN
0x62c66D4A...605E333d6
0 ETH0.00960256121
Claim120916492021-03-22 23:37:201222 days ago1616456240IN
0x62c66D4A...605E333d6
0 ETH0.0123008155
Claim120895112021-03-22 15:49:231222 days ago1616428163IN
0x62c66D4A...605E333d6
0 ETH0.01762458222.00000145
Claim120886752021-03-22 12:41:451222 days ago1616416905IN
0x62c66D4A...605E333d6
0 ETH0.01174794148
Claim120886432021-03-22 12:35:351222 days ago1616416535IN
0x62c66D4A...605E333d6
0 ETH0.01237953156
Claim120769942021-03-20 17:22:231224 days ago1616260943IN
0x62c66D4A...605E333d6
0 ETH0.01158276146
Claim120746732021-03-20 8:36:111224 days ago1616229371IN
0x62c66D4A...605E333d6
0 ETH0.00794053100.1
Claim120734062021-03-20 4:03:191224 days ago1616212999IN
0x62c66D4A...605E333d6
0 ETH0.00912962115
Claim120468922021-03-16 2:07:061228 days ago1615860426IN
0x62c66D4A...605E333d6
0 ETH0.00952536120
Claim120424122021-03-15 9:39:541229 days ago1615801194IN
0x62c66D4A...605E333d6
0 ETH0.01364579172
Claim120401792021-03-15 1:16:261230 days ago1615770986IN
0x62c66D4A...605E333d6
0 ETH0.0119025150
Claim120366522021-03-14 12:23:041230 days ago1615724584IN
0x62c66D4A...605E333d6
0 ETH0.00825011104
Claim120361052021-03-14 10:20:451230 days ago1615717245IN
0x62c66D4A...605E333d6
0 ETH0.00979824123.50000072
Claim120357102021-03-14 8:48:551230 days ago1615711735IN
0x62c66D4A...605E333d6
0 ETH0.00912479115
Claim120330462021-03-13 22:57:171231 days ago1615676237IN
0x62c66D4A...605E333d6
0 ETH0.00896519113
Claim120308922021-03-13 14:57:261231 days ago1615647446IN
0x62c66D4A...605E333d6
0 ETH0.0118148149
Claim120274432021-03-13 2:20:581231 days ago1615602058IN
0x62c66D4A...605E333d6
0 ETH0.01078806136
Claim120267232021-03-12 23:39:431232 days ago1615592383IN
0x62c66D4A...605E333d6
0 ETH0.00880407111.00000145
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:
RulerAirdrop

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : RulerAirdrop.sol
// SPDX-License-Identifier: NONE

pragma solidity ^0.8.0;

import "./utils/MerkleProof.sol";
import "./utils/Ownable.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IDistributor.sol";

/**
 * @title Ruler Airdrop contract
 * @author crypto-pumpkin
 */
contract RulerAirdrop is IDistributor, Ownable {
  address public immutable override token;
  bytes32 public immutable override merkleRoot;

  uint256 public override totalClaimed;
  uint256 public immutable startTime;
  uint256 public constant claimWindow = 21 days;

  mapping(uint256 => uint256) private claimedBitMap;

  constructor(address token_, bytes32 merkleRoot_) {
    token = token_;
    merkleRoot = merkleRoot_;
    startTime = block.timestamp;
  }

  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 claim(
    uint256 index,
    address account,
    uint256 amount,
    bytes32[] calldata merkleProof
  ) external override {
    require(!isClaimed(index), "RulerAirdrop: Already claimed");
    require(block.timestamp - startTime <= claimWindow, "RulerAirdrop: Too late");

    // Verify the merkle proof.
    bytes32 node = keccak256(abi.encodePacked(index, account, amount));
    require(MerkleProof.verify(merkleProof, merkleRoot, node), "RulerAirdrop: Invalid proof");

    // Mark it claimed and send the token.
    totalClaimed = totalClaimed + amount;
    _setClaimed(index);
    require(IERC20(token).transfer(account, amount), "RulerAirdrop: Transfer failed");

    emit Claimed(index, account, amount);
  }

  // collect any token send by mistake, collect target after 90 days
  function collectDust(address _token) external {
    if (_token == address(0)) { // token address(0) = ETH
      payable(owner()).transfer(address(this).balance);
    } else {
      if (_token == token) {
        require(block.timestamp > startTime + claimWindow, "RulerAirdrop: Not ready");
      }
      uint256 balance = IERC20(_token).balanceOf(address(this));
      IERC20(_token).transfer(owner(), balance);
    }
  }

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

File 2 of 5 : MerkleProof.sol
// 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;
    }
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: None

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 * @author crypto-pumpkin@github
 *
 * By initialization, the owner account will be the one that called initializeOwner. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev COVER: Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 4 of 5 : IERC20.sol
// SPDX-License-Identifier: No License

pragma solidity ^0.8.0;

/**
 * @title Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
}

File 5 of 5 : IDistributor.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

// Allows anyone to claim a token if they exist in a merkle root.
interface IDistributor {
    // Returns the address of the token distributed by this contract.
    function token() 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);
    function totalClaimed() external view returns (uint256);
    // 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);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"claimWindow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"collectDust","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405234801561001057600080fd5b50604051610d14380380610d1483398101604081905261002f91610097565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360609190911b6001600160601b03191660805260a0524260c0526100cf565b600080604083850312156100a9578182fd5b82516001600160a01b03811681146100bf578283fd5b6020939093015192949293505050565b60805160601c60a05160c051610bf061012460003960008181610189015281816103b601526104c101526000818161023001526103920152600081816102a80152818161048001526106cb0152610bf06000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b5ff0b5911610066578063b5ff0b5914610113578063c5d37ae114610126578063d54ad2a11461012e578063f2fde38b14610136578063fc0c546a146101495761009e565b80632e7ba6ef146100a35780632eb4a7ab146100b857806378e97925146100d65780638da5cb5b146100de5780639e34070f146100f3575b600080fd5b6100b66100b136600461086e565b610151565b005b6100c0610390565b6040516100cd919061096d565b60405180910390f35b6100c06103b4565b6100e66103d8565b6040516100cd9190610935565b61010661010136600461083e565b6103e7565b6040516100cd9190610962565b6100b66101213660046107fd565b61042a565b6100c0610611565b6100c0610618565b6100b66101443660046107fd565b61061e565b6100e66106c9565b61015a856103e7565b156101805760405162461bcd60e51b815260040161017790610ac6565b60405180910390fd5b621baf806101ae7f000000000000000000000000000000000000000000000000000000000000000042610b48565b11156101cc5760405162461bcd60e51b815260040161017790610a96565b60008585856040516020016101e39392919061090d565b60405160208183030381529060405280519060200120905061025b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506106ed9050565b6102775760405162461bcd60e51b8152600401610177906109bc565b836001546102859190610b1c565b600155610291866107a8565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906102df9088908890600401610949565b602060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610331919061081e565b61034d5760405162461bcd60e51b815260040161017790610a5f565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02686868660405161038093929190610afd565b60405180910390a1505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031690565b6000806103f661010084610b34565b9050600061040661010085610b7a565b60009283526002602052604090922054600190921b9182169091149150505b919050565b6001600160a01b03811661047e576104406103d8565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610478573d6000803e3d6000fd5b5061060e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161415610503576104e5621baf807f0000000000000000000000000000000000000000000000000000000000000000610b1c565b42116105035760405162461bcd60e51b815260040161017790610a28565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610532903090600401610935565b60206040518083038186803b15801561054a57600080fd5b505afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105829190610856565b9050816001600160a01b031663a9059cbb61059b6103d8565b836040518363ffffffff1660e01b81526004016105b9929190610949565b602060405180830381600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b919061081e565b50505b50565b621baf8081565b60015481565b6000546001600160a01b031633146106485760405162461bcd60e51b8152600401610177906109f3565b6001600160a01b03811661066e5760405162461bcd60e51b815260040161017790610976565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081815b855181101561079d57600086828151811061071d57634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161075e5782816040516020016107419291906108ff565b60405160208183030381529060405280519060200120925061078a565b80836040516020016107719291906108ff565b6040516020818303038152906040528051906020012092505b508061079581610b5f565b9150506106f2565b509092149392505050565b60006107b661010083610b34565b905060006107c661010084610b7a565b6000928352600260205260409092208054600190931b9092179091555050565b80356001600160a01b038116811461042557600080fd5b60006020828403121561080e578081fd5b610817826107e6565b9392505050565b60006020828403121561082f578081fd5b81518015158114610817578182fd5b60006020828403121561084f578081fd5b5035919050565b600060208284031215610867578081fd5b5051919050565b600080600080600060808688031215610885578081fd5b85359450610895602087016107e6565b935060408601359250606086013567ffffffffffffffff808211156108b8578283fd5b818801915088601f8301126108cb578283fd5b8135818111156108d9578384fd5b89602080830285010111156108ec578384fd5b9699959850939650602001949392505050565b918252602082015260400190565b92835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f52756c657241697264726f703a20496e76616c69642070726f6f660000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f52756c657241697264726f703a204e6f74207265616479000000000000000000604082015260600190565b6020808252601d908201527f52756c657241697264726f703a205472616e73666572206661696c6564000000604082015260600190565b60208082526016908201527552756c657241697264726f703a20546f6f206c61746560501b604082015260600190565b6020808252601d908201527f52756c657241697264726f703a20416c726561647920636c61696d6564000000604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60008219821115610b2f57610b2f610b8e565b500190565b600082610b4357610b43610ba4565b500490565b600082821015610b5a57610b5a610b8e565b500390565b6000600019821415610b7357610b73610b8e565b5060010190565b600082610b8957610b89610ba4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea26469706673582212207e22b485438e748f21663cd96b786d70c168d18b669e4f897aa08207c68382a164736f6c634300080000330000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f8d36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d3

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b5ff0b5911610066578063b5ff0b5914610113578063c5d37ae114610126578063d54ad2a11461012e578063f2fde38b14610136578063fc0c546a146101495761009e565b80632e7ba6ef146100a35780632eb4a7ab146100b857806378e97925146100d65780638da5cb5b146100de5780639e34070f146100f3575b600080fd5b6100b66100b136600461086e565b610151565b005b6100c0610390565b6040516100cd919061096d565b60405180910390f35b6100c06103b4565b6100e66103d8565b6040516100cd9190610935565b61010661010136600461083e565b6103e7565b6040516100cd9190610962565b6100b66101213660046107fd565b61042a565b6100c0610611565b6100c0610618565b6100b66101443660046107fd565b61061e565b6100e66106c9565b61015a856103e7565b156101805760405162461bcd60e51b815260040161017790610ac6565b60405180910390fd5b621baf806101ae7f00000000000000000000000000000000000000000000000000000000603f161742610b48565b11156101cc5760405162461bcd60e51b815260040161017790610a96565b60008585856040516020016101e39392919061090d565b60405160208183030381529060405280519060200120905061025b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507fd36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d392508591506106ed9050565b6102775760405162461bcd60e51b8152600401610177906109bc565b836001546102859190610b1c565b600155610291866107a8565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f8169063a9059cbb906102df9088908890600401610949565b602060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610331919061081e565b61034d5760405162461bcd60e51b815260040161017790610a5f565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed02686868660405161038093929190610afd565b60405180910390a1505050505050565b7fd36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d381565b7f00000000000000000000000000000000000000000000000000000000603f161781565b6000546001600160a01b031690565b6000806103f661010084610b34565b9050600061040661010085610b7a565b60009283526002602052604090922054600190921b9182169091149150505b919050565b6001600160a01b03811661047e576104406103d8565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610478573d6000803e3d6000fd5b5061060e565b7f0000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f86001600160a01b0316816001600160a01b03161415610503576104e5621baf807f00000000000000000000000000000000000000000000000000000000603f1617610b1c565b42116105035760405162461bcd60e51b815260040161017790610a28565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610532903090600401610935565b60206040518083038186803b15801561054a57600080fd5b505afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105829190610856565b9050816001600160a01b031663a9059cbb61059b6103d8565b836040518363ffffffff1660e01b81526004016105b9929190610949565b602060405180830381600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b919061081e565b50505b50565b621baf8081565b60015481565b6000546001600160a01b031633146106485760405162461bcd60e51b8152600401610177906109f3565b6001600160a01b03811661066e5760405162461bcd60e51b815260040161017790610976565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f0000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f881565b600081815b855181101561079d57600086828151811061071d57634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161075e5782816040516020016107419291906108ff565b60405160208183030381529060405280519060200120925061078a565b80836040516020016107719291906108ff565b6040516020818303038152906040528051906020012092505b508061079581610b5f565b9150506106f2565b509092149392505050565b60006107b661010083610b34565b905060006107c661010084610b7a565b6000928352600260205260409092208054600190931b9092179091555050565b80356001600160a01b038116811461042557600080fd5b60006020828403121561080e578081fd5b610817826107e6565b9392505050565b60006020828403121561082f578081fd5b81518015158114610817578182fd5b60006020828403121561084f578081fd5b5035919050565b600060208284031215610867578081fd5b5051919050565b600080600080600060808688031215610885578081fd5b85359450610895602087016107e6565b935060408601359250606086013567ffffffffffffffff808211156108b8578283fd5b818801915088601f8301126108cb578283fd5b8135818111156108d9578384fd5b89602080830285010111156108ec578384fd5b9699959850939650602001949392505050565b918252602082015260400190565b92835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f52756c657241697264726f703a20496e76616c69642070726f6f660000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f52756c657241697264726f703a204e6f74207265616479000000000000000000604082015260600190565b6020808252601d908201527f52756c657241697264726f703a205472616e73666572206661696c6564000000604082015260600190565b60208082526016908201527552756c657241697264726f703a20546f6f206c61746560501b604082015260600190565b6020808252601d908201527f52756c657241697264726f703a20416c726561647920636c61696d6564000000604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60008219821115610b2f57610b2f610b8e565b500190565b600082610b4357610b43610ba4565b500490565b600082821015610b5a57610b5a610b8e565b500390565b6000600019821415610b7357610b73610b8e565b5060010190565b600082610b8957610b89610ba4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea26469706673582212207e22b485438e748f21663cd96b786d70c168d18b669e4f897aa08207c68382a164736f6c63430008000033

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

0000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f8d36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d3

-----Decoded View---------------
Arg [0] : token_ (address): 0x2aECCB42482cc64E087b6D2e5Da39f5A7A7001f8
Arg [1] : merkleRoot_ (bytes32): 0xd36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d3

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002aeccb42482cc64e087b6d2e5da39f5a7a7001f8
Arg [1] : d36713a5f22fb100a31bb2656c70a0a70705a8018b30549f60ec10d4fa1803d3


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.