More Info
Private Name Tags
ContractCreator
Transactions Sent
Latest:
N/A
First:
N/A
Latest 25 from a total of 18,887 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 14666808 | 822 days ago | IN | 0 ETH | 0.00269278 | ||||
Claim | 14347195 | 872 days ago | IN | 0 ETH | 0.00127925 | ||||
Claim | 14279859 | 882 days ago | IN | 0 ETH | 0.00060464 | ||||
Transfer Remaini... | 14057220 | 917 days ago | IN | 0 ETH | 0.01252789 | ||||
Claim | 14045396 | 919 days ago | IN | 0 ETH | 0.01673589 | ||||
Claim | 14044709 | 919 days ago | IN | 0 ETH | 0.01446602 | ||||
Claim | 14036643 | 920 days ago | IN | 0 ETH | 0.00644 | ||||
Claim | 14035467 | 920 days ago | IN | 0 ETH | 0.00456486 | ||||
Claim | 14028370 | 921 days ago | IN | 0 ETH | 0.00529664 | ||||
Claim | 14023378 | 922 days ago | IN | 0 ETH | 0.00629966 | ||||
Claim | 14022781 | 922 days ago | IN | 0 ETH | 0.00579493 | ||||
Claim | 14015473 | 923 days ago | IN | 0 ETH | 0.00883279 | ||||
Claim | 14013321 | 924 days ago | IN | 0 ETH | 0.00631083 | ||||
Claim | 14005044 | 925 days ago | IN | 0 ETH | 0.01171909 | ||||
Claim | 13998962 | 926 days ago | IN | 0 ETH | 0.01091334 | ||||
Claim | 13985360 | 928 days ago | IN | 0 ETH | 0.01476521 | ||||
Claim | 13980416 | 929 days ago | IN | 0 ETH | 0.01363851 | ||||
Claim | 13970005 | 930 days ago | IN | 0 ETH | 0.01027262 | ||||
Claim | 13952750 | 933 days ago | IN | 0 ETH | 0.01423607 | ||||
Claim | 13950878 | 933 days ago | IN | 0 ETH | 0.00668284 | ||||
Claim | 13950843 | 933 days ago | IN | 0 ETH | 0.00634694 | ||||
Claim | 13945280 | 934 days ago | IN | 0 ETH | 0.00668518 | ||||
Claim | 13940905 | 935 days ago | IN | 0 ETH | 0.01069957 | ||||
Claim | 13938215 | 935 days ago | IN | 0 ETH | 0.00481277 | ||||
Claim | 13928693 | 937 days ago | IN | 0 ETH | 0.00627333 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14057220 | 917 days ago | 0 ETH |
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x1c34efedfe10e3475e66f1f6002e137843da4993b698664cf218a1ae425698b1
Contract Name:
MerkleDistributor
Compiler Version
v0.6.11+commit.5ef660b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-22 */ // SPDX-License-Identifier: UNLICENSED // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/cryptography/MerkleProof.sol pragma solidity ^0.6.0; /** * @dev These functions deal with verification of Merkle trees (hash trees), */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } } // File: contracts/distribution/IMerkleDistributor.sol pragma solidity ^0.6.0; // Allows anyone to claim a token if they exist in a merkle root. interface IMerkleDistributor { // Returns the address of the token distributed by this contract. function token() external view returns (address); // Returns the merkle root of the merkle tree containing account balances available to claim. function merkleRoot() external view returns (bytes32); // Returns true if the index has been marked claimed. function isClaimed(uint256 index) external view returns (bool); // Claim the given amount of the token to the given address. Reverts if the inputs are invalid. function claim( uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof ) external; // This event is triggered whenever a call to #claim succeeds. event Claimed(uint256 index, address account, uint256 amount); } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/distribution/MerkleDistributor.sol pragma solidity ^0.6.0; contract MerkleDistributor is IMerkleDistributor, Ownable { uint256 private constant TIMELOCK_DURATION = 365 days; uint256 public timelock; uint256 public creationTime; modifier notLocked() { require(timelock <= block.timestamp, "Function is timelocked"); _; } address public immutable override token; bytes32 public immutable override merkleRoot; // This is a packed array of booleans. mapping(uint256 => uint256) private claimedBitMap; constructor(address token_, bytes32 merkleRoot_) public { token = token_; merkleRoot = merkleRoot_; creationTime = block.timestamp; timelock = creationTime + TIMELOCK_DURATION; } function isClaimed(uint256 index) public view override returns (bool) { uint256 claimedWordIndex = index / 256; uint256 claimedBitIndex = index % 256; uint256 claimedWord = claimedBitMap[claimedWordIndex]; uint256 mask = (1 << claimedBitIndex); return claimedWord & mask == mask; } function _setClaimed(uint256 index) private { uint256 claimedWordIndex = index / 256; uint256 claimedBitIndex = index % 256; claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex); } function claim( uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof ) external override { require(!isClaimed(index), "MerkleDistributor: Drop already claimed."); // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(index, account, amount)); require(MerkleProof.verify(merkleProof, merkleRoot, node), "MerkleDistributor: Invalid proof."); // Mark it claimed and send the token. _setClaimed(index); require(IERC20(token).transfer(account, amount), "MerkleDistributor: Transfer failed."); emit Claimed(index, account, amount); } function remainingClaimTime() public view returns (uint256) { return timelock >= block.timestamp ? timelock - block.timestamp : 0; } function timelockDuration() public view returns (uint256) { return timelock; } function transferRemainingToOwner() public onlyOwner notLocked { uint256 balance = IERC20(token).balanceOf(address(this)); require(IERC20(token).transfer(msg.sender, balance), "MerkleDistributor: Transfer failed."); selfdestruct(msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferRemainingToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b50604051610e0f380380610e0f8339818101604052604081101561003357600080fd5b508051602090910151600061004f6001600160e01b036100c316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060609190911b6001600160601b03191660805260a0524260028190556301e13380016001556100c7565b3390565b60805160601c60a051610d0e6101016000398061034b528061055b5250806103d652806106c8528061078b5280610b505250610d0e6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639e34070f11610081578063df8eb6761161005b578063df8eb67614610218578063f2fde38b14610220578063fc0c546a14610253576100d4565b80639e34070f146101d7578063d33219b414610208578063d8270dce14610210576100d4565b80632eef326a116100b25780632eef326a14610196578063715018a61461019e5780638da5cb5b146101a6576100d4565b80632bbca157146100d95780632e7ba6ef146100f35780632eb4a7ab1461018e575b600080fd5b6100e161025b565b60408051918252519081900360200190f35b61018c6004803603608081101561010957600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516916040820135919081019060808101606082013564010000000081111561014d57600080fd5b82018360208201111561015f57600080fd5b8035906020019184602083028401116401000000008311171561018157600080fd5b509092509050610261565b005b6100e1610559565b61018c61057d565b61018c610858565b6101ae610958565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f4600480360360208110156101ed57600080fd5b5035610974565b604080519115158252519081900360200190f35b6100e161099a565b6100e16109a0565b6100e16109a6565b61018c6004803603602081101561023657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109c4565b6101ae610b4e565b60015490565b61026a85610974565b156102c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610c6d6028913960400191505060405180910390fd5b6040805160208082018890527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1682840152605480830187905283518084039091018152607483018085528151918301919091206094928602808501840190955285825293610376939192879287928392909101908490808284376000920191909152507f00000000000000000000000000000000000000000000000000000000000000009250859150610b729050565b6103cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610c956021913960400191505060405180910390fd5b6103d486610c1b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561047b57600080fd5b505af115801561048f573d6000803e3d6000fd5b505050506040513d60208110156104a557600080fd5b50516104fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610cb66023913960400191505060405180910390fd5b6040805187815273ffffffffffffffffffffffffffffffffffffffff8716602082015280820186905290517f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269181900360600190a1505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610585610c42565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461060e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b42600154111561067f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f46756e6374696f6e2069732074696d656c6f636b656400000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b15801561070f57600080fd5b505afa158015610723573d6000803e3d6000fd5b505050506040513d602081101561073957600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101839052905191925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb916044808201926020929091908290030181600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506040513d60208110156107fe57600080fd5b5051610855576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610cb66023913960400191505060405180910390fd5b33ff5b610860610c42565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146108e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6101008104600090815260036020526040902054600160ff9092169190911b9081161490565b60015481565b60025481565b60004260015410156109b95760006109bf565b42600154035b905090565b6109cc610c42565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610a5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610c476026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081815b8551811015610c10576000868281518110610b8e57fe5b60200260200101519050808311610bd55782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610c07565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610b77565b509092149392505050565b610100810460009081526003602052604090208054600160ff9093169290921b9091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65726b6c654469737472696275746f723a2044726f7020616c726561647920636c61696d65642e4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f662e4d65726b6c654469737472696275746f723a205472616e73666572206661696c65642ea264697066735822122000059294077e903d0ce8db9caa147f21b92c3670a9ae2441691a2e969e2434cb64736f6c634300060b00330000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc404275984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb2
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80639e34070f11610081578063df8eb6761161005b578063df8eb67614610218578063f2fde38b14610220578063fc0c546a14610253576100d4565b80639e34070f146101d7578063d33219b414610208578063d8270dce14610210576100d4565b80632eef326a116100b25780632eef326a14610196578063715018a61461019e5780638da5cb5b146101a6576100d4565b80632bbca157146100d95780632e7ba6ef146100f35780632eb4a7ab1461018e575b600080fd5b6100e161025b565b60408051918252519081900360200190f35b61018c6004803603608081101561010957600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516916040820135919081019060808101606082013564010000000081111561014d57600080fd5b82018360208201111561015f57600080fd5b8035906020019184602083028401116401000000008311171561018157600080fd5b509092509050610261565b005b6100e1610559565b61018c61057d565b61018c610858565b6101ae610958565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f4600480360360208110156101ed57600080fd5b5035610974565b604080519115158252519081900360200190f35b6100e161099a565b6100e16109a0565b6100e16109a6565b61018c6004803603602081101561023657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109c4565b6101ae610b4e565b60015490565b61026a85610974565b156102c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610c6d6028913960400191505060405180910390fd5b6040805160208082018890527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1682840152605480830187905283518084039091018152607483018085528151918301919091206094928602808501840190955285825293610376939192879287928392909101908490808284376000920191909152507f75984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb29250859150610b729050565b6103cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610c956021913960400191505060405180910390fd5b6103d486610c1b565b7f0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc404273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561047b57600080fd5b505af115801561048f573d6000803e3d6000fd5b505050506040513d60208110156104a557600080fd5b50516104fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610cb66023913960400191505060405180910390fd5b6040805187815273ffffffffffffffffffffffffffffffffffffffff8716602082015280820186905290517f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269181900360600190a1505050505050565b7f75984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb281565b610585610c42565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461060e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b42600154111561067f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f46756e6374696f6e2069732074696d656c6f636b656400000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc404216916370a0823191602480820192602092909190829003018186803b15801561070f57600080fd5b505afa158015610723573d6000803e3d6000fd5b505050506040513d602081101561073957600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101839052905191925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc4042169163a9059cbb916044808201926020929091908290030181600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506040513d60208110156107fe57600080fd5b5051610855576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610cb66023913960400191505060405180910390fd5b33ff5b610860610c42565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146108e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6101008104600090815260036020526040902054600160ff9092169190911b9081161490565b60015481565b60025481565b60004260015410156109b95760006109bf565b42600154035b905090565b6109cc610c42565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610a5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610c476026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc404281565b600081815b8551811015610c10576000868281518110610b8e57fe5b60200260200101519050808311610bd55782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610c07565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610b77565b509092149392505050565b610100810460009081526003602052604090208054600160ff9093169290921b9091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65726b6c654469737472696275746f723a2044726f7020616c726561647920636c61696d65642e4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f662e4d65726b6c654469737472696275746f723a205472616e73666572206661696c65642ea264697066735822122000059294077e903d0ce8db9caa147f21b92c3670a9ae2441691a2e969e2434cb64736f6c634300060b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc404275984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb2
-----Decoded View---------------
Arg [0] : token_ (address): 0x4C6eC08CF3fc987c6C4BEB03184D335A2dFc4042
Arg [1] : merkleRoot_ (bytes32): 0x75984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb2
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004c6ec08cf3fc987c6c4beb03184d335a2dfc4042
Arg [1] : 75984c7647bf9a87f37a6b1d9c8d23dbcc461bc3f1678945ce95aa9138a8cdb2
Deployed Bytecode Sourcemap
8557:2575:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10750:92;;;:::i;:::-;;;;;;;;;;;;;;;;9895:693;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9895:693:0;;-1:-1:-1;9895:693:0;-1:-1:-1;9895:693:0;:::i;:::-;;8916:44;;;:::i;10850:279::-;;;:::i;7911:148::-;;;:::i;7269:79::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9298:331;;;;;;;;;;;;;;;;-1:-1:-1;9298:331:0;;:::i;:::-;;;;;;;;;;;;;;;;;;8682:23;;;:::i;8712:27::-;;;:::i;10596:146::-;;;:::i;8214:244::-;;;;;;;;;;;;;;;;-1:-1:-1;8214:244:0;;;;:::i;8870:39::-;;;:::i;10750:92::-;10826:8;;10750:92;:::o;9895:693::-;10071:16;10081:5;10071:9;:16::i;:::-;10070:17;10062:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10207:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10197:51;;;;;;;;;10267:49;;;;;;;;;;;;;;;10197:51;10267:49;;10207:40;;10286:11;;;;;;10267:49;;;;10286:11;;10267:49;10286:11;10267:49;;;;;;;;;-1:-1:-1;10299:10:0;;-1:-1:-1;10311:4:0;;-1:-1:-1;10267:18:0;;-1:-1:-1;10267:49:0:i;:::-;10259:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10415:18;10427:5;10415:11;:18::i;:::-;10459:5;10452:22;;;10475:7;10484:6;10452:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10452:39:0;10444:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10549:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9895:693;;;;;;:::o;8916:44::-;;;:::o;10850:279::-;7491:12;:10;:12::i;:::-;7481:6;;:22;:6;;;:22;;;7473:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:15:::1;8788:8;;:27;;8780:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10942:38:::2;::::0;;;;;10974:4:::2;10942:38;::::0;::::2;::::0;;;10924:15:::2;::::0;10942:23:::2;10949:5;10942:23;::::0;::::2;::::0;:38;;;;;::::2;::::0;;;;;;;;;:23;:38;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;10942:38:0;11001:43:::2;::::0;;;;;11024:10:::2;11001:43;::::0;::::2;::::0;;;;;;;;;10942:38;;-1:-1:-1;11001:22:0::2;11008:5;11001:22;::::0;::::2;::::0;:43;;;;;10942:38:::2;::::0;11001:43;;;;;;;;-1:-1:-1;11001:22:0;:43;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;11001:43:0;10993:91:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11110:10;11097:24;7911:148:::0;7491:12;:10;:12::i;:::-;7481:6;;:22;:6;;;:22;;;7473:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8018:1:::1;8002:6:::0;;7981:40:::1;::::0;::::1;8002:6:::0;;::::1;::::0;7981:40:::1;::::0;8018:1;;7981:40:::1;8049:1;8032:19:::0;;;::::1;::::0;;7911:148::o;7269:79::-;7307:7;7334:6;;;7269:79;:::o;9298:331::-;9414:3;9406:11;;9362:4;9498:31;;;:13;:31;;;;;;9556:1;9454:11;;;;9556:20;;;;9595:18;;;:26;;9298:331::o;8682:23::-;;;;:::o;8712:27::-;;;;:::o;10596:146::-;10647:7;10686:15;10674:8;;:27;;:60;;10733:1;10674:60;;;10715:15;10704:8;;:26;10674:60;10667:67;;10596:146;:::o;8214:244::-;7491:12;:10;:12::i;:::-;7481:6;;:22;:6;;;:22;;;7473:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8303:22:::1;::::0;::::1;8295:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8405:6;::::0;;8384:38:::1;::::0;::::1;::::0;;::::1;::::0;8405:6;::::1;::::0;8384:38:::1;::::0;::::1;8433:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;8214:244::o;8870:39::-;;;:::o;3390:796::-;3481:4;3521;3481;3538:525;3562:5;:12;3558:1;:16;3538:525;;;3596:20;3619:5;3625:1;3619:8;;;;;;;;;;;;;;3596:31;;3664:12;3648;:28;3644:408;;3818:12;3832;3801:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:55;;;;;;3776:70;;3644:408;;;4008:12;4022;3991:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3981:55;;;;;;3966:70;;3644:408;-1:-1:-1;3576:3:0;;3538:525;;;-1:-1:-1;4158:20:0;;;;3390:796;-1:-1:-1;;;3390:796:0:o;9637:250::-;9727:3;9719:11;;9692:24;9823:31;;;:13;:31;;;;;;;9858:1;9767:11;;;;9858:20;;;;9823:56;;;9789:90;;9637:250::o;5821:106::-;5909:10;5821:106;:::o
Swarm Source
ipfs://00059294077e903d0ce8db9caa147f21b92c3670a9ae2441691a2e969e2434cb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.