ETH Price: $3,316.53 (+1.38%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim214528682024-12-21 19:07:3540 days ago1734808055IN
0xD8470a6d...65bF3670E
0 ETH0.001129898.7332953
Claim210544662024-10-27 4:06:4796 days ago1730002007IN
0xD8470a6d...65bF3670E
0 ETH0.001112244.47458852
Claim208945182024-10-04 20:21:23118 days ago1728073283IN
0xD8470a6d...65bF3670E
0 ETH0.000717916.39201489
Claim208945082024-10-04 20:19:23118 days ago1728073163IN
0xD8470a6d...65bF3670E
0 ETH0.000786676.08070531
Claim204881162024-08-09 2:40:47175 days ago1723171247IN
0xD8470a6d...65bF3670E
0 ETH0.000537182.16013697
Claim204440682024-08-02 23:14:47181 days ago1722640487IN
0xD8470a6d...65bF3670E
0 ETH0.000377092.91541123
Claim203726812024-07-24 0:01:11191 days ago1721779271IN
0xD8470a6d...65bF3670E
0 ETH0.000430822.94085337
Claim203527222024-07-21 5:08:47194 days ago1721538527IN
0xD8470a6d...65bF3670E
0 ETH0.000659942.65381578
Claim201091682024-06-17 4:37:11228 days ago1718599031IN
0xD8470a6d...65bF3670E
0 ETH0.000728112.73999658
Claim198215242024-05-07 23:39:59268 days ago1715125199IN
0xD8470a6d...65bF3670E
0 ETH0.000598044.62545795
Claim193151082024-02-26 23:47:47339 days ago1708991267IN
0xD8470a6d...65bF3670E
0 ETH0.0048394237.88492453
Claim191892392024-02-09 7:59:11357 days ago1707465551IN
0xD8470a6d...65bF3670E
0 ETH0.0065120244.45005174
Claim190353432024-01-18 17:49:59379 days ago1705600199IN
0xD8470a6d...65bF3670E
0 ETH0.0017612954.43474268
Claim188662312023-12-26 0:14:59402 days ago1703549699IN
0xD8470a6d...65bF3670E
0 ETH0.0017954816
Claim188662122023-12-26 0:11:11402 days ago1703549471IN
0xD8470a6d...65bF3670E
0 ETH0.0017958416
Claim188661802023-12-26 0:04:47402 days ago1703549087IN
0xD8470a6d...65bF3670E
0 ETH0.0016828815
Claim188661562023-12-25 23:59:59402 days ago1703548799IN
0xD8470a6d...65bF3670E
0 ETH0.0014595313
Claim188661442023-12-25 23:57:35402 days ago1703548655IN
0xD8470a6d...65bF3670E
0 ETH0.0018114314
Claim188661232023-12-25 23:53:23402 days ago1703548403IN
0xD8470a6d...65bF3670E
0 ETH0.0016831815
Claim188661052023-12-25 23:49:23402 days ago1703548163IN
0xD8470a6d...65bF3670E
0 ETH0.0019406115
Claim188067352023-12-17 15:48:23411 days ago1702828103IN
0xD8470a6d...65bF3670E
0 ETH0.0061885642.26006053
Claim185173862023-11-07 3:25:47451 days ago1699327547IN
0xD8470a6d...65bF3670E
0 ETH0.0026510820.49701694
Claim178271192023-08-02 11:49:23548 days ago1690976963IN
0xD8470a6d...65bF3670E
0 ETH0.0047123717.73721624
Claim177240272023-07-19 1:39:11562 days ago1689730751IN
0xD8470a6d...65bF3670E
0 ETH0.004608518.53655754
Claim176751812023-07-12 4:42:35569 days ago1689136955IN
0xD8470a6d...65bF3670E
0 ETH0.0015972412.34957098
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:
MerkleWalletClaimer

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

// Take ownership of a wallet if a claim for it exists in a merkle root.
interface IMerkleWalletClaimer {
    // Returns the address of the wallet factory.
    function factory() external view returns (address);
    // Returns the merkle root of the merkle tree containing wallets 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 wallet. Reverts if the inputs are invalid. Deploys the wallet if necessary using the initial signing key.
    function claim(uint256 index, address wallet, address initialSigningKey, bytes calldata claimantSignature, bytes32[] calldata merkleProof) external;
    // Claim the wallet on behalf of a specified owner.
    function claimFor(address owner, uint256 index, address wallet, address initialSigningKey, bytes calldata claimantSignature, bytes32[] calldata merkleProof) external;
    // This event is triggered whenever a call to #claim succeeds.
    event Claimed(uint256 index, address wallet, address owner);
}

/**
 * @dev Partial interface of the wallet factory.
 */
interface WalletFactory {
    /**
     * @dev Deploys a new wallet.
     */
    function newSmartWallet(
        address userSigningKey
    ) external returns (address wallet);
}

/**
 * @dev Partial interface of the wallet.
 */
interface Wallet {
    /**
     * @dev Sets ownership on the wallet.
     */
    function claimOwnership(address owner) external;
}

/**
 * @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 = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }

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

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

library ECDSA {
  function recover(
    bytes32 hash, bytes memory signature
  ) internal pure returns (address) {
    if (signature.length != 65) {
      return (address(0));
    }

    bytes32 r;
    bytes32 s;
    uint8 v;

    assembly {
      r := mload(add(signature, 0x20))
      s := mload(add(signature, 0x40))
      v := byte(0, mload(add(signature, 0x60)))
    }

    if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
      return address(0);
    }

    if (v != 27 && v != 28) {
      return address(0);
    }

    return ecrecover(hash, v, r, s);
  }

  function toEthSignedMessageHash(address subject) internal pure returns (bytes32) {
    return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n20", subject));
  }
}

/// @author 0age
contract MerkleWalletClaimer is IMerkleWalletClaimer {
    using ECDSA for address;
    using ECDSA for bytes32;
    address public immutable override factory;
    bytes32 public immutable override merkleRoot;

    mapping (address => address[]) public claimedWalletsByOwner;

    // This is a packed array of booleans.
    mapping(uint256 => uint256) private claimedBitMap;

    constructor(address factory_, bytes32 merkleRoot_) {
        factory = factory_;
        merkleRoot = merkleRoot_;
    }

    function claim(
        uint256 index,
        address wallet,
        address initialSigningKey,
        bytes calldata claimantSignature,
        bytes32[] calldata merkleProof
    ) external override {
        _claim(msg.sender, index, wallet, initialSigningKey, claimantSignature, merkleProof);
    }

    function claimFor(
        address owner,
        uint256 index,
        address wallet,
        address initialSigningKey,
        bytes calldata claimantSignature,
        bytes32[] calldata merkleProof
    ) external override {
        _claim(owner, index, wallet, initialSigningKey, claimantSignature, merkleProof);
    }

    function isClaimed(uint256 index) public view override returns (bool) {
        uint256 claimedWordIndex = index >> 8;
        uint256 claimedBitIndex = index & 0xff;
        uint256 claimedWord = claimedBitMap[claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWord & mask != 0;
    }

    function _setClaimed(uint256 index) private {
        uint256 claimedWordIndex = index >> 8;
        uint256 claimedBitIndex = index & 0xff;
        claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex);
    }

    function _deployIfNecessary(address wallet, address initialSigningKey) private {
        // Deploy the wallet if necessary.
        uint256 walletCode;
        assembly { walletCode := extcodesize(wallet) }
        if (walletCode == 0) {
            WalletFactory(factory).newSmartWallet(initialSigningKey);

            assembly { walletCode := extcodesize(wallet) }
            require(
                walletCode != 0,
                'MerkleWalletClaimer: Invalid initial signing key supplied.'
            );
        }
    }

    function _claim(
        address owner,
        uint256 index,
        address wallet,
        address initialSigningKey,
        bytes calldata claimantSignature,
        bytes32[] calldata merkleProof
    ) private {
        require(!isClaimed(index), 'MerkleWalletClaimer: Wallet already claimed.');

        // Claimant signs an EIP-191 v0x45 message consisting of the designated owner.
        bytes32 messageHash = owner.toEthSignedMessageHash();

        // Recover the claimant from the signature and cast the type.
        uint256 claimantKey = uint256(uint160(messageHash.recover(claimantSignature)));

        // Verify the merkle proof.
        bytes32 node = keccak256(abi.encodePacked(index, wallet, claimantKey));
        require(
            MerkleProof.verify(merkleProof, merkleRoot, node),
            'MerkleWalletClaimer: Invalid proof.'
        );

        // Mark the wallet as claimed.
        _setClaimed(index);

        // Deploy the wallet if necessary.
        _deployIfNecessary(wallet, initialSigningKey);

        // Set the caller as the owner on the wallet.
        Wallet(wallet).claimOwnership(owner);

        // Track wallet as having been claimed by the owner and emit an event.
        claimedWalletsByOwner[owner].push(wallet);
        emit Claimed(index, wallet, owner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"factory_","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":"wallet","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Claimed","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"initialSigningKey","type":"address"},{"internalType":"bytes","name":"claimantSignature","type":"bytes"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"initialSigningKey","type":"address"},{"internalType":"bytes","name":"claimantSignature","type":"bytes"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claimFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedWalletsByOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"}]

60c060405234801561001057600080fd5b50604051610b15380380610b1583398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a051610a646100b1600039600081816081015261038901526000818161013a01526106a70152610a646000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806318a11e11146100675780632eb4a7ab1461007c57806399b736f3146100b65780639e34070f146100e1578063a306e8fb14610122578063c45a015514610135575b600080fd5b61007a610075366004610836565b61015c565b005b6100a37f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100c96100c43660046108d5565b610175565b6040516001600160a01b0390911681526020016100ad565b6101126100ef366004610901565b600881901c60009081526001602081905260409091205460ff9092161b16151590565b60405190151581526020016100ad565b61007a61013036600461091a565b6101ad565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b61016c33888888888888886101c7565b50505050505050565b6000602052816000526040600020818154811061019157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6101bd88888888888888886101c7565b5050505050505050565b6101ee87600881901c60009081526001602081905260409091205460ff9092161b16151590565b156102555760405162461bcd60e51b815260206004820152602c60248201527f4d65726b6c6557616c6c6574436c61696d65723a2057616c6c657420616c726560448201526b30b23c9031b630b4b6b2b21760a11b60648201526084015b60405180910390fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a32300000000060208083019190915260608b901b6bffffffffffffffffffffffff1916603c830152825160308184030181526050909201909252805191012060006102f786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061051f9050565b6001600160a01b03169050600089898360405160200161033c9392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b6040516020818303038152906040528051906020012090506103b48585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f0000000000000000000000000000000000000000000000000000000000000000925085915061060a9050565b61040c5760405162461bcd60e51b815260206004820152602360248201527f4d65726b6c6557616c6c6574436c61696d65723a20496e76616c69642070726f60448201526237b31760e91b606482015260840161024c565b60088a901c6000908152600160208190526040909120805460ff8d169290921b909117905561043b8989610681565b604051636d4969d760e11b81526001600160a01b038c811660048301528a169063da92d3ae90602401600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050506001600160a01b038b811660008181526020818152604080832080546001810182559084529282902090920180546001600160a01b031916948e16948517905581518e8152908101939093528201527f3c75fca1decf7e281012586b8fab4c62d1e876fc95d6d0335723cd6ea5bba73a9060600160405180910390a15050505050505050505050565b6000815160411461053257506000610604565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156105785760009350505050610604565b8060ff16601b1415801561059057508060ff16601c14155b156105a15760009350505050610604565b60408051600081526020810180835288905260ff831691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156105f4573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081815b855181101561067657600086828151811061062c5761062c6109cb565b602002602001015190508083116106525760008381526020829052604090209250610663565b600081815260208490526040902092505b508061066e816109e1565b91505061060f565b509092149392505050565b813b8061078b5760405163285e7bfd60e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063285e7bfd906024016020604051808303816000875af11580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190610a0a565b5050813b8061078b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c6557616c6c6574436c61696d65723a20496e76616c696420696e6960448201527f7469616c207369676e696e67206b657920737570706c6965642e000000000000606482015260840161024c565b505050565b6001600160a01b03811681146107a557600080fd5b50565b60008083601f8401126107ba57600080fd5b50813567ffffffffffffffff8111156107d257600080fd5b6020830191508360208285010111156107ea57600080fd5b9250929050565b60008083601f84011261080357600080fd5b50813567ffffffffffffffff81111561081b57600080fd5b6020830191508360208260051b85010111156107ea57600080fd5b600080600080600080600060a0888a03121561085157600080fd5b87359650602088013561086381610790565b9550604088013561087381610790565b9450606088013567ffffffffffffffff8082111561089057600080fd5b61089c8b838c016107a8565b909650945060808a01359150808211156108b557600080fd5b506108c28a828b016107f1565b989b979a50959850939692959293505050565b600080604083850312156108e857600080fd5b82356108f381610790565b946020939093013593505050565b60006020828403121561091357600080fd5b5035919050565b60008060008060008060008060c0898b03121561093657600080fd5b883561094181610790565b975060208901359650604089013561095881610790565b9550606089013561096881610790565b9450608089013567ffffffffffffffff8082111561098557600080fd5b6109918c838d016107a8565b909650945060a08b01359150808211156109aa57600080fd5b506109b78b828c016107f1565b999c989b5096995094979396929594505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610a0357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610a1c57600080fd5b8151610a2781610790565b939250505056fea26469706673582212207b6b21a973dcc79ad30cdefe2a1c0c7e141968069db4ff5889dcaaf3a568eece64736f6c634300080b0033000000000000000000000000fc00c80b0000007f73004edb00094cad80626d8d58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f92

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c806318a11e11146100675780632eb4a7ab1461007c57806399b736f3146100b65780639e34070f146100e1578063a306e8fb14610122578063c45a015514610135575b600080fd5b61007a610075366004610836565b61015c565b005b6100a37f58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f9281565b6040519081526020015b60405180910390f35b6100c96100c43660046108d5565b610175565b6040516001600160a01b0390911681526020016100ad565b6101126100ef366004610901565b600881901c60009081526001602081905260409091205460ff9092161b16151590565b60405190151581526020016100ad565b61007a61013036600461091a565b6101ad565b6100c97f000000000000000000000000fc00c80b0000007f73004edb00094cad80626d8d81565b61016c33888888888888886101c7565b50505050505050565b6000602052816000526040600020818154811061019157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6101bd88888888888888886101c7565b5050505050505050565b6101ee87600881901c60009081526001602081905260409091205460ff9092161b16151590565b156102555760405162461bcd60e51b815260206004820152602c60248201527f4d65726b6c6557616c6c6574436c61696d65723a2057616c6c657420616c726560448201526b30b23c9031b630b4b6b2b21760a11b60648201526084015b60405180910390fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a32300000000060208083019190915260608b901b6bffffffffffffffffffffffff1916603c830152825160308184030181526050909201909252805191012060006102f786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061051f9050565b6001600160a01b03169050600089898360405160200161033c9392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b6040516020818303038152906040528051906020012090506103b48585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f92925085915061060a9050565b61040c5760405162461bcd60e51b815260206004820152602360248201527f4d65726b6c6557616c6c6574436c61696d65723a20496e76616c69642070726f60448201526237b31760e91b606482015260840161024c565b60088a901c6000908152600160208190526040909120805460ff8d169290921b909117905561043b8989610681565b604051636d4969d760e11b81526001600160a01b038c811660048301528a169063da92d3ae90602401600060405180830381600087803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050506001600160a01b038b811660008181526020818152604080832080546001810182559084529282902090920180546001600160a01b031916948e16948517905581518e8152908101939093528201527f3c75fca1decf7e281012586b8fab4c62d1e876fc95d6d0335723cd6ea5bba73a9060600160405180910390a15050505050505050505050565b6000815160411461053257506000610604565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156105785760009350505050610604565b8060ff16601b1415801561059057508060ff16601c14155b156105a15760009350505050610604565b60408051600081526020810180835288905260ff831691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156105f4573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081815b855181101561067657600086828151811061062c5761062c6109cb565b602002602001015190508083116106525760008381526020829052604090209250610663565b600081815260208490526040902092505b508061066e816109e1565b91505061060f565b509092149392505050565b813b8061078b5760405163285e7bfd60e01b81526001600160a01b0383811660048301527f000000000000000000000000fc00c80b0000007f73004edb00094cad80626d8d169063285e7bfd906024016020604051808303816000875af11580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190610a0a565b5050813b8061078b5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c6557616c6c6574436c61696d65723a20496e76616c696420696e6960448201527f7469616c207369676e696e67206b657920737570706c6965642e000000000000606482015260840161024c565b505050565b6001600160a01b03811681146107a557600080fd5b50565b60008083601f8401126107ba57600080fd5b50813567ffffffffffffffff8111156107d257600080fd5b6020830191508360208285010111156107ea57600080fd5b9250929050565b60008083601f84011261080357600080fd5b50813567ffffffffffffffff81111561081b57600080fd5b6020830191508360208260051b85010111156107ea57600080fd5b600080600080600080600060a0888a03121561085157600080fd5b87359650602088013561086381610790565b9550604088013561087381610790565b9450606088013567ffffffffffffffff8082111561089057600080fd5b61089c8b838c016107a8565b909650945060808a01359150808211156108b557600080fd5b506108c28a828b016107f1565b989b979a50959850939692959293505050565b600080604083850312156108e857600080fd5b82356108f381610790565b946020939093013593505050565b60006020828403121561091357600080fd5b5035919050565b60008060008060008060008060c0898b03121561093657600080fd5b883561094181610790565b975060208901359650604089013561095881610790565b9550606089013561096881610790565b9450608089013567ffffffffffffffff8082111561098557600080fd5b6109918c838d016107a8565b909650945060a08b01359150808211156109aa57600080fd5b506109b78b828c016107f1565b999c989b5096995094979396929594505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610a0357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610a1c57600080fd5b8151610a2781610790565b939250505056fea26469706673582212207b6b21a973dcc79ad30cdefe2a1c0c7e141968069db4ff5889dcaaf3a568eece64736f6c634300080b0033

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

000000000000000000000000fc00c80b0000007f73004edb00094cad80626d8d58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f92

-----Decoded View---------------
Arg [0] : factory_ (address): 0xfc00C80b0000007F73004edB00094caD80626d8D
Arg [1] : merkleRoot_ (bytes32): 0x58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f92

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fc00c80b0000007f73004edb00094cad80626d8d
Arg [1] : 58b21b0752dbf12949ea81305d33df0546ed6a59972a79cd0f0afa36c3f72f92


Deployed Bytecode Sourcemap

3930:3684:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:312;;;;;;:::i;:::-;;:::i;:::-;;4098:44;;;;;;;;2116:25:1;;;2104:2;2089:18;4098:44:0;;;;;;;;4151:59;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2636:32:1;;;2618:51;;2606:2;2591:18;4151:59:0;2472:203:1;5114:328:0;;;;;;:::i;:::-;5231:1;5222:10;;;5178:4;5314:31;;;:13;:31;;;;;;;;;5277:4;5269:12;;;5372:20;5411:18;:23;;;5114:328;;;;3030:14:1;;3023:22;3005:41;;2993:2;2978:18;5114:328:0;2865:187:1;4772:334:0;;;;;;:::i;:::-;;:::i;4050:41::-;;;;;4452:312;4672:84;4679:10;4691:5;4698:6;4706:17;4725;;4744:11;;4672:6;:84::i;:::-;4452:312;;;;;;;:::o;4151:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4151:59:0;;-1:-1:-1;4151:59:0;;-1:-1:-1;4151:59:0:o;4772:334::-;5019:79;5026:5;5033;5040:6;5048:17;5067;;5086:11;;5019:6;:79::i;:::-;4772:334;;;;;;;;:::o;6258:1353::-;6502:16;6512:5;5231:1;5222:10;;;5178:4;5314:31;;;:13;:31;;;;;;;;;5277:4;5269:12;;;5372:20;5411:18;:23;;;5114:328;6502:16;6501:17;6493:74;;;;-1:-1:-1;;;6493:74:0;;4497:2:1;6493:74:0;;;4479:21:1;4536:2;4516:18;;;4509:30;4575:34;4555:18;;;4548:62;-1:-1:-1;;;4626:18:1;;;4619:42;4678:19;;6493:74:0;;;;;;;;;3837:61;;;6098:66:1;3837:61:0;;;;6086:79:1;;;;6203:2;6199:15;;;-1:-1:-1;;6199:15:1;6181:12;;;6174:75;3837:61:0;;;;;;;;;6265:12:1;;;;3837:61:0;;;3827:72;;;;;6804:19;6842:38;6862:17;;6842:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6842:11:0;;:38;-1:-1:-1;;6842:19:0;:38;-1:-1:-1;6842:38:0:i;:::-;-1:-1:-1;;;;;6826:56:0;6804:78;;6932:12;6974:5;6981:6;6989:11;6957:44;;;;;;;;;4893:19:1;;;4950:2;4946:15;;;;-1:-1:-1;;4942:53:1;4937:2;4928:12;;4921:75;5021:2;5012:12;;5005:28;5058:2;5049:12;;4708:359;6957:44:0;;;;;;;;;;;;;6947:55;;;;;;6932:70;;7035:49;7054:11;;7035:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7067:10:0;;-1:-1:-1;7079:4:0;;-1:-1:-1;7035:18:0;;-1:-1:-1;7035:49:0:i;:::-;7013:134;;;;-1:-1:-1;;;7013:134:0;;5274:2:1;7013:134:0;;;5256:21:1;5313:2;5293:18;;;5286:30;5352:34;5332:18;;;5325:62;-1:-1:-1;;;5403:18:1;;;5396:33;5446:19;;7013:134:0;5072:399:1;7013:134:0;5541:1;5532:10;;;5505:24;5636:31;;;5671:1;5636:31;;;;;;;;;;5587:4;5579:12;;5671:20;;;;5636:56;;;5602:90;;7275:45;7294:6;7302:17;7275:18;:45::i;:::-;7388:36;;-1:-1:-1;;;7388:36:0;;-1:-1:-1;;;;;2636:32:1;;;7388:36:0;;;2618:51:1;7388:29:0;;;;;2591:18:1;;7388:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;7517:28:0;;;:21;:28;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7517:41:0;;;;;;;;;7574:29;;5678:25:1;;;5757:18;;;5750:43;;;;5809:18;;5802:43;7574:29:0;;5666:2:1;5651:18;7574:29:0;;;;;;;6482:1129;;;6258:1353;;;;;;;;:::o;3118:608::-;3206:7;3226:9;:16;3246:2;3226:22;3222:64;;-1:-1:-1;3275:1:0;3259:19;;3222:64;3386:4;3371:20;;3365:27;3426:4;3411:20;;3405:27;3474:4;3459:20;;3453:27;3294:9;3445:36;3513:66;3500:79;;3496:119;;;3605:1;3590:17;;;;;;;3496:119;3627:1;:7;;3632:2;3627:7;;:18;;;;;3638:1;:7;;3643:2;3638:7;;3627:18;3623:58;;;3671:1;3656:17;;;;;;;3623:58;3696:24;;;;;;;;;;;;6515:25:1;;;6588:4;6576:17;;6556:18;;;6549:45;;;;6610:18;;;6603:34;;;6653:18;;;6646:34;;;3696:24:0;;6487:19:1;;3696:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3689:31;;;;;3118:608;;;;;:::o;2090:770::-;2181:4;2221;2181;2238:499;2262:5;:12;2258:1;:16;2238:499;;;2296:20;2319:5;2325:1;2319:8;;;;;;;;:::i;:::-;;;;;;;2296:31;;2364:12;2348;:28;2344:382;;2936:13;2986:15;;;3022:4;3015:15;;;3069:4;3053:21;;2476:57;;2344:382;;;2936:13;2986:15;;;3022:4;3015:15;;;3069:4;3053:21;;2653:57;;2344:382;-1:-1:-1;2276:3:0;;;;:::i;:::-;;;;2238:499;;;-1:-1:-1;2832:20:0;;;;2090:770;-1:-1:-1;;;2090:770:0:o;5708:542::-;5896:19;;5931:15;5927:316;;5963:56;;-1:-1:-1;;;5963:56:0;;-1:-1:-1;;;;;2636:32:1;;;5963:56:0;;;2618:51:1;5977:7:0;5963:37;;;;2591:18:1;;5963:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6061:19:0;;6122:15;6096:135;;;;-1:-1:-1;;;6096:135:0;;7518:2:1;6096:135:0;;;7500:21:1;7557:2;7537:18;;;7530:30;7596:34;7576:18;;;7569:62;7667:28;7647:18;;;7640:56;7713:19;;6096:135:0;7316:422:1;6096:135:0;5787:463;5708:542;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:347::-;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:1;;349:18;338:30;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:367::-;565:8;575:6;629:3;622:4;614:6;610:17;606:27;596:55;;647:1;644;637:12;596:55;-1:-1:-1;670:20:1;;713:18;702:30;;699:50;;;745:1;742;735:12;699:50;782:4;774:6;770:17;758:29;;842:3;835:4;825:6;822:1;818:14;810:6;806:27;802:38;799:47;796:67;;;859:1;856;849:12;874:1091;1007:6;1015;1023;1031;1039;1047;1055;1108:3;1096:9;1087:7;1083:23;1079:33;1076:53;;;1125:1;1122;1115:12;1076:53;1161:9;1148:23;1138:33;;1221:2;1210:9;1206:18;1193:32;1234:31;1259:5;1234:31;:::i;:::-;1284:5;-1:-1:-1;1341:2:1;1326:18;;1313:32;1354:33;1313:32;1354:33;:::i;:::-;1406:7;-1:-1:-1;1464:2:1;1449:18;;1436:32;1487:18;1517:14;;;1514:34;;;1544:1;1541;1534:12;1514:34;1583:58;1633:7;1624:6;1613:9;1609:22;1583:58;:::i;:::-;1660:8;;-1:-1:-1;1557:84:1;-1:-1:-1;1748:3:1;1733:19;;1720:33;;-1:-1:-1;1765:16:1;;;1762:36;;;1794:1;1791;1784:12;1762:36;;1833:72;1897:7;1886:8;1875:9;1871:24;1833:72;:::i;:::-;874:1091;;;;-1:-1:-1;874:1091:1;;-1:-1:-1;874:1091:1;;;;1807:98;;-1:-1:-1;;;874:1091:1:o;2152:315::-;2220:6;2228;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;:::-;2405:5;2457:2;2442:18;;;;2429:32;;-1:-1:-1;;;2152:315:1:o;2680:180::-;2739:6;2792:2;2780:9;2771:7;2767:23;2763:32;2760:52;;;2808:1;2805;2798:12;2760:52;-1:-1:-1;2831:23:1;;2680:180;-1:-1:-1;2680:180:1:o;3057:1233::-;3199:6;3207;3215;3223;3231;3239;3247;3255;3308:3;3296:9;3287:7;3283:23;3279:33;3276:53;;;3325:1;3322;3315:12;3276:53;3364:9;3351:23;3383:31;3408:5;3383:31;:::i;:::-;3433:5;-1:-1:-1;3485:2:1;3470:18;;3457:32;;-1:-1:-1;3541:2:1;3526:18;;3513:32;3554:33;3513:32;3554:33;:::i;:::-;3606:7;-1:-1:-1;3665:2:1;3650:18;;3637:32;3678:33;3637:32;3678:33;:::i;:::-;3730:7;-1:-1:-1;3788:3:1;3773:19;;3760:33;3812:18;3842:14;;;3839:34;;;3869:1;3866;3859:12;3839:34;3908:58;3958:7;3949:6;3938:9;3934:22;3908:58;:::i;:::-;3985:8;;-1:-1:-1;3882:84:1;-1:-1:-1;4073:3:1;4058:19;;4045:33;;-1:-1:-1;4090:16:1;;;4087:36;;;4119:1;4116;4109:12;4087:36;;4158:72;4222:7;4211:8;4200:9;4196:24;4158:72;:::i;:::-;3057:1233;;;;-1:-1:-1;3057:1233:1;;-1:-1:-1;3057:1233:1;;;;;;4249:8;-1:-1:-1;;;3057:1233:1:o;6691:127::-;6752:10;6747:3;6743:20;6740:1;6733:31;6783:4;6780:1;6773:15;6807:4;6804:1;6797:15;6823:232;6862:3;-1:-1:-1;;6883:17:1;;6880:140;;;6942:10;6937:3;6933:20;6930:1;6923:31;6977:4;6974:1;6967:15;7005:4;7002:1;6995:15;6880:140;-1:-1:-1;7047:1:1;7036:13;;6823:232::o;7060:251::-;7130:6;7183:2;7171:9;7162:7;7158:23;7154:32;7151:52;;;7199:1;7196;7189:12;7151:52;7231:9;7225:16;7250:31;7275:5;7250:31;:::i;:::-;7300:5;7060:251;-1:-1:-1;;;7060:251:1:o

Swarm Source

ipfs://7b6b21a973dcc79ad30cdefe2a1c0c7e141968069db4ff5889dcaaf3a568eece

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.