Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Funded By
N/A
Latest 25 from a total of 2,027 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 16440352 | 934 days ago | IN | 0 ETH | 0.000139216879 | ||||
Claim | 15924568 | 936 days ago | IN | 0 ETH | 0.000057832041 | ||||
Claim | 15540565 | 939 days ago | IN | 0 ETH | 0.000275719512 | ||||
Claim | 14422823 | 950 days ago | IN | 0 ETH | 0.000289460631 | ||||
Claim | 14211242 | 953 days ago | IN | 0 ETH | 0.000274077988 | ||||
Claim | 14089301 | 955 days ago | IN | 0 ETH | 0.000209063827 | ||||
Claim | 11754390 | 979 days ago | IN | 0 ETH | 0.000753277857 | ||||
Claim | 11573554 | 980 days ago | IN | 0 ETH | 0.000987273256 | ||||
Claim | 11138187 | 983 days ago | IN | 0 ETH | 0.000517187921 | ||||
Claim | 11084648 | 984 days ago | IN | 0 ETH | 0.000775202301 | ||||
Claim | 11075067 | 984 days ago | IN | 0 ETH | 0.001065622919 | ||||
Claim | 10679753 | 987 days ago | IN | 0 ETH | 0.000577902858 | ||||
Claim | 10570232 | 989 days ago | IN | 0 ETH | 0.000734199142 | ||||
Claim | 10259851 | 991 days ago | IN | 0 ETH | 0.000640318068 | ||||
Claim | 10138383 | 991 days ago | IN | 0 ETH | 0.000742507449 | ||||
Claim | 10060650 | 992 days ago | IN | 0 ETH | 0.00076579329 | ||||
Claim | 9971581 | 992 days ago | IN | 0 ETH | 0.00059102042 | ||||
Claim | 9967569 | 992 days ago | IN | 0 ETH | 0.00043989918 | ||||
Claim | 9543857 | 992 days ago | IN | 0 ETH | 0.001106701426 | ||||
Claim | 9327171 | 994 days ago | IN | 0 ETH | 0.00025833945 | ||||
Claim | 9110669 | 997 days ago | IN | 0 ETH | 0.000347502174 | ||||
Claim | 9094004 | 997 days ago | IN | 0 ETH | 0.000389431504 | ||||
Claim | 8956248 | 999 days ago | IN | 0 ETH | 0.00032714077 | ||||
Claim | 8956098 | 999 days ago | IN | 0 ETH | 0.000315345628 | ||||
Claim | 8954057 | 999 days ago | IN | 0 ETH | 0.000179823356 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17557807 | 928 days ago | 0 ETH |
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xf549ebe1eacb6371b27ed5fef7f04863f0914c481869a93df62047ebb6283dc1
Contract Name:
MerkleDistributor
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.6; import "./interfaces/IMerkleDistributor.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./Owned.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./Pausable.sol"; contract MerkleDistributor is Owned, Pausable, IMerkleDistributor { address public immutable override token; bytes32 public immutable override merkleRoot; uint256 public startTime; // This is a packed array of booleans. mapping(uint256 => uint256) private claimedBitMap; constructor( address owner_, address token_, bytes32 merkleRoot_ ) Owned(owner_) Pausable() { token = token_; merkleRoot = merkleRoot_; startTime = block.timestamp; } 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 _selfDestruct(address payable beneficiary) external onlyOwner { //only callable a year after end time require( block.timestamp > (startTime + 30 days), "Contract can only be selfdestruct after a year" ); IERC20(token).transfer( beneficiary, IERC20(token).balanceOf(address(this)) ); selfdestruct(beneficiary); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.6; // 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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.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); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.6; // https://docs.synthetix.io/contracts/source/contracts/owned contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require( msg.sender == nominatedOwner, "You must be nominated before you can accept ownership" ); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner() { _onlyOwner(); _; } function _onlyOwner() private view { require( msg.sender == owner, "Only the contract owner may perform this action" ); } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ 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; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.6; // Inheritance import "./Owned.sol"; // https://docs.synthetix.io/contracts/source/contracts/pausable abstract contract Pausable is Owned { uint256 public lastPauseTime; bool public paused; constructor() { // This contract is abstract, and thus cannot be instantiated directly require(owner != address(0), "Owner must be set"); // Paused will be false, and lastPauseTime will be 0 upon initialisation } /** * @notice Change the paused state of the contract * @dev Only the contract owner may call this. */ function setPaused(bool _paused) external onlyOwner { // Ensure we're actually changing the state before we do anything if (_paused == paused) { return; } // Set our paused state. paused = _paused; // If applicable, set the last pause time. if (paused) { lastPauseTime = block.timestamp; } // Let everyone know that our pause state has changed. emit PauseChanged(paused); } event PauseChanged(bool isPaused); modifier notPaused() { require( !paused, "This action cannot be performed while the contract is paused" ); _; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"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":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseChanged","type":"event"},{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"_selfDestruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPauseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b50604051610dd7380380610dd783398101604081905261002f9161016b565b826001600160a01b03811661008b5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1506000546001600160a01b031661012f5760405162461bcd60e51b815260206004820152601160248201527013dddb995c881b5d5cdd081899481cd95d607a1b6044820152606401610082565b60609190911b6001600160601b03191660805260a05250426004556101a7565b80516001600160a01b038116811461016657600080fd5b919050565b60008060006060848603121561018057600080fd5b6101898461014f565b92506101976020850161014f565b9150604084015190509250925092565b60805160601c60a051610bf36101e46000396000818161011401526103ca0152600081816101e90152818161047a015261075c0152610bf36000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806378e979251161008c57806391b4ded91161006657806391b4ded9146101b55780639e34070f146101be5780639ea6ec29146101d1578063fc0c546a146101e457600080fd5b806378e979251461019157806379ba50971461019a5780638da5cb5b146101a257600080fd5b80631627540c146100d457806316c38b3c146100e95780632e7ba6ef146100fc5780632eb4a7ab1461010f57806353a47bb7146101495780635c975abb14610174575b600080fd5b6100e76100e23660046109d4565b61020b565b005b6100e76100f73660046109f8565b610268565b6100e761010a366004610a64565b6102de565b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60015461015c906001600160a01b031681565b6040516001600160a01b039091168152602001610140565b6003546101819060ff1681565b6040519015158152602001610140565b61013660045481565b6100e761059f565b60005461015c906001600160a01b031681565b61013660025481565b6101816101cc366004610a32565b610689565b6100e76101df3660046109d4565b6106ca565b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b610213610873565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b610270610873565b60035460ff16151581151514156102845750565b6003805460ff191682151590811790915560ff16156102a257426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec59060200161025d565b50565b6102e785610689565b1561034a5760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201526731b630b4b6b2b21760c11b60648201526084015b60405180910390fd5b60408051602081018790526bffffffffffffffffffffffff19606087901b1691810191909152605481018490526000906074016040516020818303038152906040528051906020012090506103f58383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506108e79050565b61044b5760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666044820152601760f91b6064820152608401610341565b61045486610996565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190610a15565b61054e5760405162461bcd60e51b815260206004820152602360248201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c60448201526232b21760e91b6064820152608401610341565b604080518781526001600160a01b03871660208201529081018590527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060600160405180910390a1505050505050565b6001546001600160a01b031633146106175760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610341565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60008061069861010084610b15565b905060006106a861010085610b44565b60009283526005602052604090922054600190921b9182169091149392505050565b6106d2610873565b6004546106e29062278d00610afd565b42116107475760405162461bcd60e51b815260206004820152602e60248201527f436f6e74726163742063616e206f6e6c792062652073656c666465737472756360448201526d3a1030b33a32b91030903cb2b0b960911b6064820152608401610341565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e89190610a4b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561082e57600080fd5b505af1158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190610a15565b50806001600160a01b0316ff5b6000546001600160a01b031633146108e55760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610341565b565b600081815b855181101561098b57600086828151811061090957610909610b84565b6020026020010151905080831161094b576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610978565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061098381610b29565b9150506108ec565b509092149392505050565b60006109a461010083610b15565b905060006109b461010084610b44565b6000928352600560205260409092208054600190931b9092179091555050565b6000602082840312156109e657600080fd5b81356109f181610b9a565b9392505050565b600060208284031215610a0a57600080fd5b81356109f181610baf565b600060208284031215610a2757600080fd5b81516109f181610baf565b600060208284031215610a4457600080fd5b5035919050565b600060208284031215610a5d57600080fd5b5051919050565b600080600080600060808688031215610a7c57600080fd5b853594506020860135610a8e81610b9a565b935060408601359250606086013567ffffffffffffffff80821115610ab257600080fd5b818801915088601f830112610ac657600080fd5b813581811115610ad557600080fd5b8960208260051b8501011115610aea57600080fd5b9699959850939650602001949392505050565b60008219821115610b1057610b10610b58565b500190565b600082610b2457610b24610b6e565b500490565b6000600019821415610b3d57610b3d610b58565b5060010190565b600082610b5357610b53610b6e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146102db57600080fd5b80151581146102db57600080fdfea2646970667358221220c947b6b1c3c9ab569d541c46e2670938641e8762ef00698492ed4ac6ab2c051f64736f6c634300080600330000000000000000000000005b8f3fb479571eca6a06240b21926db586cdf10f000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806378e979251161008c57806391b4ded91161006657806391b4ded9146101b55780639e34070f146101be5780639ea6ec29146101d1578063fc0c546a146101e457600080fd5b806378e979251461019157806379ba50971461019a5780638da5cb5b146101a257600080fd5b80631627540c146100d457806316c38b3c146100e95780632e7ba6ef146100fc5780632eb4a7ab1461010f57806353a47bb7146101495780635c975abb14610174575b600080fd5b6100e76100e23660046109d4565b61020b565b005b6100e76100f73660046109f8565b610268565b6100e761010a366004610a64565b6102de565b6101367f3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c81565b6040519081526020015b60405180910390f35b60015461015c906001600160a01b031681565b6040516001600160a01b039091168152602001610140565b6003546101819060ff1681565b6040519015158152602001610140565b61013660045481565b6100e761059f565b60005461015c906001600160a01b031681565b61013660025481565b6101816101cc366004610a32565b610689565b6100e76101df3660046109d4565b6106ca565b61015c7f000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a81565b610213610873565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b610270610873565b60035460ff16151581151514156102845750565b6003805460ff191682151590811790915560ff16156102a257426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec59060200161025d565b50565b6102e785610689565b1561034a5760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201526731b630b4b6b2b21760c11b60648201526084015b60405180910390fd5b60408051602081018790526bffffffffffffffffffffffff19606087901b1691810191909152605481018490526000906074016040516020818303038152906040528051906020012090506103f58383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c92508591506108e79050565b61044b5760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666044820152601760f91b6064820152608401610341565b61045486610996565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690527f000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a169063a9059cbb90604401602060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190610a15565b61054e5760405162461bcd60e51b815260206004820152602360248201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c60448201526232b21760e91b6064820152608401610341565b604080518781526001600160a01b03871660208201529081018590527f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060600160405180910390a1505050505050565b6001546001600160a01b031633146106175760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610341565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60008061069861010084610b15565b905060006106a861010085610b44565b60009283526005602052604090922054600190921b9182169091149392505050565b6106d2610873565b6004546106e29062278d00610afd565b42116107475760405162461bcd60e51b815260206004820152602e60248201527f436f6e74726163742063616e206f6e6c792062652073656c666465737472756360448201526d3a1030b33a32b91030903cb2b0b960911b6064820152608401610341565b6040516370a0823160e01b81523060048201527f000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a6001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e89190610a4b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561082e57600080fd5b505af1158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190610a15565b50806001600160a01b0316ff5b6000546001600160a01b031633146108e55760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610341565b565b600081815b855181101561098b57600086828151811061090957610909610b84565b6020026020010151905080831161094b576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610978565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061098381610b29565b9150506108ec565b509092149392505050565b60006109a461010083610b15565b905060006109b461010084610b44565b6000928352600560205260409092208054600190931b9092179091555050565b6000602082840312156109e657600080fd5b81356109f181610b9a565b9392505050565b600060208284031215610a0a57600080fd5b81356109f181610baf565b600060208284031215610a2757600080fd5b81516109f181610baf565b600060208284031215610a4457600080fd5b5035919050565b600060208284031215610a5d57600080fd5b5051919050565b600080600080600060808688031215610a7c57600080fd5b853594506020860135610a8e81610b9a565b935060408601359250606086013567ffffffffffffffff80821115610ab257600080fd5b818801915088601f830112610ac657600080fd5b813581811115610ad557600080fd5b8960208260051b8501011115610aea57600080fd5b9699959850939650602001949392505050565b60008219821115610b1057610b10610b58565b500190565b600082610b2457610b24610b6e565b500490565b6000600019821415610b3d57610b3d610b58565b5060010190565b600082610b5357610b53610b6e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146102db57600080fd5b80151581146102db57600080fdfea2646970667358221220c947b6b1c3c9ab569d541c46e2670938641e8762ef00698492ed4ac6ab2c051f64736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b8f3fb479571eca6a06240b21926db586cdf10f000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c
-----Decoded View---------------
Arg [0] : owner_ (address): 0x5B8F3fb479571Eca6A06240b21926Db586Cdf10f
Arg [1] : token_ (address): 0x780f70882fF4929D1A658a4E8EC8D4316b24748A
Arg [2] : merkleRoot_ (bytes32): 0x3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b8f3fb479571eca6a06240b21926db586cdf10f
Arg [1] : 000000000000000000000000780f70882ff4929d1a658a4e8ec8d4316b24748a
Arg [2] : 3029819ce3dda49ac1f785ea37adc4ad84949bc7cfd3123711b57d7f9fd2c71c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.