Source Code
Latest 25 from a total of 18,887 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 14666808 | 1340 days ago | IN | 0 ETH | 0.00269278 | ||||
| Claim | 14347195 | 1390 days ago | IN | 0 ETH | 0.00127925 | ||||
| Claim | 14279859 | 1400 days ago | IN | 0 ETH | 0.00060464 | ||||
| Transfer Remaini... | 14057220 | 1435 days ago | IN | 0 ETH | 0.01252789 | ||||
| Claim | 14045396 | 1437 days ago | IN | 0 ETH | 0.01673589 | ||||
| Claim | 14044709 | 1437 days ago | IN | 0 ETH | 0.01446602 | ||||
| Claim | 14036643 | 1438 days ago | IN | 0 ETH | 0.00644 | ||||
| Claim | 14035467 | 1438 days ago | IN | 0 ETH | 0.00456486 | ||||
| Claim | 14028370 | 1439 days ago | IN | 0 ETH | 0.00529664 | ||||
| Claim | 14023378 | 1440 days ago | IN | 0 ETH | 0.00629966 | ||||
| Claim | 14022781 | 1440 days ago | IN | 0 ETH | 0.00579493 | ||||
| Claim | 14015473 | 1441 days ago | IN | 0 ETH | 0.00883279 | ||||
| Claim | 14013321 | 1442 days ago | IN | 0 ETH | 0.00631083 | ||||
| Claim | 14005044 | 1443 days ago | IN | 0 ETH | 0.01171909 | ||||
| Claim | 13998962 | 1444 days ago | IN | 0 ETH | 0.01091334 | ||||
| Claim | 13985360 | 1446 days ago | IN | 0 ETH | 0.01476521 | ||||
| Claim | 13980416 | 1447 days ago | IN | 0 ETH | 0.01363851 | ||||
| Claim | 13970005 | 1448 days ago | IN | 0 ETH | 0.01027262 | ||||
| Claim | 13952750 | 1451 days ago | IN | 0 ETH | 0.01423607 | ||||
| Claim | 13950878 | 1451 days ago | IN | 0 ETH | 0.00668284 | ||||
| Claim | 13950843 | 1451 days ago | IN | 0 ETH | 0.00634694 | ||||
| Claim | 13945280 | 1452 days ago | IN | 0 ETH | 0.00668518 | ||||
| Claim | 13940905 | 1453 days ago | IN | 0 ETH | 0.01069957 | ||||
| Claim | 13938215 | 1453 days ago | IN | 0 ETH | 0.00481277 | ||||
| Claim | 13928693 | 1455 days ago | IN | 0 ETH | 0.00627333 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14057220 | 1435 days ago | 0 ETH |
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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 | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.