ETH Price: $2,505.46 (+0.15%)

Contract

0x40CbFf2619b72f1F8e788fb7792142BA58bdc27C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim145575122022-04-10 10:47:10936 days ago1649587630IN
0x40CbFf26...A58bdc27C
0 ETH0.0016970121.55158209
Claim145187812022-04-04 9:44:30942 days ago1649065470IN
0x40CbFf26...A58bdc27C
0 ETH0.00452857.49557956
Claim144163482022-03-19 10:31:41958 days ago1647685901IN
0x40CbFf26...A58bdc27C
0 ETH0.0014663418.82845846
Claim144119702022-03-18 18:12:04959 days ago1647627124IN
0x40CbFf26...A58bdc27C
0 ETH0.0042681354.20270987
Claim144115752022-03-18 16:47:57959 days ago1647622077IN
0x40CbFf26...A58bdc27C
0 ETH0.0047615260.46836597
Claim144115652022-03-18 16:45:53959 days ago1647621953IN
0x40CbFf26...A58bdc27C
0 ETH0.0043697356.12516561
Claim144115462022-03-18 16:42:34959 days ago1647621754IN
0x40CbFf26...A58bdc27C
0 ETH0.0036519846.36612693
Claim144087672022-03-18 6:21:58960 days ago1647584518IN
0x40CbFf26...A58bdc27C
0 ETH0.0030089738.20822058
Claim144080022022-03-18 3:36:03960 days ago1647574563IN
0x40CbFf26...A58bdc27C
0 ETH0.0060085576.32630269
Claim144079912022-03-18 3:33:46960 days ago1647574426IN
0x40CbFf26...A58bdc27C
0 ETH0.0068085986.44297769
Claim144079802022-03-18 3:31:23960 days ago1647574283IN
0x40CbFf26...A58bdc27C
0 ETH0.00862351109.51882462
Claim144061862022-03-17 20:37:32960 days ago1647549452IN
0x40CbFf26...A58bdc27C
0 ETH0.0030808240.48181642
Claim144057962022-03-17 19:09:24960 days ago1647544164IN
0x40CbFf26...A58bdc27C
0 ETH0.0058015873.69528662
Claim143961192022-03-16 6:59:03962 days ago1647413943IN
0x40CbFf26...A58bdc27C
0 ETH0.0019249824.4492215
Claim143961102022-03-16 6:57:02962 days ago1647413822IN
0x40CbFf26...A58bdc27C
0 ETH0.0022050528
Claim143903152022-03-15 9:22:07962 days ago1647336127IN
0x40CbFf26...A58bdc27C
0 ETH0.0014033617.82731383
Claim143895062022-03-15 6:18:39963 days ago1647325119IN
0x40CbFf26...A58bdc27C
0 ETH0.0011352814.4178109
Claim143864752022-03-14 18:56:21963 days ago1647284181IN
0x40CbFf26...A58bdc27C
0 ETH0.0029132737.00802896
Claim143841232022-03-14 10:18:46963 days ago1647253126IN
0x40CbFf26...A58bdc27C
0 ETH0.0018977724.09077132
Claim143817432022-03-14 1:19:58964 days ago1647220798IN
0x40CbFf26...A58bdc27C
0 ETH0.0018261623.18825644
Claim143771572022-03-13 8:07:14964 days ago1647158834IN
0x40CbFf26...A58bdc27C
0 ETH0.0018536423.80585533
Claim143769612022-03-13 7:20:06965 days ago1647156006IN
0x40CbFf26...A58bdc27C
0 ETH0.0011094314.08775799
Claim143765822022-03-13 5:55:48965 days ago1647150948IN
0x40CbFf26...A58bdc27C
0 ETH0.0039556951.98436629
Claim143754252022-03-13 1:23:27965 days ago1647134607IN
0x40CbFf26...A58bdc27C
0 ETH0.0022448528.50541013
Claim143734902022-03-12 18:17:23965 days ago1647109043IN
0x40CbFf26...A58bdc27C
0 ETH0.003875249.20893234
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:
Destributor

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-04-07
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.4;

interface Erc20 {
	function transfer(address, uint256) external returns (bool);
	function balanceOf(address) external returns (uint256);
	function transferFrom(address, address, uint256) external returns (bool);
}

/**
 * @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.
  /// @param p Array of merkle proofs
  /// @param r Merkle root
  /// @param l Candidate 'leaf' of the merkle tree
  function verify(bytes32[] memory p, bytes32 r, bytes32 l) internal pure returns (bool) {
    uint256 len = p.length;
    bytes32 hash = l;

    for (uint256 i = 0; i < len; i++) {
      bytes32 element = p[i];

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

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

contract Destributor {
  mapping (uint256 => bytes32) public merkleRoot;
  mapping (uint256 => mapping (uint256 => uint256)) private claims;
  mapping (uint256 => bool) private cancelled;

  uint256 public distribution;

  address public immutable token;
  address public admin;
  bool public paused;

  event Distribute(bytes32 merkleRoot, uint256 distribution);
  event Claim(uint256 index, address owner, uint256 amount);

  /// @param t Address of an ERC20 token
  /// @param r Initial merkle root
  constructor(address t, bytes32 r) {
    admin = msg.sender;
    token = t;
    merkleRoot[0] = r;
  }

  /// @notice Generate a new distribution, cancelling the would be current one
  /// @param f The address of the wallet containing tokens to distribute
  /// @param t The address that will receive any currently remaining distributions (will normally be the same as from)
  /// @param a The amount of tokens in the new distribution
  /// @param r The merkle root associated with the new distribution
  function distribute(address f, address t, uint256 a, bytes32 r) external authorized(admin) returns (bool) {
    // remove curent token balance
    Erc20 erc = Erc20(token);
    uint256 balance = erc.balanceOf(address(this));
    erc.transfer(t, balance);
        
    // transfer enough tokens for new distribution
    erc.transferFrom(f, address(this), a);

    // we are working with the distribution, eventually bumping it...
    uint256 current = distribution;
        
    // cancel the (to-be) previous distribution
    cancelled[current] = true;

    current++;
    // add the new distribution's merkleRoot
    merkleRoot[current] = r;

    distribution = current;

    // unpause redemptions
    pause(false);

    emit Distribute(r, current);        

    return true;
  }

  /// @param i An index which to construct a possible claim from
  /// @param d The distribution to check for a claim
  function claimed(uint256 i, uint256 d) public view returns (bool) {
    require(i > 0, 'passed index must be > 0');

    uint256 wordIndex = i / 256;
    uint256 bitIndex = i % 256;
    uint256 word = claims[d][wordIndex];
    uint256 mask = (1 << bitIndex);

    return word & mask == mask;
  }

  /// @param i An index which to construct a claim from
  /// @param o Owner address of the token being transferred
  /// @param a Amount being transferred
  /// @param p array of merkle proofs
  function claim(uint256 i, address o, uint256 a, bytes32[] calldata p) external returns (bool) {
    require(!paused, 'claiming is paused');
    require(!claimed(i, distribution), 'distribution claimed');
    require(!cancelled[distribution], 'distribution cancelled');

    // Verify the merkle proof...
    bytes32 node = keccak256(abi.encodePacked(i, o, a));
    require(MerkleProof.verify(p, merkleRoot[distribution], node), 'invalid proof');

    // Mark it claimed...
    uint256 wordIndex = i / 256;
    uint256 bitIndex = i % 256;
    claims[distribution][wordIndex] = claims[distribution][wordIndex] | (1 << bitIndex);
    
    // send the token...
    require(Erc20(token).transfer(o, a), 'transfer failed.');

    emit Claim(i, o, a);

    return true;
  }

  /// @param a Address of a new admin
  function transferAdmin(address a) external authorized(admin) returns (bool) {
    admin = a;

    return true;
  }

  /// @notice Allows admin to pause or unpause claims
  /// @param b Boolean value to set paused to
  function pause(bool b) public authorized(admin) returns (bool) {
    paused = b;
    return true;
  }

  modifier authorized(address a) {
    require(msg.sender == a, 'sender must be authorized');
    _;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"t","type":"address"},{"internalType":"bytes32","name":"r","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"distribution","type":"uint256"}],"name":"Distribute","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"address","name":"o","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"bytes32[]","name":"p","type":"bytes32[]"}],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"bytes32","name":"r","type":"bytes32"}],"name":"distribute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"transferAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b5060405161107a38038061107a83398101604081905261002f91610085565b60048054336001600160a01b031990911617905560609190911b6001600160601b03191660805260008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5556100bd565b60008060408385031215610097578182fd5b82516001600160a01b03811681146100ad578283fd5b6020939093015192949293505050565b60805160601c610f916100e9600039600081816101dd015281816105f301526109740152610f916000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806375829def11610076578063eb0edcfb1161005b578063eb0edcfb14610180578063f851a44014610193578063fc0c546a146101d857600080fd5b806375829def1461015a578063a54ab4571461016d57600080fd5b80633c70b357116100a75780633c70b357146100fe5780635c975abb1461012c5780635ee58efc1461015157600080fd5b806302329a29146100c35780632e7ba6ef146100eb575b600080fd5b6100d66100d1366004610d7a565b6101ff565b60405190151581526020015b60405180910390f35b6100d66100f9366004610de2565b6102d8565b61011e61010c366004610db2565b60006020819052908152604090205481565b6040519081526020016100e2565b6004546100d69074010000000000000000000000000000000000000000900460ff1681565b61011e60035481565b6100d6610168366004610d18565b61073c565b6100d661017b366004610e74565b61080d565b6100d661018e366004610d39565b6108c1565b6004546101b39073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e2565b6101b37f000000000000000000000000000000000000000000000000000000000000000081565b60045460009073ffffffffffffffffffffffffffffffffffffffff16338114610289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a65640000000000000060448201526064015b60405180910390fd5b6004805484151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556001915050919050565b60045460009074010000000000000000000000000000000000000000900460ff1615610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636c61696d696e672069732070617573656400000000000000000000000000006044820152606401610280565b61036c8660035461080d565b156103d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f646973747269627574696f6e20636c61696d65640000000000000000000000006044820152606401610280565b60035460009081526002602052604090205460ff161561044f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f646973747269627574696f6e2063616e63656c6c6564000000000000000000006044820152606401610280565b60408051602081018890527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1691810191909152605481018590526000906074016040516020818303038152906040528051906020012090506104fa84848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506003548152602081905260409020549250859150610c169050565b610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642070726f6f66000000000000000000000000000000000000006044820152606401610280565b600061056e61010089610e95565b9050600061057e6101008a610f07565b600354600090815260016020818152604080842087855290915291829020805491841b9091179055517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018a90529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561063957600080fd5b505af115801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190610d96565b6106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f7472616e73666572206661696c65642e000000000000000000000000000000006044820152606401610280565b604080518a815273ffffffffffffffffffffffffffffffffffffffff8a1660208201529081018890527f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f3039060600160405180910390a150600198975050505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff163381146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a6564000000000000006044820152606401610280565b6004805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6000808311610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f70617373656420696e646578206d757374206265203e203000000000000000006044820152606401610280565b600061088661010085610e95565b9050600061089661010086610f07565b600094855260016020818152604080882095885294905292909420549190931b908116149392505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16338114610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a6564000000000000006044820152606401610280565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000009060009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190610dca565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390529192509083169063a9059cbb90604401602060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190610d96565b506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152306024830152604482018890528316906323b872dd90606401602060405180830381600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190610d96565b50600354600081815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580610baa81610ea9565b60008181526020819052604081208990556003829055909250610bcd91506101ff565b5060408051878152602081018390527f9d30f704de5f2d6155b872bae8dcfb406d03fd551cbf6dce019b9fc8f56c2033910160405180910390a150600198975050505050505050565b825160009082825b82811015610ce3576000878281518110610c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610ca3576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610cd0565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610cdb81610ea9565b915050610c1e565b50909314949350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d1357600080fd5b919050565b600060208284031215610d29578081fd5b610d3282610cef565b9392505050565b60008060008060808587031215610d4e578283fd5b610d5785610cef565b9350610d6560208601610cef565b93969395505050506040820135916060013590565b600060208284031215610d8b578081fd5b8135610d3281610f4a565b600060208284031215610da7578081fd5b8151610d3281610f4a565b600060208284031215610dc3578081fd5b5035919050565b600060208284031215610ddb578081fd5b5051919050565b600080600080600060808688031215610df9578081fd5b85359450610e0960208701610cef565b935060408601359250606086013567ffffffffffffffff80821115610e2c578283fd5b818801915088601f830112610e3f578283fd5b813581811115610e4d578384fd5b8960208260051b8501011115610e61578384fd5b9699959850939650602001949392505050565b60008060408385031215610e86578182fd5b50508035926020909101359150565b600082610ea457610ea4610f1b565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f00577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610f1657610f16610f1b565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8015158114610f5857600080fd5b5056fea26469706673582212204843107ce43bf623ed52096277bc12fadef635253e39b1c07bb3042948ed5a8164736f6c63430008040033000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806375829def11610076578063eb0edcfb1161005b578063eb0edcfb14610180578063f851a44014610193578063fc0c546a146101d857600080fd5b806375829def1461015a578063a54ab4571461016d57600080fd5b80633c70b357116100a75780633c70b357146100fe5780635c975abb1461012c5780635ee58efc1461015157600080fd5b806302329a29146100c35780632e7ba6ef146100eb575b600080fd5b6100d66100d1366004610d7a565b6101ff565b60405190151581526020015b60405180910390f35b6100d66100f9366004610de2565b6102d8565b61011e61010c366004610db2565b60006020819052908152604090205481565b6040519081526020016100e2565b6004546100d69074010000000000000000000000000000000000000000900460ff1681565b61011e60035481565b6100d6610168366004610d18565b61073c565b6100d661017b366004610e74565b61080d565b6100d661018e366004610d39565b6108c1565b6004546101b39073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e2565b6101b37f000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d81565b60045460009073ffffffffffffffffffffffffffffffffffffffff16338114610289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a65640000000000000060448201526064015b60405180910390fd5b6004805484151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556001915050919050565b60045460009074010000000000000000000000000000000000000000900460ff1615610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636c61696d696e672069732070617573656400000000000000000000000000006044820152606401610280565b61036c8660035461080d565b156103d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f646973747269627574696f6e20636c61696d65640000000000000000000000006044820152606401610280565b60035460009081526002602052604090205460ff161561044f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f646973747269627574696f6e2063616e63656c6c6564000000000000000000006044820152606401610280565b60408051602081018890527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1691810191909152605481018590526000906074016040516020818303038152906040528051906020012090506104fa84848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506003548152602081905260409020549250859150610c169050565b610560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642070726f6f66000000000000000000000000000000000000006044820152606401610280565b600061056e61010089610e95565b9050600061057e6101008a610f07565b600354600090815260016020818152604080842087855290915291829020805491841b9091179055517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018a90529192507f000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d9091169063a9059cbb90604401602060405180830381600087803b15801561063957600080fd5b505af115801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190610d96565b6106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f7472616e73666572206661696c65642e000000000000000000000000000000006044820152606401610280565b604080518a815273ffffffffffffffffffffffffffffffffffffffff8a1660208201529081018890527f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f3039060600160405180910390a150600198975050505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff163381146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a6564000000000000006044820152606401610280565b6004805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6000808311610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f70617373656420696e646578206d757374206265203e203000000000000000006044820152606401610280565b600061088661010085610e95565b9050600061089661010086610f07565b600094855260016020818152604080882095885294905292909420549190931b908116149392505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff16338114610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f73656e646572206d75737420626520617574686f72697a6564000000000000006044820152606401610280565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d9060009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190610dca565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390529192509083169063a9059cbb90604401602060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab69190610d96565b506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152306024830152604482018890528316906323b872dd90606401602060405180830381600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190610d96565b50600354600081815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580610baa81610ea9565b60008181526020819052604081208990556003829055909250610bcd91506101ff565b5060408051878152602081018390527f9d30f704de5f2d6155b872bae8dcfb406d03fd551cbf6dce019b9fc8f56c2033910160405180910390a150600198975050505050505050565b825160009082825b82811015610ce3576000878281518110610c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610ca3576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610cd0565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610cdb81610ea9565b915050610c1e565b50909314949350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d1357600080fd5b919050565b600060208284031215610d29578081fd5b610d3282610cef565b9392505050565b60008060008060808587031215610d4e578283fd5b610d5785610cef565b9350610d6560208601610cef565b93969395505050506040820135916060013590565b600060208284031215610d8b578081fd5b8135610d3281610f4a565b600060208284031215610da7578081fd5b8151610d3281610f4a565b600060208284031215610dc3578081fd5b5035919050565b600060208284031215610ddb578081fd5b5051919050565b600080600080600060808688031215610df9578081fd5b85359450610e0960208701610cef565b935060408601359250606086013567ffffffffffffffff80821115610e2c578283fd5b818801915088601f830112610e3f578283fd5b813581811115610e4d578384fd5b8960208260051b8501011115610e61578384fd5b9699959850939650602001949392505050565b60008060408385031215610e86578182fd5b50508035926020909101359150565b600082610ea457610ea4610f1b565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f00577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b600082610f1657610f16610f1b565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8015158114610f5857600080fd5b5056fea26469706673582212204843107ce43bf623ed52096277bc12fadef635253e39b1c07bb3042948ed5a8164736f6c63430008040033

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

000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : t (address): 0xbf30461210b37012783957D90dC26B95Ce3b6f2d
Arg [1] : r (bytes32): 0x0000000000000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf30461210b37012783957d90dc26b95ce3b6f2d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

1476:3752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:104;;;;;;:::i;:::-;;:::i;:::-;;;4634:14:1;;4627:22;4609:41;;4597:2;4582:18;5010:104:0;;;;;;;;3953:786;;;;;;:::i;:::-;;:::i;1502:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4807:25:1;;;4795:2;4780:18;1502:46:0;4762:76:1;1766:18:0;;;;;;;;;;;;1672:27;;;;;;4784:118;;;;;;:::i;:::-;;:::i;3445:304::-;;;;;;:::i;:::-;;:::i;2511:808::-;;;;;;:::i;:::-;;:::i;1741:20::-;;;;;;;;;;;;3709:42:1;3697:55;;;3679:74;;3667:2;3652:18;1741:20:0;3634:125:1;1706:30:0;;;;;5010:104;5051:5;;5067:4;;5051:5;;5166:10;:15;;5158:53;;;;;;;5645:2:1;5158:53:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:27;5703:18;;;5696:55;5768:18;;5158:53:0;;;;;;;;;5080:6:::1;:10:::0;;;::::1;;::::0;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;;;5010:104:0;;;;:::o;3953:786::-;4063:6;;4041:4;;4063:6;;;;;4062:7;4054:38;;;;;;;5298:2:1;4054:38:0;;;5280:21:1;5337:2;5317:18;;;5310:30;5376:20;5356:18;;;5349:48;5414:18;;4054:38:0;5270:168:1;4054:38:0;4108:24;4116:1;4119:12;;4108:7;:24::i;:::-;4107:25;4099:58;;;;;;;7048:2:1;4099:58:0;;;7030:21:1;7087:2;7067:18;;;7060:30;7126:22;7106:18;;;7099:50;7166:18;;4099:58:0;7020:170:1;4099:58:0;4183:12;;4173:23;;;;:9;:23;;;;;;;;4172:24;4164:59;;;;;;;6697:2:1;4164:59:0;;;6679:21:1;6736:2;6716:18;;;6709:30;6775:24;6755:18;;;6748:52;6817:18;;4164:59:0;6669:172:1;4164:59:0;4292:25;;;;;;3319:19:1;;;3389:66;3376:2;3372:15;;;3368:88;3354:12;;;3347:110;;;;3473:12;;;3466:28;;;4267:12:0;;3510::1;;4292:25:0;;;;;;;;;;;;4282:36;;;;;;4267:51;;4333:53;4352:1;;4333:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4366:12:0;;4355:24;;;;;;;;;;;-1:-1:-1;4381:4:0;;-1:-1:-1;4333:18:0;;-1:-1:-1;4333:53:0:i;:::-;4325:79;;;;;;;7397:2:1;4325:79:0;;;7379:21:1;7436:2;7416:18;;;7409:30;7475:15;7455:18;;;7448:43;7508:18;;4325:79:0;7369:163:1;4325:79:0;4440:17;4460:7;4464:3;4460:1;:7;:::i;:::-;4440:27;-1:-1:-1;4474:16:0;4493:7;4497:3;4493:1;:7;:::i;:::-;4548:12;;4541:20;;;;4576:1;4541:20;;;;;;;;:31;;;;;;;;;;;;4576:13;;;4541:49;;;4507:83;;4637:27;;;;:21;4359:55:1;;;4637:27:0;;;4341:74:1;4431:18;;;4424:34;;;4576:13:0;;-1:-1:-1;4643:5:0;4637:21;;;;;;4314:18:1;;4637:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4629:56;;;;;;;5999:2:1;4629:56:0;;;5981:21:1;6038:2;6018:18;;;6011:30;6077:18;6057;;;6050:46;6113:18;;4629:56:0;5971:166:1;4629:56:0;4699:14;;;7921:25:1;;;7994:42;7982:55;;7977:2;7962:18;;7955:83;8054:18;;;8047:34;;;4699:14:0;;7909:2:1;7894:18;4699:14:0;;;;;;;-1:-1:-1;4729:4:0;;3953:786;-1:-1:-1;;;;;;;;3953:786:0:o;4784:118::-;4838:5;;4854:4;;4838:5;;5166:10;:15;;5158:53;;;;;;;5645:2:1;5158:53:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:27;5703:18;;;5696:55;5768:18;;5158:53:0;5617:175:1;5158:53:0;4867:5:::1;:9:::0;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;;-1:-1:-1;4784:118:0;;;;:::o;3445:304::-;3505:4;3530:1;3526;:5;3518:42;;;;;;;6344:2:1;3518:42:0;;;6326:21:1;6383:2;6363:18;;;6356:30;6422:26;6402:18;;;6395:54;6466:18;;3518:42:0;6316:174:1;3518:42:0;3569:17;3589:7;3593:3;3589:1;:7;:::i;:::-;3569:27;-1:-1:-1;3603:16:0;3622:7;3626:3;3622:1;:7;:::i;:::-;3636:12;3651:9;;;:6;:9;;;;;;;;:20;;;;;;;;;;;3694:13;;;;3724:11;;;:19;;3445:304;-1:-1:-1;;;3445:304:0:o;2511:808::-;2595:5;;2611:4;;2595:5;;5166:10;:15;;5158:53;;;;;;;5645:2:1;5158:53:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:27;5703:18;;;5696:55;5768:18;;5158:53:0;5617:175:1;5158:53:0;2709:28:::1;::::0;;;;2731:4:::1;2709:28;::::0;::::1;3679:74:1::0;2678:5:0::1;::::0;2660:9:::1;::::0;2709:13:::1;::::0;::::1;::::0;::::1;::::0;3652:18:1;;2709:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2744:24;::::0;;;;:12:::1;4359:55:1::0;;;2744:24:0::1;::::0;::::1;4341:74:1::0;4431:18;;;4424:34;;;2691:46:0;;-1:-1:-1;2744:12:0;;::::1;::::0;::::1;::::0;4314:18:1;;2744:24:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2837:37:0::1;::::0;;;;:16:::1;4045:15:1::0;;;2837:37:0::1;::::0;::::1;4027:34:1::0;2865:4:0::1;4077:18:1::0;;;4070:43;4129:18;;;4122:34;;;2837:16:0;::::1;::::0;::::1;::::0;3939:18:1;;2837:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2972:12:0::1;::::0;2954:15:::1;3050:18:::0;;;:9:::1;:18;::::0;;;;:25;;;::::1;3071:4;3050:25;::::0;;2972:12;3084:9:::1;2972:12:::0;3084:9:::1;:::i;:::-;3146:10;:19:::0;;;::::1;::::0;;;;;;:23;;;3178:12:::1;:22:::0;;;3084:9;;-1:-1:-1;3237:12:0::1;::::0;-1:-1:-1;3237:5:0::1;:12::i;:::-;-1:-1:-1::0;3263:22:0::1;::::0;;5017:25:1;;;5073:2;5058:18;;5051:34;;;3263:22:0::1;::::0;4990:18:1;3263:22:0::1;;;;;;;-1:-1:-1::0;3309:4:0::1;::::0;2511:808;-1:-1:-1;;;;;;;;2511:808:0:o;827:642::-;935:8;;908:4;;965:1;908:4;975:392;999:3;995:1;:7;975:392;;;1018:15;1036:1;1038;1036:4;;;;;;;;;;;;;;;;;;;;;;1018:22;;1063:7;1055:4;:15;1051:309;;1171:31;;;;;;3039:19:1;;;3074:12;;;3067:28;;;3111:12;;1171:31:0;;;;;;;;;;;;1161:42;;;;;;1154:49;;1051:309;;;1318:31;;;;;;3039:19:1;;;3074:12;;;3067:28;;;3111:12;;1318:31:0;;;;;;;;;;;;1308:42;;;;;;1301:49;;1051:309;-1:-1:-1;1004:3:0;;;;:::i;:::-;;;;975:392;;;-1:-1:-1;1454:9:0;;;;827:642;-1:-1:-1;;;;827:642:0:o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:196::-;274:6;327:2;315:9;306:7;302:23;298:32;295:2;;;348:6;340;333:22;295:2;376:29;395:9;376:29;:::i;:::-;366:39;285:126;-1:-1:-1;;;285:126:1:o;416:407::-;502:6;510;518;526;579:3;567:9;558:7;554:23;550:33;547:2;;;601:6;593;586:22;547:2;629:29;648:9;629:29;:::i;:::-;619:39;;677:38;711:2;700:9;696:18;677:38;:::i;:::-;537:286;;667:48;;-1:-1:-1;;;;762:2:1;747:18;;734:32;;813:2;798:18;785:32;;537:286::o;828:251::-;884:6;937:2;925:9;916:7;912:23;908:32;905:2;;;958:6;950;943:22;905:2;1002:9;989:23;1021:28;1043:5;1021:28;:::i;1084:255::-;1151:6;1204:2;1192:9;1183:7;1179:23;1175:32;1172:2;;;1225:6;1217;1210:22;1172:2;1262:9;1256:16;1281:28;1303:5;1281:28;:::i;1344:190::-;1403:6;1456:2;1444:9;1435:7;1431:23;1427:32;1424:2;;;1477:6;1469;1462:22;1424:2;-1:-1:-1;1505:23:1;;1414:120;-1:-1:-1;1414:120:1:o;1539:194::-;1609:6;1662:2;1650:9;1641:7;1637:23;1633:32;1630:2;;;1683:6;1675;1668:22;1630:2;-1:-1:-1;1711:16:1;;1620:113;-1:-1:-1;1620:113:1:o;1738:876::-;1851:6;1859;1867;1875;1883;1936:3;1924:9;1915:7;1911:23;1907:33;1904:2;;;1958:6;1950;1943:22;1904:2;1999:9;1986:23;1976:33;;2028:38;2062:2;2051:9;2047:18;2028:38;:::i;:::-;2018:48;;2113:2;2102:9;2098:18;2085:32;2075:42;;2168:2;2157:9;2153:18;2140:32;2191:18;2232:2;2224:6;2221:14;2218:2;;;2253:6;2245;2238:22;2218:2;2296:6;2285:9;2281:22;2271:32;;2341:7;2334:4;2330:2;2326:13;2322:27;2312:2;;2368:6;2360;2353:22;2312:2;2413;2400:16;2439:2;2431:6;2428:14;2425:2;;;2460:6;2452;2445:22;2425:2;2518:7;2513:2;2503:6;2500:1;2496:14;2492:2;2488:23;2484:32;2481:45;2478:2;;;2544:6;2536;2529:22;2478:2;1894:720;;;;-1:-1:-1;1894:720:1;;-1:-1:-1;2580:2:1;2572:11;;2602:6;1894:720;-1:-1:-1;;;1894:720:1:o;2619:258::-;2687:6;2695;2748:2;2736:9;2727:7;2723:23;2719:32;2716:2;;;2769:6;2761;2754:22;2716:2;-1:-1:-1;;2797:23:1;;;2867:2;2852:18;;;2839:32;;-1:-1:-1;2706:171:1:o;8092:120::-;8132:1;8158;8148:2;;8163:18;;:::i;:::-;-1:-1:-1;8197:9:1;;8138:74::o;8217:353::-;8256:3;8287:66;8280:5;8277:77;8274:2;;;8389:77;8384:3;8377:90;8490:4;8487:1;8480:15;8520:4;8515:3;8508:17;8274:2;-1:-1:-1;8562:1:1;8551:13;;8264:306::o;8575:112::-;8607:1;8633;8623:2;;8638:18;;:::i;:::-;-1:-1:-1;8672:9:1;;8613:74::o;8692:184::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8881:118;8967:5;8960:13;8953:21;8946:5;8943:32;8933:2;;8989:1;8986;8979:12;8933:2;8923:76;:::o

Swarm Source

ipfs://4843107ce43bf623ed52096277bc12fadef635253e39b1c07bb3042948ed5a81

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.