More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,906 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 21329558 | 34 days ago | IN | 0 ETH | 0.00186221 | ||||
Claim | 21329556 | 34 days ago | IN | 0 ETH | 0.00188371 | ||||
Claim | 21329554 | 34 days ago | IN | 0 ETH | 0.00183452 | ||||
Claim | 21299040 | 38 days ago | IN | 0 ETH | 0.00063125 | ||||
Claim | 21299036 | 38 days ago | IN | 0 ETH | 0.0006391 | ||||
Claim | 21299032 | 38 days ago | IN | 0 ETH | 0.00062855 | ||||
Claim | 21299028 | 38 days ago | IN | 0 ETH | 0.00080115 | ||||
Claim | 21261733 | 43 days ago | IN | 0 ETH | 0.00046782 | ||||
Claim | 21261731 | 43 days ago | IN | 0 ETH | 0.00064495 | ||||
Claim | 21261730 | 43 days ago | IN | 0 ETH | 0.00065234 | ||||
Claim | 21261729 | 43 days ago | IN | 0 ETH | 0.00097305 | ||||
Claim | 20453416 | 156 days ago | IN | 0 ETH | 0.00003476 | ||||
Claim | 20453416 | 156 days ago | IN | 0 ETH | 0.0000715 | ||||
Claim | 20453378 | 156 days ago | IN | 0 ETH | 0.00008857 | ||||
Claim | 19852149 | 240 days ago | IN | 0 ETH | 0.0004401 | ||||
Claim | 19849732 | 240 days ago | IN | 0 ETH | 0.00022544 | ||||
Claim | 19849728 | 240 days ago | IN | 0 ETH | 0.0002114 | ||||
Claim | 19849721 | 240 days ago | IN | 0 ETH | 0.00035545 | ||||
Claim | 19832056 | 243 days ago | IN | 0 ETH | 0.00051576 | ||||
Claim | 19832055 | 243 days ago | IN | 0 ETH | 0.00049082 | ||||
Claim | 19832054 | 243 days ago | IN | 0 ETH | 0.00049297 | ||||
Claim | 19832053 | 243 days ago | IN | 0 ETH | 0.00061302 | ||||
Claim | 19796512 | 248 days ago | IN | 0 ETH | 0.00046659 | ||||
Claim | 19796511 | 248 days ago | IN | 0 ETH | 0.00048681 | ||||
Claim | 19796508 | 248 days ago | IN | 0 ETH | 0.00044148 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MerkleClaimer
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: UNLICENSED pragma solidity =0.8.4; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import '@openzeppelin/contracts/utils/cryptography/MerkleProof.sol'; import '../interfaces/IMerkleDistributor.sol'; contract MerkleClaimer is Ownable, IMerkleDistributor { address public immutable override token; bytes32 public immutable override merkleRoot; string public id; bool public isPaused; // This is a packed array of booleans. mapping(uint256 => uint256) private claimedBitMap; constructor( string memory _id, address token_, bytes32 merkleRoot_ ) { id = _id; token = token_; merkleRoot = merkleRoot_; } 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, uint256 time, bytes32[] calldata merkleProof ) external override { require(!isPaused, 'MerkleDistributor: Distribution paused'); require(!isClaimed(index), 'MerkleDistributor: Claim already claimed'); require(block.timestamp >= time, 'MerkleDistributor: Claim is not available yet'); // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(index, account, amount, time)); 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, time); } function claimAll( uint256[] calldata indexes, address account, uint256[] calldata amounts, uint256[] calldata times, bytes32[][] calldata merkleProofs ) external override { require(!isPaused, 'MerkleDistributor: Distribution paused'); uint256 toSend; for (uint256 i = 0; i < indexes.length; i++) { uint256 index = indexes[i]; uint256 amount = amounts[i]; uint256 time = times[i]; bytes32[] memory merkleProof = merkleProofs[i]; require(!isClaimed(index), 'MerkleDistributor: Claim already claimed'); require(block.timestamp >= time, 'MerkleDistributor: Claim is not available yet'); // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(index, account, amount, time)); require(MerkleProof.verify(merkleProof, merkleRoot, node), 'MerkleDistributor: Invalid proof'); // Mark it claimed and send the token. _setClaimed(index); toSend += amount; emit Claimed(index, account, amount, time); } require(IERC20(token).transfer(account, toSend), 'MerkleDistributor: Transfer failed'); } function setPaused(bool status) external onlyOwner { isPaused = status; } function withdrawAll() external onlyOwner { uint256 balance = address(this).balance; if (balance > 0) { payable(owner()).transfer(balance); } IERC20(token).transfer(owner(), IERC20(token).balanceOf(address(this))); } function withdrawToken(address _token, uint256 amount) external onlyOwner { IERC20(_token).transfer(owner(), amount); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity >=0.5.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, uint256 time, bytes32[] calldata merkleProof) external; function claimAll(uint256[] calldata indexes, address account, uint256[] calldata amounts, uint256[] calldata times, bytes32[][] calldata merkleProofs) external; // This event is triggered whenever a call to #claim succeeds. event Claimed(uint256 index, address account, uint256 amount, uint256 time); }
// 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 // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// 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 // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_id","type":"string"},{"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"},{"indexed":false,"internalType":"uint256","name":"time","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":"uint256","name":"time","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"indexes","type":"uint256[]"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"times","type":"uint256[]"},{"internalType":"bytes32[][]","name":"merkleProofs","type":"bytes32[][]"}],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"isPaused","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","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":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200166338038062001663833981016040819052620000349162000185565b6200003f3362000072565b825162000054906001906020860190620000c2565b5060609190911b6001600160601b03191660805260a05250620002cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620000d09062000279565b90600052602060002090601f016020900481019282620000f457600085556200013f565b82601f106200010f57805160ff19168380011785556200013f565b828001600101855582156200013f579182015b828111156200013f57825182559160200191906001019062000122565b506200014d92915062000151565b5090565b5b808211156200014d576000815560010162000152565b80516001600160a01b03811681146200018057600080fd5b919050565b6000806000606084860312156200019a578283fd5b83516001600160401b0380821115620001b1578485fd5b818601915086601f830112620001c5578485fd5b815181811115620001da57620001da620002b6565b604051601f8201601f19908116603f01168101908382118183101715620002055762000205620002b6565b8160405282815260209350898484870101111562000221578788fd5b8791505b8282101562000244578482018401518183018501529083019062000225565b828211156200025557878484830101525b96506200026791505086820162000168565b93505050604084015190509250925092565b600181811c908216806200028e57607f821691505b60208210811415620002b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160601c60a0516113456200031e6000396000818160ee01528181610346015261069d0152600081816101ee015281816103ec015281816107be01528181610906015261095a01526113456000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063af640d0f11610066578063af640d0f146101b4578063b187bd26146101c9578063f2fde38b146101d6578063fc0c546a146101e957600080fd5b80638da5cb5b146101595780639e281a981461017e5780639e34070f1461019157600080fd5b806316c38b3c146100d45780632eb4a7ab146100e95780633e4fcb21146101235780635eae513a14610136578063715018a614610149578063853828b614610151575b600080fd5b6100e76100e2366004610f7b565b610210565b005b6101107f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100e7610131366004610fe3565b610256565b6100e7610144366004610ea6565b6104dd565b6100e7610862565b6100e7610898565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6100e761018c366004610e7d565b610a5e565b6101a461019f366004610fb3565b610b2e565b604051901515815260200161011a565b6101bc610b6f565b60405161011a9190611052565b6002546101a49060ff1681565b6100e76101e4366004610e5c565b610bfd565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146102435760405162461bcd60e51b815260040161023a906110eb565b60405180910390fd5b6002805460ff1916911515919091179055565b60025460ff16156102795760405162461bcd60e51b815260040161023a906110a5565b61028286610b2e565b1561029f5760405162461bcd60e51b815260040161023a90611120565b824210156102bf5760405162461bcd60e51b815260040161023a90611168565b60408051602081018890526bffffffffffffffffffffffff19606088901b169181019190915260548101859052607481018490526000906094016040516020818303038152906040528051906020012090506103718383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f00000000000000000000000000000000000000000000000000000000000000009250859150610c989050565b6103bd5760405162461bcd60e51b815260206004820181905260248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f66604482015260640161023a565b6103c687610cae565b60405163a9059cbb60e01b81526001600160a01b038781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561043057600080fd5b505af1158015610444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104689190610f97565b6104845760405162461bcd60e51b815260040161023a906111b5565b604080518881526001600160a01b0388166020820152908101869052606081018590527fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac9060800160405180910390a150505050505050565b60025460ff16156105005760405162461bcd60e51b815260040161023a906110a5565b6000805b898110156107975760008b8b8381811061052e57634e487b7160e01b600052603260045260246000fd5b905060200201359050600089898481811061055957634e487b7160e01b600052603260045260246000fd5b905060200201359050600088888581811061058457634e487b7160e01b600052603260045260246000fd5b90506020020135905060008787868181106105af57634e487b7160e01b600052603260045260246000fd5b90506020028101906105c191906111f7565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509293506106019250869150610b2e9050565b1561061e5760405162461bcd60e51b815260040161023a90611120565b8142101561063e5760405162461bcd60e51b815260040161023a90611168565b6000848e858560405160200161067f949392919093845260609290921b6bffffffffffffffffffffffff191660208401526034830152605482015260740190565b6040516020818303038152906040528051906020012090506106c2827f000000000000000000000000000000000000000000000000000000000000000083610c98565b61070e5760405162461bcd60e51b815260206004820181905260248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f66604482015260640161023a565b61071785610cae565b610721848861123f565b96507fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac858f868660405161077794939291909384526001600160a01b039290921660208401526040830152606082015260800190565b60405180910390a15050505050808061078f906112a6565b915050610504565b5060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190610f97565b6108565760405162461bcd60e51b815260040161023a906111b5565b50505050505050505050565b6000546001600160a01b0316331461088c5760405162461bcd60e51b815260040161023a906110eb565b6108966000610cec565b565b6000546001600160a01b031633146108c25760405162461bcd60e51b815260040161023a906110eb565b47801561090457600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610902573d6000803e3d6000fd5b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6109456000546001600160a01b031690565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190610fcb565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5a9190610f97565b5050565b6000546001600160a01b03163314610a885760405162461bcd60e51b815260040161023a906110eb565b816001600160a01b031663a9059cbb610aa96000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b299190610f97565b505050565b600080610b3d61010084611257565b90506000610b4d610100856112c1565b60009283526003602052604090922054600190921b9182169091149392505050565b60018054610b7c9061126b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba89061126b565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081565b6000546001600160a01b03163314610c275760405162461bcd60e51b815260040161023a906110eb565b6001600160a01b038116610c8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b610c9581610cec565b50565b600082610ca58584610d3c565b14949350505050565b6000610cbc61010083611257565b90506000610ccc610100846112c1565b6000928352600360205260409092208054600190931b9092179091555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081815b8451811015610dee576000858281518110610d6c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610dae576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610ddb565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610de6816112a6565b915050610d41565b509392505050565b80356001600160a01b0381168114610e0d57600080fd5b919050565b60008083601f840112610e23578182fd5b50813567ffffffffffffffff811115610e3a578182fd5b6020830191508360208260051b8501011115610e5557600080fd5b9250929050565b600060208284031215610e6d578081fd5b610e7682610df6565b9392505050565b60008060408385031215610e8f578081fd5b610e9883610df6565b946020939093013593505050565b600080600080600080600080600060a08a8c031215610ec3578485fd5b893567ffffffffffffffff80821115610eda578687fd5b610ee68d838e01610e12565b909b509950899150610efa60208d01610df6565b985060408c0135915080821115610f0f578687fd5b610f1b8d838e01610e12565b909850965060608c0135915080821115610f33578586fd5b610f3f8d838e01610e12565b909650945060808c0135915080821115610f57578384fd5b50610f648c828d01610e12565b915080935050809150509295985092959850929598565b600060208284031215610f8c578081fd5b8135610e7681611301565b600060208284031215610fa8578081fd5b8151610e7681611301565b600060208284031215610fc4578081fd5b5035919050565b600060208284031215610fdc578081fd5b5051919050565b60008060008060008060a08789031215610ffb578182fd5b8635955061100b60208801610df6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611034578283fd5b61104089828a01610e12565b979a9699509497509295939492505050565b6000602080835283518082850152825b8181101561107e57858101830151858201604001528201611062565b8181111561108f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f4d65726b6c654469737472696275746f723a20446973747269627574696f6e206040820152651c185d5cd95960d21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526028908201527f4d65726b6c654469737472696275746f723a20436c61696d20616c72656164796040820152670818db185a5b595960c21b606082015260800190565b6020808252602d908201527f4d65726b6c654469737472696275746f723a20436c61696d206973206e6f742060408201526c185d985a5b18589b19481e595d609a1b606082015260800190565b60208082526022908201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c604082015261195960f21b606082015260800190565b6000808335601e1984360301811261120d578283fd5b83018035915067ffffffffffffffff821115611227578283fd5b6020019150600581901b3603821315610e5557600080fd5b60008219821115611252576112526112d5565b500190565b600082611266576112666112eb565b500490565b600181811c9082168061127f57607f821691505b602082108114156112a057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156112ba576112ba6112d5565b5060010190565b6000826112d0576112d06112eb565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b8015158114610c9557600080fdfea264697066735822122091b4ada0058733271f19576feed87e09b283a0e43a1dd92996a31df42ad765a264736f6c634300080400330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000bc6e06778708177a18210181b073da747c88490a26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc000000000000000000000000000000000000000000000000000000000000000f626c6f6b7061642d73796e636974790000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063af640d0f11610066578063af640d0f146101b4578063b187bd26146101c9578063f2fde38b146101d6578063fc0c546a146101e957600080fd5b80638da5cb5b146101595780639e281a981461017e5780639e34070f1461019157600080fd5b806316c38b3c146100d45780632eb4a7ab146100e95780633e4fcb21146101235780635eae513a14610136578063715018a614610149578063853828b614610151575b600080fd5b6100e76100e2366004610f7b565b610210565b005b6101107f26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc81565b6040519081526020015b60405180910390f35b6100e7610131366004610fe3565b610256565b6100e7610144366004610ea6565b6104dd565b6100e7610862565b6100e7610898565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6100e761018c366004610e7d565b610a5e565b6101a461019f366004610fb3565b610b2e565b604051901515815260200161011a565b6101bc610b6f565b60405161011a9190611052565b6002546101a49060ff1681565b6100e76101e4366004610e5c565b610bfd565b6101667f000000000000000000000000bc6e06778708177a18210181b073da747c88490a81565b6000546001600160a01b031633146102435760405162461bcd60e51b815260040161023a906110eb565b60405180910390fd5b6002805460ff1916911515919091179055565b60025460ff16156102795760405162461bcd60e51b815260040161023a906110a5565b61028286610b2e565b1561029f5760405162461bcd60e51b815260040161023a90611120565b824210156102bf5760405162461bcd60e51b815260040161023a90611168565b60408051602081018890526bffffffffffffffffffffffff19606088901b169181019190915260548101859052607481018490526000906094016040516020818303038152906040528051906020012090506103718383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc9250859150610c989050565b6103bd5760405162461bcd60e51b815260206004820181905260248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f66604482015260640161023a565b6103c687610cae565b60405163a9059cbb60e01b81526001600160a01b038781166004830152602482018790527f000000000000000000000000bc6e06778708177a18210181b073da747c88490a169063a9059cbb90604401602060405180830381600087803b15801561043057600080fd5b505af1158015610444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104689190610f97565b6104845760405162461bcd60e51b815260040161023a906111b5565b604080518881526001600160a01b0388166020820152908101869052606081018590527fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac9060800160405180910390a150505050505050565b60025460ff16156105005760405162461bcd60e51b815260040161023a906110a5565b6000805b898110156107975760008b8b8381811061052e57634e487b7160e01b600052603260045260246000fd5b905060200201359050600089898481811061055957634e487b7160e01b600052603260045260246000fd5b905060200201359050600088888581811061058457634e487b7160e01b600052603260045260246000fd5b90506020020135905060008787868181106105af57634e487b7160e01b600052603260045260246000fd5b90506020028101906105c191906111f7565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509293506106019250869150610b2e9050565b1561061e5760405162461bcd60e51b815260040161023a90611120565b8142101561063e5760405162461bcd60e51b815260040161023a90611168565b6000848e858560405160200161067f949392919093845260609290921b6bffffffffffffffffffffffff191660208401526034830152605482015260740190565b6040516020818303038152906040528051906020012090506106c2827f26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc83610c98565b61070e5760405162461bcd60e51b815260206004820181905260248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f66604482015260640161023a565b61071785610cae565b610721848861123f565b96507fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac858f868660405161077794939291909384526001600160a01b039290921660208401526040830152606082015260800190565b60405180910390a15050505050808061078f906112a6565b915050610504565b5060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018390527f000000000000000000000000bc6e06778708177a18210181b073da747c88490a169063a9059cbb90604401602060405180830381600087803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190610f97565b6108565760405162461bcd60e51b815260040161023a906111b5565b50505050505050505050565b6000546001600160a01b0316331461088c5760405162461bcd60e51b815260040161023a906110eb565b6108966000610cec565b565b6000546001600160a01b031633146108c25760405162461bcd60e51b815260040161023a906110eb565b47801561090457600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610902573d6000803e3d6000fd5b505b7f000000000000000000000000bc6e06778708177a18210181b073da747c88490a6001600160a01b031663a9059cbb6109456000546001600160a01b031690565b6040516370a0823160e01b81523060048201527f000000000000000000000000bc6e06778708177a18210181b073da747c88490a6001600160a01b0316906370a082319060240160206040518083038186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190610fcb565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a2257600080fd5b505af1158015610a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5a9190610f97565b5050565b6000546001600160a01b03163314610a885760405162461bcd60e51b815260040161023a906110eb565b816001600160a01b031663a9059cbb610aa96000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b299190610f97565b505050565b600080610b3d61010084611257565b90506000610b4d610100856112c1565b60009283526003602052604090922054600190921b9182169091149392505050565b60018054610b7c9061126b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba89061126b565b8015610bf55780601f10610bca57610100808354040283529160200191610bf5565b820191906000526020600020905b815481529060010190602001808311610bd857829003601f168201915b505050505081565b6000546001600160a01b03163314610c275760405162461bcd60e51b815260040161023a906110eb565b6001600160a01b038116610c8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023a565b610c9581610cec565b50565b600082610ca58584610d3c565b14949350505050565b6000610cbc61010083611257565b90506000610ccc610100846112c1565b6000928352600360205260409092208054600190931b9092179091555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081815b8451811015610dee576000858281518110610d6c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610dae576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610ddb565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080610de6816112a6565b915050610d41565b509392505050565b80356001600160a01b0381168114610e0d57600080fd5b919050565b60008083601f840112610e23578182fd5b50813567ffffffffffffffff811115610e3a578182fd5b6020830191508360208260051b8501011115610e5557600080fd5b9250929050565b600060208284031215610e6d578081fd5b610e7682610df6565b9392505050565b60008060408385031215610e8f578081fd5b610e9883610df6565b946020939093013593505050565b600080600080600080600080600060a08a8c031215610ec3578485fd5b893567ffffffffffffffff80821115610eda578687fd5b610ee68d838e01610e12565b909b509950899150610efa60208d01610df6565b985060408c0135915080821115610f0f578687fd5b610f1b8d838e01610e12565b909850965060608c0135915080821115610f33578586fd5b610f3f8d838e01610e12565b909650945060808c0135915080821115610f57578384fd5b50610f648c828d01610e12565b915080935050809150509295985092959850929598565b600060208284031215610f8c578081fd5b8135610e7681611301565b600060208284031215610fa8578081fd5b8151610e7681611301565b600060208284031215610fc4578081fd5b5035919050565b600060208284031215610fdc578081fd5b5051919050565b60008060008060008060a08789031215610ffb578182fd5b8635955061100b60208801610df6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611034578283fd5b61104089828a01610e12565b979a9699509497509295939492505050565b6000602080835283518082850152825b8181101561107e57858101830151858201604001528201611062565b8181111561108f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f4d65726b6c654469737472696275746f723a20446973747269627574696f6e206040820152651c185d5cd95960d21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526028908201527f4d65726b6c654469737472696275746f723a20436c61696d20616c72656164796040820152670818db185a5b595960c21b606082015260800190565b6020808252602d908201527f4d65726b6c654469737472696275746f723a20436c61696d206973206e6f742060408201526c185d985a5b18589b19481e595d609a1b606082015260800190565b60208082526022908201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c604082015261195960f21b606082015260800190565b6000808335601e1984360301811261120d578283fd5b83018035915067ffffffffffffffff821115611227578283fd5b6020019150600581901b3603821315610e5557600080fd5b60008219821115611252576112526112d5565b500190565b600082611266576112666112eb565b500490565b600181811c9082168061127f57607f821691505b602082108114156112a057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156112ba576112ba6112d5565b5060010190565b6000826112d0576112d06112eb565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b8015158114610c9557600080fdfea264697066735822122091b4ada0058733271f19576feed87e09b283a0e43a1dd92996a31df42ad765a264736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000bc6e06778708177a18210181b073da747c88490a26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc000000000000000000000000000000000000000000000000000000000000000f626c6f6b7061642d73796e636974790000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _id (string): blokpad-syncity
Arg [1] : token_ (address): 0xbc6E06778708177a18210181b073DA747C88490a
Arg [2] : merkleRoot_ (bytes32): 0x26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 000000000000000000000000bc6e06778708177a18210181b073da747c88490a
Arg [2] : 26307795eeb68b1efc4b31d4a87a6332dbb8f90395249b43b02b5df0d67989fc
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [4] : 626c6f6b7061642d73796e636974790000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.000011 | 6,465,322.4835 | $73.9 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.