Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Funded By
N/A
Latest 25 from a total of 219 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 7421598 | 1015 days ago | IN | 0 ETH | 0.000184409947 | ||||
Claim | 7369367 | 1016 days ago | IN | 0 ETH | 0.000169296819 | ||||
Claim | 7334668 | 1016 days ago | IN | 0 ETH | 0.00038270394 | ||||
Claim | 7329081 | 1016 days ago | IN | 0 ETH | 0.000339182121 | ||||
Claim | 7293066 | 1016 days ago | IN | 0 ETH | 0.000196573975 | ||||
Claim | 7292751 | 1016 days ago | IN | 0 ETH | 0.000237549833 | ||||
Claim | 7280401 | 1017 days ago | IN | 0 ETH | 0.000299850219 | ||||
Claim | 7247964 | 1017 days ago | IN | 0 ETH | 0.000249945122 | ||||
Claim | 7227958 | 1017 days ago | IN | 0 ETH | 0.000435770379 | ||||
Claim | 7193892 | 1018 days ago | IN | 0 ETH | 0.000396718541 | ||||
Claim | 7178339 | 1018 days ago | IN | 0 ETH | 0.000366813527 | ||||
Claim | 7171888 | 1018 days ago | IN | 0 ETH | 0.000423873421 | ||||
Claim | 7160696 | 1018 days ago | IN | 0 ETH | 0.000588410923 | ||||
Claim | 7160137 | 1018 days ago | IN | 0 ETH | 0.00041682657 | ||||
Claim | 7160116 | 1018 days ago | IN | 0 ETH | 0.000479758963 | ||||
Claim | 7153730 | 1018 days ago | IN | 0 ETH | 0.000708340996 | ||||
Claim | 7117829 | 1018 days ago | IN | 0 ETH | 0.000667167982 | ||||
Claim | 7114227 | 1019 days ago | IN | 0 ETH | 0.000294274533 | ||||
Claim | 7112014 | 1019 days ago | IN | 0 ETH | 0.000350455647 | ||||
Claim | 7103995 | 1019 days ago | IN | 0 ETH | 0.000390972639 | ||||
Claim | 7057452 | 1019 days ago | IN | 0 ETH | 0.000860213807 | ||||
Claim | 7052026 | 1019 days ago | IN | 0 ETH | 0.000372646691 | ||||
Claim | 7051877 | 1019 days ago | IN | 0 ETH | 0.000497565919 | ||||
Claim | 6997512 | 1020 days ago | IN | 0 ETH | 0.000745438161 | ||||
Claim | 6973834 | 1021 days ago | IN | 0 ETH | 0.000528417248 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7612596 | 1014 days ago | 0 ETH |
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xd4e036af3f93ef54560c55c583797cf2b0112782474298aa5189f89b626ac2c2
Contract Name:
Airdrop
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts-4.4.1/token/ERC20/IERC20.sol"; import "../utils/Owned.sol"; import "@openzeppelin/contracts-4.4.1/utils/cryptography/MerkleProof.sol"; import "../utils/Pausable.sol"; /** * Contract which implements a merkle airdrop for a given token * Based on an account balance snapshot stored in a merkle tree */ contract Airdrop is Owned, Pausable { IERC20 public token; bytes32 public root; // merkle tree root uint256 public startTime; mapping(uint256 => uint256) public _claimed; constructor( address _owner, IERC20 _token, bytes32 _root ) Owned(_owner) Pausable() { token = _token; root = _root; startTime = block.timestamp; } // Check if a given reward has already been claimed function claimed(uint256 index) public view returns (uint256 claimedBlock, uint256 claimedMask) { claimedBlock = _claimed[index / 256]; claimedMask = (uint256(1) << uint256(index % 256)); require((claimedBlock & claimedMask) == 0, "Tokens have already been claimed"); } // helper for the dapp function canClaim(uint256 index) external view returns (bool) { uint256 claimedBlock = _claimed[index / 256]; uint256 claimedMask = (uint256(1) << uint256(index % 256)); return ((claimedBlock & claimedMask) == 0); } // Get airdrop tokens assigned to address // Requires sending merkle proof to the function function claim( uint256 index, uint256 amount, bytes32[] memory merkleProof ) public notPaused { require(token.balanceOf(address(this)) > amount, "Contract doesnt have enough tokens"); // Make sure the tokens have not already been redeemed (uint256 claimedBlock, uint256 claimedMask) = claimed(index); _claimed[index / 256] = claimedBlock | claimedMask; // Compute the merkle leaf from index, recipient and amount bytes32 leaf = keccak256(abi.encodePacked(index, msg.sender, amount)); // verify the proof is valid require(MerkleProof.verify(merkleProof, root, leaf), "Proof is not valid"); // Redeem! token.transfer(msg.sender, amount); emit Claim(msg.sender, amount, block.timestamp); } function _selfDestruct(address payable beneficiary) external onlyOwner { token.transfer(beneficiary, token.balanceOf(address(this))); selfdestruct(beneficiary); } event Claim(address claimer, uint256 amount, uint timestamp); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) 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.0; 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 // OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { 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)); } } return computedHash; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // Inheritance import "./Owned.sol"; abstract contract Pausable is Owned { uint 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", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Claim","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":"uint256","name":"","type":"uint256"}],"name":"_claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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"}],"name":"canClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"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":"claimed","outputs":[{"internalType":"uint256","name":"claimedBlock","type":"uint256"},{"internalType":"uint256","name":"claimedMask","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPauseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610e2a380380610e2a83398101604081905261002f91610163565b826001600160a01b03811661008b5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1506000546001600160a01b031661012f5760405162461bcd60e51b815260206004820152601160248201527013dddb995c881b5d5cdd081899481cd95d607a1b6044820152606401610082565b600380546001600160a01b0390931661010002610100600160a81b03199093169290921790915560045550426005556101bd565b600080600060608486031215610177578283fd5b8351610182816101a5565b6020850151909350610193816101a5565b80925050604084015190509250925092565b6001600160a01b03811681146101ba57600080fd5b50565b610c5e806101cc6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391b4ded911610097578063dbe7e3bd11610066578063dbe7e3bd146101e3578063ebf0c7171461020b578063f4ddedcf14610214578063fc0c546a1461023457600080fd5b806391b4ded9146101a15780639ea6ec29146101aa578063ae0b51df146101bd578063c95c0d89146101d057600080fd5b80635c975abb116100d35780635c975abb1461015257806378e979251461016f57806379ba5097146101865780638da5cb5b1461018e57600080fd5b80631627540c146100fa57806316c38b3c1461010f57806353a47bb714610122575b600080fd5b61010d610108366004610a2a565b61024c565b005b61010d61011d366004610a4d565b6102a9565b600154610135906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60035461015f9060ff1681565b6040519015158152602001610149565b61017860055481565b604051908152602001610149565b61010d61031f565b600054610135906001600160a01b031681565b61017860025481565b61010d6101b8366004610a2a565b61040e565b61010d6101cb366004610ab5565b61052a565b61015f6101de366004610a85565b610817565b6101f66101f1366004610a85565b61085a565b60408051928352602083019190915201610149565b61017860045481565b610178610222366004610a85565b60066020526000908152604090205481565b6003546101359061010090046001600160a01b031681565b6102546108e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b6102b16108e6565b60035460ff16151581151514156102c55750565b6003805460ff191682151590811790915560ff16156102e357426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec59060200161029e565b50565b6001546001600160a01b0316331461039c5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6104166108e6565b6003546040516370a0823160e01b81523060048201526101009091046001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b15801561046757600080fd5b505afa15801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049f9190610a9d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156104e557600080fd5b505af11580156104f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051d9190610a69565b50806001600160a01b0316ff5b60035460ff16156105a35760405162461bcd60e51b815260206004820152603c60248201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060448201527f7768696c652074686520636f6e747261637420697320706175736564000000006064820152608401610393565b6003546040516370a0823160e01b8152306004820152839161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610a9d565b1161067b5760405162461bcd60e51b815260206004820152602260248201527f436f6e747261637420646f65736e74206861766520656e6f75676820746f6b656044820152616e7360f01b6064820152608401610393565b6000806106878561085a565b90925090508181176006600061069f61010089610b8a565b8152602080820192909252604090810160009081209390935580519182018890526bffffffffffffffffffffffff193360601b169082015260548101869052607401604051602081830303815290604052805190602001209050610706846004548361095a565b6107475760405162461bcd60e51b8152602060048201526012602482015271141c9bdbd9881a5cc81b9bdd081d985b1a5960721b6044820152606401610393565b60035460405163a9059cbb60e01b8152336004820152602481018790526101009091046001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf9190610a69565b506040805133815260208101879052428183015290517f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79181900360600190a1505050505050565b60008060068161082961010086610b8a565b815260200190815260200160002054905060006101008461084a9190610bc5565b6001901b91909116159392505050565b60008060068161086c61010086610b8a565b81526020019081526020016000205491506101008361088b9190610bc5565b6001901b9050818116156108e15760405162461bcd60e51b815260206004820181905260248201527f546f6b656e73206861766520616c7265616479206265656e20636c61696d65646044820152606401610393565b915091565b6000546001600160a01b031633146109585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610393565b565b6000826109678584610970565b14949350505050565b600081815b8451811015610a225760008582815181106109a057634e487b7160e01b600052603260045260246000fd5b602002602001015190508083116109e2576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a0f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610a1a81610b9e565b915050610975565b509392505050565b600060208284031215610a3b578081fd5b8135610a4681610c05565b9392505050565b600060208284031215610a5e578081fd5b8135610a4681610c1a565b600060208284031215610a7a578081fd5b8151610a4681610c1a565b600060208284031215610a96578081fd5b5035919050565b600060208284031215610aae578081fd5b5051919050565b600080600060608486031215610ac9578182fd5b833592506020808501359250604085013567ffffffffffffffff80821115610aef578384fd5b818701915087601f830112610b02578384fd5b813581811115610b1457610b14610bef565b8060051b604051601f19603f83011681018181108582111715610b3957610b39610bef565b604052828152858101935084860182860187018c1015610b57578788fd5b8795505b83861015610b79578035855260019590950194938601938601610b5b565b508096505050505050509250925092565b600082610b9957610b99610bd9565b500490565b6000600019821415610bbe57634e487b7160e01b81526011600452602481fd5b5060010190565b600082610bd457610bd4610bd9565b500690565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461031c57600080fd5b801515811461031c57600080fdfea26469706673582212205182f98ed3bfe6f3fb9c5217e01f3cf8b90199d2e2490b8a3ea5781ec94c677364736f6c634300080400330000000000000000000000008314125c8b68af2afd0d151eb4a551e88128a2ae000000000000000000000000217d47011b23bb961eb6d93ca9945b7501a5bb11cfc34c933a9aeede08a2b042942ed766453bf0f75d7d8cb6b6635b2b1d54bb75
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806391b4ded911610097578063dbe7e3bd11610066578063dbe7e3bd146101e3578063ebf0c7171461020b578063f4ddedcf14610214578063fc0c546a1461023457600080fd5b806391b4ded9146101a15780639ea6ec29146101aa578063ae0b51df146101bd578063c95c0d89146101d057600080fd5b80635c975abb116100d35780635c975abb1461015257806378e979251461016f57806379ba5097146101865780638da5cb5b1461018e57600080fd5b80631627540c146100fa57806316c38b3c1461010f57806353a47bb714610122575b600080fd5b61010d610108366004610a2a565b61024c565b005b61010d61011d366004610a4d565b6102a9565b600154610135906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60035461015f9060ff1681565b6040519015158152602001610149565b61017860055481565b604051908152602001610149565b61010d61031f565b600054610135906001600160a01b031681565b61017860025481565b61010d6101b8366004610a2a565b61040e565b61010d6101cb366004610ab5565b61052a565b61015f6101de366004610a85565b610817565b6101f66101f1366004610a85565b61085a565b60408051928352602083019190915201610149565b61017860045481565b610178610222366004610a85565b60066020526000908152604090205481565b6003546101359061010090046001600160a01b031681565b6102546108e6565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b6102b16108e6565b60035460ff16151581151514156102c55750565b6003805460ff191682151590811790915560ff16156102e357426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec59060200161029e565b50565b6001546001600160a01b0316331461039c5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6104166108e6565b6003546040516370a0823160e01b81523060048201526101009091046001600160a01b03169063a9059cbb90839083906370a082319060240160206040518083038186803b15801561046757600080fd5b505afa15801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049f9190610a9d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156104e557600080fd5b505af11580156104f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051d9190610a69565b50806001600160a01b0316ff5b60035460ff16156105a35760405162461bcd60e51b815260206004820152603c60248201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060448201527f7768696c652074686520636f6e747261637420697320706175736564000000006064820152608401610393565b6003546040516370a0823160e01b8152306004820152839161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610a9d565b1161067b5760405162461bcd60e51b815260206004820152602260248201527f436f6e747261637420646f65736e74206861766520656e6f75676820746f6b656044820152616e7360f01b6064820152608401610393565b6000806106878561085a565b90925090508181176006600061069f61010089610b8a565b8152602080820192909252604090810160009081209390935580519182018890526bffffffffffffffffffffffff193360601b169082015260548101869052607401604051602081830303815290604052805190602001209050610706846004548361095a565b6107475760405162461bcd60e51b8152602060048201526012602482015271141c9bdbd9881a5cc81b9bdd081d985b1a5960721b6044820152606401610393565b60035460405163a9059cbb60e01b8152336004820152602481018790526101009091046001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf9190610a69565b506040805133815260208101879052428183015290517f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79181900360600190a1505050505050565b60008060068161082961010086610b8a565b815260200190815260200160002054905060006101008461084a9190610bc5565b6001901b91909116159392505050565b60008060068161086c61010086610b8a565b81526020019081526020016000205491506101008361088b9190610bc5565b6001901b9050818116156108e15760405162461bcd60e51b815260206004820181905260248201527f546f6b656e73206861766520616c7265616479206265656e20636c61696d65646044820152606401610393565b915091565b6000546001600160a01b031633146109585760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610393565b565b6000826109678584610970565b14949350505050565b600081815b8451811015610a225760008582815181106109a057634e487b7160e01b600052603260045260246000fd5b602002602001015190508083116109e2576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a0f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610a1a81610b9e565b915050610975565b509392505050565b600060208284031215610a3b578081fd5b8135610a4681610c05565b9392505050565b600060208284031215610a5e578081fd5b8135610a4681610c1a565b600060208284031215610a7a578081fd5b8151610a4681610c1a565b600060208284031215610a96578081fd5b5035919050565b600060208284031215610aae578081fd5b5051919050565b600080600060608486031215610ac9578182fd5b833592506020808501359250604085013567ffffffffffffffff80821115610aef578384fd5b818701915087601f830112610b02578384fd5b813581811115610b1457610b14610bef565b8060051b604051601f19603f83011681018181108582111715610b3957610b39610bef565b604052828152858101935084860182860187018c1015610b57578788fd5b8795505b83861015610b79578035855260019590950194938601938601610b5b565b508096505050505050509250925092565b600082610b9957610b99610bd9565b500490565b6000600019821415610bbe57634e487b7160e01b81526011600452602481fd5b5060010190565b600082610bd457610bd4610bd9565b500690565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461031c57600080fd5b801515811461031c57600080fdfea26469706673582212205182f98ed3bfe6f3fb9c5217e01f3cf8b90199d2e2490b8a3ea5781ec94c677364736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008314125c8b68af2afd0d151eb4a551e88128a2ae000000000000000000000000217d47011b23bb961eb6d93ca9945b7501a5bb11cfc34c933a9aeede08a2b042942ed766453bf0f75d7d8cb6b6635b2b1d54bb75
-----Decoded View---------------
Arg [0] : _owner (address): 0x8314125C8B68aF2AfD0D151eb4A551E88128A2aE
Arg [1] : _token (address): 0x217D47011b23BB961eB6D93cA9945B7501a5BB11
Arg [2] : _root (bytes32): 0xcfc34c933a9aeede08a2b042942ed766453bf0f75d7d8cb6b6635b2b1d54bb75
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008314125c8b68af2afd0d151eb4a551e88128a2ae
Arg [1] : 000000000000000000000000217d47011b23bb961eb6d93ca9945b7501a5bb11
Arg [2] : cfc34c933a9aeede08a2b042942ed766453bf0f75d7d8cb6b6635b2b1d54bb75
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.