Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,661 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 17403010 | 542 days ago | IN | 0 ETH | 0.0005743 | ||||
Claim | 17354400 | 549 days ago | IN | 0 ETH | 0.00071496 | ||||
Claim | 17230928 | 566 days ago | IN | 0 ETH | 0.00328357 | ||||
Claim | 17219225 | 568 days ago | IN | 0 ETH | 0.00200856 | ||||
Claim | 17144160 | 578 days ago | IN | 0 ETH | 0.00100133 | ||||
Claim | 17122149 | 582 days ago | IN | 0 ETH | 0.0010632 | ||||
Claim | 17104300 | 584 days ago | IN | 0 ETH | 0.00149732 | ||||
Claim | 17103723 | 584 days ago | IN | 0 ETH | 0.00115101 | ||||
Claim | 17103722 | 584 days ago | IN | 0 ETH | 0.00111245 | ||||
Claim | 17103693 | 584 days ago | IN | 0 ETH | 0.00120722 | ||||
Pause | 17103691 | 584 days ago | IN | 0 ETH | 0.0010696 | ||||
Claim | 17103679 | 584 days ago | IN | 0 ETH | 0.00134022 | ||||
Claim | 17103678 | 584 days ago | IN | 0 ETH | 0.00391364 | ||||
Claim | 17103678 | 584 days ago | IN | 0 ETH | 0.00391269 | ||||
Claim | 17103675 | 584 days ago | IN | 0 ETH | 0.00356172 | ||||
Set Merkle Root | 17103672 | 584 days ago | IN | 0 ETH | 0.00113784 | ||||
Claim | 17103669 | 584 days ago | IN | 0 ETH | 0.00357087 | ||||
Claim | 17103668 | 584 days ago | IN | 0 ETH | 0.00344937 | ||||
Claim | 17103666 | 584 days ago | IN | 0 ETH | 0.00346235 | ||||
Claim | 17103665 | 584 days ago | IN | 0 ETH | 0.00358357 | ||||
Claim | 17103660 | 584 days ago | IN | 0 ETH | 0.00374572 | ||||
Claim | 17103658 | 584 days ago | IN | 0 ETH | 0.00384161 | ||||
Claim | 17103657 | 584 days ago | IN | 0 ETH | 0.00377863 | ||||
Claim | 17103654 | 584 days ago | IN | 0 ETH | 0.00412283 | ||||
Claim | 17103645 | 584 days ago | IN | 0 ETH | 0.00385483 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MerkleDistributor1155
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.19; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./IMerkleDistributor.sol"; import "./ISuper1155.sol"; contract MerkleDistributor1155 is IMerkleDistributor, Ownable, Pausable { address public immutable override token; bytes32 public merkleRoot; mapping(address => uint256) private claimed; constructor(address _token) { token = _token; } function setMerkleRoot(bytes32 _merkleRoot) external onlyOwner { merkleRoot = _merkleRoot; } function claimedAmount( address user ) public view override returns (uint256) { return claimed[user]; } function claim( uint256 amount, bytes32[] calldata merkleProof ) external override whenNotPaused { require( claimed[msg.sender] < amount, "MerkleDistributor: Drop already claimed." ); bytes32 leaf = keccak256(abi.encode(msg.sender, amount)); // Check the merkle proof require( MerkleProof.verify(merkleProof, merkleRoot, leaf), "MerkleDistributor: Invalid proof." ); uint256 claimingAmount = amount - claimed[msg.sender]; claimed[msg.sender] = amount; // Mark it claimed and send the token. ISuper1155(token).mint(msg.sender, claimingAmount); emit Claimed(msg.sender, claimingAmount); } function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The tree and the proofs can be generated using our * https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. * You will find a quickstart guide in the readme. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the merkle tree could be reinterpreted as a leaf value. * OpenZeppelin's JavaScript library generates merkle trees that are safe * against this attack out of the box. */ 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 Calldata version of {verify} * * _Available since v4.7._ */ function verifyCalldata( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle 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++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} * * _Available since v4.7._ */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false * respectively. * * CAUTION: Not all merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer). * * _Available since v4.7._ */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.19; // 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 claimed amount if the address has been marked claimed. function claimedAmount(address user) external view returns (uint256); // Claim the given amount of the token to the given address. Reverts if the inputs are invalid. function claim(uint256 amount, bytes32[] calldata merkleProof) external; // This event is triggered whenever a call to #claim succeeds. event Claimed(address user, uint256 amount); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.19; interface ISuper1155 { function mint(address recipient, uint256 amount) external; }
// 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; } }
{ "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":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claimedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","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":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161095938038061095983398101604081905261002f916100a6565b61003833610056565b6000805460ff60a01b191690556001600160a01b03166080526100d6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100b857600080fd5b81516001600160a01b03811681146100cf57600080fd5b9392505050565b6080516108616100f86000396000818161018d015261034501526108616000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a61461012d5780637cb64759146101355780638456cb59146101485780638da5cb5b14610150578063f2fde38b14610175578063fc0c546a1461018857600080fd5b806304e86903146100ae5780632eb4a7ab146100ea5780632f52ebb7146100f35780633f4ba83a146101085780635c975abb14610110575b600080fd5b6100d76100bc366004610712565b6001600160a01b031660009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100d760015481565b61010661010136600461073b565b6101af565b005b6101066103e2565b600054600160a01b900460ff1660405190151581526020016100e1565b6101066103f4565b6101066101433660046107ba565b610406565b610106610413565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100e1565b610106610183366004610712565b610423565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b6101b761049c565b33600090815260026020526040902054831161022b5760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201526731b630b4b6b2b21760c11b60648201526084015b60405180910390fd5b6040805133602082015290810184905260009060600160405160208183030381529060405280519060200120905061029a8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060015491508490506104e9565b6102f05760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666044820152601760f91b6064820152608401610222565b3360009081526002602052604081205461030a90866107e9565b3360008181526002602052604090819020889055516340c10f1960e01b81526004810191909152602481018290529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505060408051338152602081018590527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a935001905060405180910390a15050505050565b6103ea6104ff565b6103f2610559565b565b6103fc6104ff565b6103f260006105ae565b61040e6104ff565b600155565b61041b6104ff565b6103f26105fe565b61042b6104ff565b6001600160a01b0381166104905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610222565b610499816105ae565b50565b600054600160a01b900460ff16156103f25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610222565b6000826104f68584610641565b14949350505050565b6000546001600160a01b031633146103f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610222565b610561610690565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61060661049c565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586105913390565b600081815b84518110156106865761067282868381518110610665576106656107fc565b60200260200101516106e0565b91508061067e81610812565b915050610646565b5090505b92915050565b600054600160a01b900460ff166103f25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610222565b60008183106106fc57600082815260208490526040902061070b565b60008381526020839052604090205b9392505050565b60006020828403121561072457600080fd5b81356001600160a01b038116811461070b57600080fd5b60008060006040848603121561075057600080fd5b83359250602084013567ffffffffffffffff8082111561076f57600080fd5b818601915086601f83011261078357600080fd5b81358181111561079257600080fd5b8760208260051b85010111156107a757600080fd5b6020830194508093505050509250925092565b6000602082840312156107cc57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561068a5761068a6107d3565b634e487b7160e01b600052603260045260246000fd5b600060018201610824576108246107d3565b506001019056fea26469706673582212206454e0961f70943c51b2e238e15d0a8366da4e5cb1556026713db522bcfb7a1864736f6c63430008130033000000000000000000000000e418fa7a533f3e691025b6111278af83d9f5b709
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a61461012d5780637cb64759146101355780638456cb59146101485780638da5cb5b14610150578063f2fde38b14610175578063fc0c546a1461018857600080fd5b806304e86903146100ae5780632eb4a7ab146100ea5780632f52ebb7146100f35780633f4ba83a146101085780635c975abb14610110575b600080fd5b6100d76100bc366004610712565b6001600160a01b031660009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100d760015481565b61010661010136600461073b565b6101af565b005b6101066103e2565b600054600160a01b900460ff1660405190151581526020016100e1565b6101066103f4565b6101066101433660046107ba565b610406565b610106610413565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100e1565b610106610183366004610712565b610423565b61015d7f000000000000000000000000e418fa7a533f3e691025b6111278af83d9f5b70981565b6101b761049c565b33600090815260026020526040902054831161022b5760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201526731b630b4b6b2b21760c11b60648201526084015b60405180910390fd5b6040805133602082015290810184905260009060600160405160208183030381529060405280519060200120905061029a8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060015491508490506104e9565b6102f05760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666044820152601760f91b6064820152608401610222565b3360009081526002602052604081205461030a90866107e9565b3360008181526002602052604090819020889055516340c10f1960e01b81526004810191909152602481018290529091506001600160a01b037f000000000000000000000000e418fa7a533f3e691025b6111278af83d9f5b70916906340c10f1990604401600060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505060408051338152602081018590527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a935001905060405180910390a15050505050565b6103ea6104ff565b6103f2610559565b565b6103fc6104ff565b6103f260006105ae565b61040e6104ff565b600155565b61041b6104ff565b6103f26105fe565b61042b6104ff565b6001600160a01b0381166104905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610222565b610499816105ae565b50565b600054600160a01b900460ff16156103f25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610222565b6000826104f68584610641565b14949350505050565b6000546001600160a01b031633146103f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610222565b610561610690565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61060661049c565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586105913390565b600081815b84518110156106865761067282868381518110610665576106656107fc565b60200260200101516106e0565b91508061067e81610812565b915050610646565b5090505b92915050565b600054600160a01b900460ff166103f25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610222565b60008183106106fc57600082815260208490526040902061070b565b60008381526020839052604090205b9392505050565b60006020828403121561072457600080fd5b81356001600160a01b038116811461070b57600080fd5b60008060006040848603121561075057600080fd5b83359250602084013567ffffffffffffffff8082111561076f57600080fd5b818601915086601f83011261078357600080fd5b81358181111561079257600080fd5b8760208260051b85010111156107a757600080fd5b6020830194508093505050509250925092565b6000602082840312156107cc57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561068a5761068a6107d3565b634e487b7160e01b600052603260045260246000fd5b600060018201610824576108246107d3565b506001019056fea26469706673582212206454e0961f70943c51b2e238e15d0a8366da4e5cb1556026713db522bcfb7a1864736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e418fa7a533f3e691025b6111278af83d9f5b709
-----Decoded View---------------
Arg [0] : _token (address): 0xe418fa7A533f3E691025b6111278af83d9F5b709
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e418fa7a533f3e691025b6111278af83d9f5b709
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.