Contract 0x00d59bc35174c3b250dd92a363495d38c8777a49 1

 
Txn Hash Method
Index
From
To
Value
0x3603da0ce973882108eba7766e3f571a1340e152e46b2d5e28e000992268ce8aClaim255834522022-09-26 14:30:184 days 8 hrs ago0x13cbd624af484c4c695ff0e1d0b7e125d45f2c76 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0004494296120.00100155
0x4d2eb2dec8735d29f7faa8bbd729d8a61a233d765dace869682c04e8870dfbe2Claim239926042022-09-20 18:28:2910 days 4 hrs ago0x14b6812a81218e17cb7a1b2ffd14f5789283193c IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001566712270.001
0x307cabdd19b2ebac6c11a40d0de998de1be2a5936013781c3b83caa2630d0471Claim225992632022-09-10 5:47:5120 days 16 hrs ago0x48de880869eae3ff014260a5c2fadeb11018b495 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.000109282760.001
0xb0f558d36f6b6540c5ee9649792d300c5efebf1b36e6b8293fc873b742459fc2Claim222950072022-09-07 17:34:2823 days 5 hrs ago0x3d78ace36ab76eae6dbfda33e2835873bccc095d IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0002597437660.001
0x26fb8ed0e3464100408c5b33e4a22e8bde22f4f19568720f8b397716467ee560Claim219426732022-09-04 23:03:4425 days 23 hrs ago0xf807ea9aa78d0615e1f87aeaf9ca2a660ff029f6 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000348792480.001
0xe3d03528c909c3b047d725aba9672776b95be7f16294dbcec17eb58bf181d744Claim219417462022-09-04 22:39:0425 days 23 hrs ago0x35e55a4227160d4d4f1b1732318d5062f348b354 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000976063360.001
0x1e7d2959e4a4af6464046b4ca7cc2724102430eb93224432a748cf903c4016f8Claim219331642022-09-04 19:55:4226 days 2 hrs ago0x9b54264d7502f80163ea949038aad771eae67e38 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0002008806970.001
0xb18f6c1bc8dd3a598261b1c375022b761890494481b6d22002110b3c220f32daClaim219330592022-09-04 19:53:1826 days 2 hrs ago0x9b54264d7502f80163ea949038aad771eae67e38 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0002041917380.001
0xafd83ae0cb03eefb5ef5deb11fd43130c6b386b09bb19e6c3e0fbc40756a338eClaim219328562022-09-04 19:48:1726 days 2 hrs ago0x9b54264d7502f80163ea949038aad771eae67e38 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001439420180.001
0x6b644f27a6833dcb0ba67c9246bb29fa37206fbafd2817742dc5dd6ffbe8d520Claim218224872022-09-03 15:04:3227 days 7 hrs ago0x3818241e5982ccb87d6f618bf334aa46e84b5b57 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000959608260.001
0xaeb8ad944efc78f2271e09858a63dc8ccbd4be21caa7ee304e2382880cdbb115Claim218221882022-09-03 15:02:1227 days 7 hrs ago0x3818241e5982ccb87d6f618bf334aa46e84b5b57 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000342117450.001
0x8a2bb4090dd1c594f55e11da9475db41ef38f5f72d78683442a8294d09499e86Claim217531892022-09-03 1:52:0127 days 20 hrs ago0x09da2d53c9d7e569e428b7f4a5c82c7cd855a7d4 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000777824510.001
0x0e9912a8c61d379c3f1bb0ee13f2ebe96dfdbadeb07ea48708a2b320fd7aad30Claim212211912022-08-30 18:40:4231 days 3 hrs ago0xccd2eb019b01659b007e3ca2aa6cab205221273a IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.000308023350.001
0x8b1e6afff4f4e53168c2eb87614d25323634703e40986f47372c9ea9ace74cc7Claim204827022022-08-25 2:43:2736 days 19 hrs ago0x9969b6445635589f894e5c1cedc232d89e2746db IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000684034250.001
0x742325184b02eb4cf0d13052af00ae93d06dd1de45c4fb3c900c7f95b8d0b9d3Claim196283502022-08-18 14:00:4143 days 8 hrs ago0x5b5cfc5d48a33b1ae2c733a765411c8804c246a3 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001646816020.001
0x1837547cdc6d4a4236cb505fd893cfe4b7ba7f87b61d7fa792c3f0fcff8694e0Claim194379862022-08-17 2:07:5944 days 20 hrs ago0xe376591652012958296193ce1dd13d5607071964 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000452178170.001
0x87f43b44674544fec5e3bd87763997a1470911be0bc3e6f9d360277b152affafClaim193234682022-08-16 8:53:1645 days 13 hrs ago0x444b977870f919db4d18da4a619979339d6ece7a IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000779670280.001
0x629cb0dde6b6ed7c46fc43a1ad0c25ddcdba8ed94fe91dc1041d4b58ceb35bbaClaim191901332022-08-15 13:44:3546 days 8 hrs ago0x6f2aabdf2dab927e06f0b3480fe0d414a9416964 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001265414440.001
0x9b45da8597489a2ae56fe237c5d1e87d4b80338fd7ef6cc9b3dfc8662d95e523Claim191048322022-08-14 20:52:3847 days 1 hr ago0x6ae8c2812447c23c8b721011d40fe1448e1e64b9 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.000173283410.001
0xb6a2c4d2b8fd93009f4288fe75391cecd34478e7495ff19f61132fdc3474ed80Claim191045512022-08-14 20:46:5147 days 1 hr ago0x6ae8c2812447c23c8b721011d40fe1448e1e64b9 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000938221340.001
0x9dedce9cd2928e14bb7814cf654af507ae24f6ccd4f255d19d2a405a8738690fClaim191044952022-08-14 20:45:2847 days 1 hr ago0x6ae8c2812447c23c8b721011d40fe1448e1e64b9 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001331958520.001
0x46d043fe71ab619275cea950bf02faff03a2bc3730d56ad8656e6d77c3d4b75dClaim190968692022-08-14 18:28:5547 days 4 hrs ago0xf37fa55fca5b26a451152c88cb026907c59c4aed IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001460612470.001
0x1a0d8f27a97f162bccb608efcc57e1cdcfe06dd09352ee4a2bd1e332237b4a83Claim190740242022-08-14 13:41:1547 days 8 hrs ago 0xd2839cc657c9360d9655fe279d3b65ad85f63e46 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000983006630.001
0x62638b7e8094901aef9025e4bc1d315db89c722c9bc9390f90a46d1f63c187f5Claim190715602022-08-14 13:18:3747 days 9 hrs ago0x05d6d0485497debb3a6c61007df22719bab8bde1 IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0001025740780.001
0x4f22942e81affba8c51cca890f94ce2a40af40d5e6dc8f672f7e5e8eac9ed630Claim190707182022-08-14 13:15:0747 days 9 hrs ago0x1b0b50625e89fc4b3e3c43f24479da52fc49c0ab IN  0x00d59bc35174c3b250dd92a363495d38c8777a490 Ether0.0000578868570.001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3603da0ce973882108eba7766e3f571a1340e152e46b2d5e28e000992268ce8a255834522022-09-26 14:30:184 days 8 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x4d2eb2dec8735d29f7faa8bbd729d8a61a233d765dace869682c04e8870dfbe2239926042022-09-20 18:28:2910 days 4 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x307cabdd19b2ebac6c11a40d0de998de1be2a5936013781c3b83caa2630d0471225992632022-09-10 5:47:5120 days 16 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0xb0f558d36f6b6540c5ee9649792d300c5efebf1b36e6b8293fc873b742459fc2222950072022-09-07 17:34:2823 days 5 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x26fb8ed0e3464100408c5b33e4a22e8bde22f4f19568720f8b397716467ee560219426732022-09-04 23:03:4425 days 23 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0xe3d03528c909c3b047d725aba9672776b95be7f16294dbcec17eb58bf181d744219417462022-09-04 22:39:0425 days 23 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x1e7d2959e4a4af6464046b4ca7cc2724102430eb93224432a748cf903c4016f8219331642022-09-04 19:55:4226 days 2 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x6b644f27a6833dcb0ba67c9246bb29fa37206fbafd2817742dc5dd6ffbe8d520218224872022-09-03 15:04:3227 days 7 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x8a2bb4090dd1c594f55e11da9475db41ef38f5f72d78683442a8294d09499e86217531892022-09-03 1:52:0127 days 20 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x0e9912a8c61d379c3f1bb0ee13f2ebe96dfdbadeb07ea48708a2b320fd7aad30212211912022-08-30 18:40:4231 days 3 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x8b1e6afff4f4e53168c2eb87614d25323634703e40986f47372c9ea9ace74cc7204827022022-08-25 2:43:2736 days 19 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x742325184b02eb4cf0d13052af00ae93d06dd1de45c4fb3c900c7f95b8d0b9d3196283502022-08-18 14:00:4143 days 8 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x1837547cdc6d4a4236cb505fd893cfe4b7ba7f87b61d7fa792c3f0fcff8694e0194379862022-08-17 2:07:5944 days 20 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x87f43b44674544fec5e3bd87763997a1470911be0bc3e6f9d360277b152affaf193234682022-08-16 8:53:1645 days 13 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x629cb0dde6b6ed7c46fc43a1ad0c25ddcdba8ed94fe91dc1041d4b58ceb35bba191901332022-08-15 13:44:3546 days 8 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x46d043fe71ab619275cea950bf02faff03a2bc3730d56ad8656e6d77c3d4b75d190968692022-08-14 18:28:5547 days 4 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x1a0d8f27a97f162bccb608efcc57e1cdcfe06dd09352ee4a2bd1e332237b4a83190740242022-08-14 13:41:1547 days 8 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x4f22942e81affba8c51cca890f94ce2a40af40d5e6dc8f672f7e5e8eac9ed630190707182022-08-14 13:15:0747 days 9 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x9cde04732b063f3303b58fdf1b68ed1baab6c90a9c24bc2f6de6ccdd8dee377c190705412022-08-14 13:12:1547 days 9 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x4a7533c911270a670377d8e30b93495d14f42605368c239fa1142e1040e38bd4190696072022-08-14 12:55:5747 days 9 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x7faa33770b43e016a75eda04f79227a8497ad605de0ee12eec223d2b63fc6e66190694282022-08-14 12:53:1947 days 9 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x83cccf47052ab31793b33a8ebfe81e3306c9960ee16e8d4cba830d87b0df8e8e190683512022-08-14 12:38:3347 days 10 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0xa8150c930c5b2b37077d223f4f6d1b2d6f9541f0270e86876ee7158f11c1de3a189897372022-08-13 17:40:4748 days 4 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x1bf84337ad5da5eb1840a137b5de31eff3d42ccf5bbf74b514d660c6aea25945189523792022-08-13 8:41:3648 days 13 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
0x23859e9666f771dc7ed2f6a4729191b40b5b6f2002840b0a26e7a0adcbc196e9189482762022-08-13 7:45:0148 days 14 hrs ago 0x00d59bc35174c3b250dd92a363495d38c8777a49 Velodrome Finance: VELO Token0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerkleClaim

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at Optimistic.Etherscan.io on 2022-06-01
*/

// File: openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol


// OpenZeppelin Contracts (last updated v4.6.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 *
 * WARNING: You should avoid using leaf values that are 64 bytes long prior to
 * hashing, or use a hash function other than keccak256 for hashing leaves.
 * This is because the concatenation of a sorted pair of internal nodes in
 * the merkle tree could be reinterpreted as a leaf value.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

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

    /**
     * @dev Returns true if a `leafs` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, `proofs` for each leaf must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Then
     * 'proofFlag' designates the nodes needed for the multi proof.
     *
     * _Available since v4.7._
     */
    function multiProofVerify(
        bytes32 root,
        bytes32[] memory leafs,
        bytes32[] memory proofs,
        bool[] memory proofFlag
    ) internal pure returns (bool) {
        return processMultiProof(leafs, proofs, proofFlag) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using the multi proof as `proofFlag`. A multi proof is
     * valid if the final hash matches the root of the tree.
     *
     * _Available since v4.7._
     */
    function processMultiProof(
        bytes32[] memory leafs,
        bytes32[] memory proofs,
        bool[] memory proofFlag
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leafs` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the merkle tree.
        uint256 leafsLen = leafs.length;
        uint256 proofsLen = proofs.length;
        uint256 totalHashes = proofFlag.length;

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

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

        return hashes[totalHashes - 1];
    }

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

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

// File: contracts/interfaces/IVelo.sol

pragma solidity 0.8.13;

interface IVelo {
    function totalSupply() external view returns (uint);
    function balanceOf(address) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address, uint) external returns (bool);
    function transferFrom(address,address,uint) external returns (bool);
    function mint(address, uint) external returns (bool);
    function minter() external returns (address);
    function claim(address, uint) external returns (bool);
}

// File: contracts/redeem/MerkleClaim.sol


pragma solidity 0.8.13;

/// ============ Imports ============



/// @title MerkleClaim
/// @notice Claims VELO for members of a merkle tree
/// @author Modified from Merkle Airdrop Starter (https://github.com/Anish-Agnihotri/merkle-airdrop-starter/blob/master/contracts/src/MerkleClaimERC20.sol)
contract MerkleClaim {
    /// ============ Immutable storage ============

    /// @notice VELO token to claim
    IVelo public immutable VELO;
    /// @notice ERC20-claimee inclusion root
    bytes32 public immutable merkleRoot;

    /// ============ Mutable storage ============

    /// @notice Mapping of addresses who have claimed tokens
    mapping(address => bool) public hasClaimed;

    /// ============ Constructor ============

    /// @notice Creates a new MerkleClaim contract
    /// @param _velo address
    /// @param _merkleRoot of claimees
    constructor(address _velo, bytes32 _merkleRoot) {
        VELO = IVelo(_velo);
        merkleRoot = _merkleRoot;
    }

    /// ============ Events ============

    /// @notice Emitted after a successful token claim
    /// @param to recipient of claim
    /// @param amount of tokens claimed
    event Claim(address indexed to, uint256 amount);

    /// ============ Functions ============

    /// @notice Allows claiming tokens if address is part of merkle tree
    /// @param to address of claimee
    /// @param amount of tokens owed to claimee
    /// @param proof merkle proof to prove address and amount are in tree
    function claim(
        address to,
        uint256 amount,
        bytes32[] calldata proof
    ) external {
        // Throw if address has already claimed tokens
        require(!hasClaimed[to], "ALREADY_CLAIMED");

        // Verify merkle proof, or revert if not in tree
        bytes32 leaf = keccak256(abi.encodePacked(to, amount));
        bool isValidLeaf = MerkleProof.verify(proof, merkleRoot, leaf);
        require(isValidLeaf, "NOT_IN_MERKLE");

        // Set address to claimed
        hasClaimed[to] = true;

        // Claim tokens for address
        require(VELO.claim(to, amount), "CLAIM_FAILED");

        // Emit claim event
        emit Claim(to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_velo","type":"address"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"inputs":[],"name":"VELO","outputs":[{"internalType":"contract IVelo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b5060405161062638038061062683398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a0516105766100b060003960008181605601526101ea01526000818160d8015261029601526105766000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632eb4a7ab146100515780633d13f8741461008b57806373b2e80e146100a0578063a0eeb39a146100d3575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61009e61009936600461043c565b610112565b005b6100c36100ae3660046104c6565b60006020819052908152604090205460ff1681565b6040519015158152602001610082565b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610082565b6001600160a01b03841660009081526020819052604090205460ff16156101725760405162461bcd60e51b815260206004820152600f60248201526e1053149150511657d0d31052535151608a1b60448201526064015b60405180910390fd5b6040516bffffffffffffffffffffffff19606086901b1660208201526034810184905260009060540160405160208183030381529060405280519060200120905060006102158484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f0000000000000000000000000000000000000000000000000000000000000000925086915061038b9050565b9050806102545760405162461bcd60e51b815260206004820152600d60248201526c4e4f545f494e5f4d45524b4c4560981b6044820152606401610169565b6001600160a01b0386811660008181526020819052604090819020805460ff1916600117905551635569f64b60e11b81526004810191909152602481018790527f00000000000000000000000000000000000000000000000000000000000000009091169063aad3ec96906044016020604051808303816000875af11580156102e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030591906104e1565b6103405760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d1905253115160a21b6044820152606401610169565b856001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d48660405161037b91815260200190565b60405180910390a2505050505050565b60008261039885846103a1565b14949350505050565b600081815b84518110156103e6576103d2828683815181106103c5576103c5610503565b60200260200101516103ee565b9150806103de81610519565b9150506103a6565b509392505050565b600081831061040a576000828152602084905260409020610419565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461043757600080fd5b919050565b6000806000806060858703121561045257600080fd5b61045b85610420565b935060208501359250604085013567ffffffffffffffff8082111561047f57600080fd5b818701915087601f83011261049357600080fd5b8135818111156104a257600080fd5b8860208260051b85010111156104b757600080fd5b95989497505060200194505050565b6000602082840312156104d857600080fd5b61041982610420565b6000602082840312156104f357600080fd5b8151801515811461041957600080fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161053957634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220f98239575aa7661ddb2892c616a589fd477d712fc6b1ee114ffb4bd17368934764736f6c634300080d00330000000000000000000000003c8b650257cfb5f272f799f5e2b4e65093a11a05bb99a09fb3b8499385659e82a8da93596dd07082fe86981ec06c83181dee489f

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

0000000000000000000000003c8b650257cfb5f272f799f5e2b4e65093a11a05bb99a09fb3b8499385659e82a8da93596dd07082fe86981ec06c83181dee489f

-----Decoded View---------------
Arg [0] : _velo (address): 0x3c8b650257cfb5f272f799f5e2b4e65093a11a05
Arg [1] : _merkleRoot (bytes32): 0xbb99a09fb3b8499385659e82a8da93596dd07082fe86981ec06c83181dee489f

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c8b650257cfb5f272f799f5e2b4e65093a11a05
Arg [1] : bb99a09fb3b8499385659e82a8da93596dd07082fe86981ec06c83181dee489f


Deployed ByteCode Sourcemap

6343:1937:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6543:35;;;;;;;;160:25:1;;;148:2;133:18;6543:35:0;;;;;;;;7571:706;;;;;;:::i;:::-;;:::i;:::-;;6702:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1492:14:1;;1485:22;1467:41;;1455:2;1440:18;6702:42:0;1327:187:1;6463:27:0;;;;;;;;-1:-1:-1;;;;;1696:32:1;;;1678:51;;1666:2;1651:18;6463:27:0;1519:216:1;7571:706:0;-1:-1:-1;;;;;7759:14:0;;:10;:14;;;;;;;;;;;;;7758:15;7750:43;;;;-1:-1:-1;;;7750:43:0;;1942:2:1;7750:43:0;;;1924:21:1;1981:2;1961:18;;;1954:30;-1:-1:-1;;;2000:18:1;;;1993:45;2055:18;;7750:43:0;;;;;;;;;7889:28;;-1:-1:-1;;2261:2:1;2257:15;;;2253:53;7889:28:0;;;2241:66:1;2323:12;;;2316:28;;;7864:12:0;;2360::1;;7889:28:0;;;;;;;;;;;;7879:39;;;;;;7864:54;;7929:16;7948:43;7967:5;;7948:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7974:10:0;;-1:-1:-1;7986:4:0;;-1:-1:-1;7948:18:0;;-1:-1:-1;7948:43:0:i;:::-;7929:62;;8010:11;8002:37;;;;-1:-1:-1;;;8002:37:0;;2585:2:1;8002:37:0;;;2567:21:1;2624:2;2604:18;;;2597:30;-1:-1:-1;;;2643:18:1;;;2636:43;2696:18;;8002:37:0;2383:337:1;8002:37:0;-1:-1:-1;;;;;8087:14:0;;;:10;:14;;;;;;;;;;;;:21;;-1:-1:-1;;8087:21:0;8104:4;8087:21;;;8166:22;-1:-1:-1;;;8166:22:0;;;;;2899:51:1;;;;2966:18;;;2959:34;;;8166:4:0;:10;;;;;;2872:18:1;;8166:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8158:47;;;;-1:-1:-1;;;8158:47:0;;3488:2:1;8158:47:0;;;3470:21:1;3527:2;3507:18;;;3500:30;-1:-1:-1;;;3546:18:1;;;3539:42;3598:18;;8158:47:0;3286:336:1;8158:47:0;8258:2;-1:-1:-1;;;;;8252:17:0;;8262:6;8252:17;;;;160:25:1;;148:2;133:18;;14:177;8252:17:0;;;;;;;;7683:594;;7571:706;;;;:::o;1229:190::-;1354:4;1407;1378:25;1391:5;1398:4;1378:12;:25::i;:::-;:33;;1229:190;-1:-1:-1;;;;1229:190:0:o;1780:296::-;1863:7;1906:4;1863:7;1921:118;1945:5;:12;1941:1;:16;1921:118;;;1994:33;2004:12;2018:5;2024:1;2018:8;;;;;;;;:::i;:::-;;;;;;;1994:9;:33::i;:::-;1979:48;-1:-1:-1;1959:3:0;;;;:::i;:::-;;;;1921:118;;;-1:-1:-1;2056:12:0;1780:296;-1:-1:-1;;;1780:296:0:o;4959:149::-;5022:7;5053:1;5049;:5;:51;;5184:13;5278:15;;;5314:4;5307:15;;;5361:4;5345:21;;5049:51;;;5184:13;5278:15;;;5314:4;5307:15;;;5361:4;5345:21;;5057:20;5042:58;4959:149;-1:-1:-1;;;4959:149:0:o;196:173:1:-;264:20;;-1:-1:-1;;;;;313:31:1;;303:42;;293:70;;359:1;356;349:12;293:70;196:173;;;:::o;374:757::-;478:6;486;494;502;555:2;543:9;534:7;530:23;526:32;523:52;;;571:1;568;561:12;523:52;594:29;613:9;594:29;:::i;:::-;584:39;;670:2;659:9;655:18;642:32;632:42;;725:2;714:9;710:18;697:32;748:18;789:2;781:6;778:14;775:34;;;805:1;802;795:12;775:34;843:6;832:9;828:22;818:32;;888:7;881:4;877:2;873:13;869:27;859:55;;910:1;907;900:12;859:55;950:2;937:16;976:2;968:6;965:14;962:34;;;992:1;989;982:12;962:34;1045:7;1040:2;1030:6;1027:1;1023:14;1019:2;1015:23;1011:32;1008:45;1005:65;;;1066:1;1063;1056:12;1005:65;374:757;;;;-1:-1:-1;;1097:2:1;1089:11;;-1:-1:-1;;;374:757:1:o;1136:186::-;1195:6;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;3004:277::-;3071:6;3124:2;3112:9;3103:7;3099:23;3095:32;3092:52;;;3140:1;3137;3130:12;3092:52;3172:9;3166:16;3225:5;3218:13;3211:21;3204:5;3201:32;3191:60;;3247:1;3244;3237:12;3809:127;3870:10;3865:3;3861:20;3858:1;3851:31;3901:4;3898:1;3891:15;3925:4;3922:1;3915:15;3941:232;3980:3;4001:17;;;3998:140;;4060:10;4055:3;4051:20;4048:1;4041:31;4095:4;4092:1;4085:15;4123:4;4120:1;4113:15;3998:140;-1:-1:-1;4165:1:1;4154:13;;3941:232::o

Swarm Source

ipfs://f98239575aa7661ddb2892c616a589fd477d712fc6b1ee114ffb4bd173689347
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.