More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,255 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 18090485 | 512 days ago | IN | 0 ETH | 0.00136324 | ||||
Claim | 18055013 | 517 days ago | IN | 0 ETH | 0.0011567 | ||||
Claim | 18054862 | 517 days ago | IN | 0 ETH | 0.00114695 | ||||
Claim | 18048806 | 517 days ago | IN | 0 ETH | 0.00125597 | ||||
Claim | 18046151 | 518 days ago | IN | 0 ETH | 0.00116094 | ||||
Claim | 18024032 | 521 days ago | IN | 0 ETH | 0.00689352 | ||||
Claim | 18020284 | 521 days ago | IN | 0 ETH | 0.00689148 | ||||
Claim | 17818902 | 550 days ago | IN | 0 ETH | 0.00689376 | ||||
Claim | 17465299 | 599 days ago | IN | 0 ETH | 0.00195011 | ||||
Claim | 17412084 | 607 days ago | IN | 0 ETH | 0.00215262 | ||||
Claim | 17399063 | 609 days ago | IN | 0 ETH | 0.00195288 | ||||
Claim | 17369285 | 613 days ago | IN | 0 ETH | 0.00195288 | ||||
Claim | 17369285 | 613 days ago | IN | 0 ETH | 0.00195288 | ||||
Claim | 17347347 | 616 days ago | IN | 0 ETH | 0.00689304 | ||||
Claim | 17343260 | 616 days ago | IN | 0 ETH | 0.00340777 | ||||
Claim | 17342356 | 617 days ago | IN | 0 ETH | 0.00276908 | ||||
Claim | 17342310 | 617 days ago | IN | 0 ETH | 0.00300429 | ||||
Claim | 17342132 | 617 days ago | IN | 0 ETH | 0.00296926 | ||||
Claim | 17342048 | 617 days ago | IN | 0 ETH | 0.00308193 | ||||
Claim | 17341998 | 617 days ago | IN | 0 ETH | 0.00298793 | ||||
Claim | 17332713 | 618 days ago | IN | 0 ETH | 0.00689364 | ||||
Claim | 17284834 | 625 days ago | IN | 0 ETH | 0.0039328 | ||||
Claim | 17272433 | 626 days ago | IN | 0 ETH | 0.0068892 | ||||
Claim | 17272399 | 626 days ago | IN | 0 ETH | 0.0068928 | ||||
Claim | 17123394 | 647 days ago | IN | 0 ETH | 0.00689064 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13460848 | 1198 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MerkleDistributor
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; import './IERC20.sol'; import './IERC721.sol'; import './IERC1155.sol'; import './IERC1155Receiver.sol'; import './IERC165.sol'; import './MerkleProof.sol'; contract MerkleDistributor is IERC1155Receiver { IERC20 public immutable token; IERC1155 public immutable erc1155; bytes32 public immutable merkleRoot; event Claimed(uint256 indexed index, address indexed account, uint256 amount, uint256 tokenId); // This is a packed array of booleans. mapping(uint256 => uint256) private claimedBitMap; constructor( IERC20 token_, IERC1155 erc1155_, bytes32 merkleRoot_ ) { token = token_; merkleRoot = merkleRoot_; erc1155 = erc1155_; } function isClaimed(uint256 index) public view 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 tokenId, bytes32[] calldata merkleProof ) external { require(!isClaimed(index), 'MerkleDistributor: Drop already claimed.'); // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(index, account, amount, tokenId)); 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.'); erc1155.safeTransferFrom(address(this), account, tokenId, 1, new bytes(0)); emit Claimed(index, account, amount, tokenId); } function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external override returns (bytes4) { return IERC1155Receiver.onERC1155Received.selector; } function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external override returns (bytes4) { return IERC1155Receiver.onERC1155BatchReceived.selector; } function supportsInterface(bytes4 interfaceId) external pure override returns (bool) { return interfaceId == IERC1155Receiver.onERC1155Received.selector || interfaceId == IERC1155Receiver.onERC1155BatchReceived.selector; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import './IERC165.sol'; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import './IERC165.sol'; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import './IERC165.sol'; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"contract IERC1155","name":"erc1155_","type":"address"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Claimed","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc1155","outputs":[{"internalType":"contract IERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b50604051610bc7380380610bc783398101604081905261002f91610053565b6001600160601b0319606093841b811660805260c091909152911b1660a0526100ad565b600080600060608486031215610067578283fd5b835161007281610095565b602085015190935061008381610095565b80925050604084015190509250925092565b6001600160a01b03811681146100aa57600080fd5b50565b60805160601c60a05160601c60c051610ad06100f76000396000818161017e0152610235015260008181610366015261047901526000818161029c01526104af0152610ad06000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063bc197c811161005b578063bc197c81146100f3578063d56022d714610113578063f23a6e6114610128578063fc0c546a1461013b57610088565b806301ffc9a71461008d5780632eb4a7ab146100b65780633e4fcb21146100cb5780639e34070f146100e0575b600080fd5b6100a061009b3660046107be565b610143565b6040516100ad919061092c565b60405180910390f35b6100be61017c565b6040516100ad9190610937565b6100de6100d93660046107fe565b6101a0565b005b6100a06100ee3660046107e6565b610422565b61010661010136600461066a565b610463565b6040516100ad9190610940565b61011b610477565b6040516100ad9190610955565b610106610136366004610721565b61049b565b61011b6104ad565b60006001600160e01b0319821663f23a6e6160e01b148061017457506001600160e01b0319821663bc197c8160e01b145b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6101a986610422565b156101cf5760405162461bcd60e51b81526004016101c690610969565b60405180910390fd5b6000868686866040516020016101e89493929190610869565b6040516020818303038152906040528051906020012090506102608383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f000000000000000000000000000000000000000000000000000000000000000092508591506104d19050565b61027c5760405162461bcd60e51b81526004016101c6906109b1565b6102858761058c565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906102d39089908990600401610913565b602060405180830381600087803b1580156102ed57600080fd5b505af1158015610301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103259190610797565b6103415760405162461bcd60e51b81526004016101c6906109f2565b60408051600081526020810191829052637921219560e11b9091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f242432a906103a39030908a90899060019060248101610896565b600060405180830381600087803b1580156103bd57600080fd5b505af11580156103d1573d6000803e3d6000fd5b50505050856001600160a01b0316877fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac878760405161041192919061085b565b60405180910390a350505050505050565b60008061043161010084610a35565b9050600061044161010085610a70565b60009283526020839052604090922054600190921b9182169091149392505050565b63bc197c8160e01b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b63f23a6e6160e01b9695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081815b855181101561058157600086828151811061050157634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161054257828160405160200161052592919061085b565b60405160208183030381529060405280519060200120925061056e565b808360405160200161055592919061085b565b6040516020818303038152906040528051906020012092505b508061057981610a49565b9150506104d6565b509092149392505050565b600061059a61010083610a35565b905060006105aa61010084610a70565b6000928352602083905260409092208054600190931b9092179091555050565b80356001600160a01b038116811461017757600080fd5b60008083601f8401126105f2578182fd5b50813567ffffffffffffffff811115610609578182fd5b602083019150836020808302850101111561062357600080fd5b9250929050565b60008083601f84011261063b578182fd5b50813567ffffffffffffffff811115610652578182fd5b60208301915083602082850101111561062357600080fd5b60008060008060008060008060a0898b031215610685578384fd5b61068e896105ca565b975061069c60208a016105ca565b9650604089013567ffffffffffffffff808211156106b8578586fd5b6106c48c838d016105e1565b909850965060608b01359150808211156106dc578586fd5b6106e88c838d016105e1565b909650945060808b0135915080821115610700578384fd5b5061070d8b828c0161062a565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610739578182fd5b610742876105ca565b9550610750602088016105ca565b94506040870135935060608701359250608087013567ffffffffffffffff811115610779578283fd5b61078589828a0161062a565b979a9699509497509295939492505050565b6000602082840312156107a8578081fd5b815180151581146107b7578182fd5b9392505050565b6000602082840312156107cf578081fd5b81356001600160e01b0319811681146107b7578182fd5b6000602082840312156107f7578081fd5b5035919050565b60008060008060008060a08789031215610816578182fd5b86359550610826602088016105ca565b94506040870135935060608701359250608087013567ffffffffffffffff81111561084f578283fd5b61078589828a016105e1565b918252602082015260400190565b93845260609290921b6bffffffffffffffffffffffff191660208401526034830152605482015260740190565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156108e85785810182015185820160c0015281016108cc565b828111156108f9578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160a01b0391909116815260200190565b60208082526028908201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060408201526731b630b4b6b2b21760c11b606082015260800190565b60208082526021908201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666040820152601760f91b606082015260800190565b60208082526023908201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c60408201526232b21760e91b606082015260800190565b600082610a4457610a44610a84565b500490565b6000600019821415610a6957634e487b7160e01b81526011600452602481fd5b5060010190565b600082610a7f57610a7f610a84565b500690565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220acdb646ece506c985500e267b4eb06d7e5aebd34ce9e82bd7523a470a5441d3664736f6c63430008000033000000000000000000000000eaba187306335dd773ca8042b3792c46e213636a0000000000000000000000004d95adfedd17c3b604e8658cf26d137409c872f92aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063bc197c811161005b578063bc197c81146100f3578063d56022d714610113578063f23a6e6114610128578063fc0c546a1461013b57610088565b806301ffc9a71461008d5780632eb4a7ab146100b65780633e4fcb21146100cb5780639e34070f146100e0575b600080fd5b6100a061009b3660046107be565b610143565b6040516100ad919061092c565b60405180910390f35b6100be61017c565b6040516100ad9190610937565b6100de6100d93660046107fe565b6101a0565b005b6100a06100ee3660046107e6565b610422565b61010661010136600461066a565b610463565b6040516100ad9190610940565b61011b610477565b6040516100ad9190610955565b610106610136366004610721565b61049b565b61011b6104ad565b60006001600160e01b0319821663f23a6e6160e01b148061017457506001600160e01b0319821663bc197c8160e01b145b90505b919050565b7f2aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e81565b6101a986610422565b156101cf5760405162461bcd60e51b81526004016101c690610969565b60405180910390fd5b6000868686866040516020016101e89493929190610869565b6040516020818303038152906040528051906020012090506102608383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f2aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e92508591506104d19050565b61027c5760405162461bcd60e51b81526004016101c6906109b1565b6102858761058c565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000eaba187306335dd773ca8042b3792c46e213636a169063a9059cbb906102d39089908990600401610913565b602060405180830381600087803b1580156102ed57600080fd5b505af1158015610301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103259190610797565b6103415760405162461bcd60e51b81526004016101c6906109f2565b60408051600081526020810191829052637921219560e11b9091526001600160a01b037f0000000000000000000000004d95adfedd17c3b604e8658cf26d137409c872f9169063f242432a906103a39030908a90899060019060248101610896565b600060405180830381600087803b1580156103bd57600080fd5b505af11580156103d1573d6000803e3d6000fd5b50505050856001600160a01b0316877fd9cb1e2714d65a111c0f20f060176ad657496bd47a3de04ec7c3d4ca232112ac878760405161041192919061085b565b60405180910390a350505050505050565b60008061043161010084610a35565b9050600061044161010085610a70565b60009283526020839052604090922054600190921b9182169091149392505050565b63bc197c8160e01b98975050505050505050565b7f0000000000000000000000004d95adfedd17c3b604e8658cf26d137409c872f981565b63f23a6e6160e01b9695505050505050565b7f000000000000000000000000eaba187306335dd773ca8042b3792c46e213636a81565b600081815b855181101561058157600086828151811061050157634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161054257828160405160200161052592919061085b565b60405160208183030381529060405280519060200120925061056e565b808360405160200161055592919061085b565b6040516020818303038152906040528051906020012092505b508061057981610a49565b9150506104d6565b509092149392505050565b600061059a61010083610a35565b905060006105aa61010084610a70565b6000928352602083905260409092208054600190931b9092179091555050565b80356001600160a01b038116811461017757600080fd5b60008083601f8401126105f2578182fd5b50813567ffffffffffffffff811115610609578182fd5b602083019150836020808302850101111561062357600080fd5b9250929050565b60008083601f84011261063b578182fd5b50813567ffffffffffffffff811115610652578182fd5b60208301915083602082850101111561062357600080fd5b60008060008060008060008060a0898b031215610685578384fd5b61068e896105ca565b975061069c60208a016105ca565b9650604089013567ffffffffffffffff808211156106b8578586fd5b6106c48c838d016105e1565b909850965060608b01359150808211156106dc578586fd5b6106e88c838d016105e1565b909650945060808b0135915080821115610700578384fd5b5061070d8b828c0161062a565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610739578182fd5b610742876105ca565b9550610750602088016105ca565b94506040870135935060608701359250608087013567ffffffffffffffff811115610779578283fd5b61078589828a0161062a565b979a9699509497509295939492505050565b6000602082840312156107a8578081fd5b815180151581146107b7578182fd5b9392505050565b6000602082840312156107cf578081fd5b81356001600160e01b0319811681146107b7578182fd5b6000602082840312156107f7578081fd5b5035919050565b60008060008060008060a08789031215610816578182fd5b86359550610826602088016105ca565b94506040870135935060608701359250608087013567ffffffffffffffff81111561084f578283fd5b61078589828a016105e1565b918252602082015260400190565b93845260609290921b6bffffffffffffffffffffffff191660208401526034830152605482015260740190565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156108e85785810182015185820160c0015281016108cc565b828111156108f9578360c084870101525b5050601f01601f19169190910160c0019695505050505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b6001600160a01b0391909116815260200190565b60208082526028908201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060408201526731b630b4b6b2b21760c11b606082015260800190565b60208082526021908201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666040820152601760f91b606082015260800190565b60208082526023908201527f4d65726b6c654469737472696275746f723a205472616e73666572206661696c60408201526232b21760e91b606082015260800190565b600082610a4457610a44610a84565b500490565b6000600019821415610a6957634e487b7160e01b81526011600452602481fd5b5060010190565b600082610a7f57610a7f610a84565b500690565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220acdb646ece506c985500e267b4eb06d7e5aebd34ce9e82bd7523a470a5441d3664736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000eaba187306335dd773ca8042b3792c46e213636a0000000000000000000000004d95adfedd17c3b604e8658cf26d137409c872f92aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e
-----Decoded View---------------
Arg [0] : token_ (address): 0xEAbA187306335dd773Ca8042b3792c46E213636a
Arg [1] : erc1155_ (address): 0x4d95aDfeDD17c3b604e8658CF26d137409C872F9
Arg [2] : merkleRoot_ (bytes32): 0x2aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000eaba187306335dd773ca8042b3792c46e213636a
Arg [1] : 0000000000000000000000004d95adfedd17c3b604e8658cf26d137409c872f9
Arg [2] : 2aa7d3cab93e1bb6bacac24beddaf5eb9784d96eb9ae5db385aa5e14e3fdd34e
Deployed Bytecode Sourcemap
222:2412:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:225;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;340:35;;;:::i;:::-;;;;;;;:::i;1234:704::-;;;;;;:::i;:::-;;:::i;:::-;;720:283;;;;;;:::i;:::-;;:::i;2157:247::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;304:33::-;;;:::i;:::-;;;;;;;:::i;1941:213::-;;;;;;:::i;:::-;;:::i;272:29::-;;;:::i;2407:225::-;2486:4;-1:-1:-1;;;;;;2503:58:5;;-1:-1:-1;;;2503:58:5;;:125;;-1:-1:-1;;;;;;;2565:63:5;;-1:-1:-1;;;2565:63:5;2503:125;2496:132;;2407:225;;;;:::o;340:35::-;;;:::o;1234:704::-;1381:16;1391:5;1381:9;:16::i;:::-;1380:17;1372:70;;;;-1:-1:-1;;;1372:70:5;;;;;;;:::i;:::-;;;;;;;;;1476:12;1518:5;1525:7;1534:6;1542:7;1501:49;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1491:60;;;;;;1476:75;;1563:49;1582:11;;1563:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1595:10:5;;-1:-1:-1;1607:4:5;;-1:-1:-1;1563:18:5;;-1:-1:-1;1563:49:5:i;:::-;1555:95;;;;-1:-1:-1;;;1555:95:5;;;;;;;:::i;:::-;1696:18;1708:5;1696:11;:18::i;:::-;1727:39;;-1:-1:-1;;;1727:39:5;;-1:-1:-1;;;;;1734:5:5;1727:22;;;;:39;;1750:7;;1759:6;;1727:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1719:87;;;;-1:-1:-1;;;1719:87:5;;;;;;;:::i;:::-;1871:12;;;1881:1;1871:12;;;;;;;;;-1:-1:-1;;;1810:74:5;;;-1:-1:-1;;;;;1810:7:5;:24;;;;:74;;1843:4;;1850:7;;1859;;1868:1;;1810:74;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1909:7;-1:-1:-1;;;;;1894:40:5;1902:5;1894:40;1918:6;1926:7;1894:40;;;;;;;:::i;:::-;;;;;;;;1234:704;;;;;;;:::o;720:283::-;775:4;;812:11;820:3;812:5;:11;:::i;:::-;785:38;-1:-1:-1;827:23:5;853:11;861:3;853:5;:11;:::i;:::-;868:19;890:31;;;;;;;;;;;;941:1;:20;;;973:18;;;:26;;;;720:283;-1:-1:-1;;;720:283:5:o;2157:247::-;-1:-1:-1;;;2157:247:5;;;;;;;;;;:::o;304:33::-;;;:::o;1941:213::-;-1:-1:-1;;;1941:213:5;;;;;;;;:::o;272:29::-;;;:::o;777:809:6:-;898:4;937;898;952:515;976:5;:12;972:1;:16;952:515;;;1009:20;1032:5;1038:1;1032:8;;;;;;-1:-1:-1;;;1032:8:6;;;;;;;;;;;;;;;1009:31;;1075:12;1059;:28;1055:402;;1227:12;1241;1210:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1200:55;;;;;;1185:70;;1055:402;;;1414:12;1428;1397:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1387:55;;;;;;1372:70;;1055:402;-1:-1:-1;990:3:6;;;;:::i;:::-;;;;952:515;;;-1:-1:-1;1559:20:6;;;;777:809;-1:-1:-1;;;777:809:6:o;1006:225:5:-;1054:24;1081:11;1089:3;1081:5;:11;:::i;:::-;1054:38;-1:-1:-1;1096:23:5;1122:11;1130:3;1122:5;:11;:::i;:::-;1171:13;:31;;;;;;;;;;;;;1206:1;:20;;;1171:56;;;1137:90;;;-1:-1:-1;;1006:225:5:o;14:175:7:-;84:20;;-1:-1:-1;;;;;133:31:7;;123:42;;113:2;;179:1;176;169:12;194:404;;;327:3;320:4;312:6;308:17;304:27;294:2;;352:8;342;335:26;294:2;-1:-1:-1;382:20:7;;425:18;414:30;;411:2;;;464:8;454;447:26;411:2;508:4;500:6;496:17;484:29;;571:3;564:4;556;548:6;544:17;536:6;532:30;528:41;525:50;522:2;;;588:1;585;578:12;522:2;284:314;;;;;:::o;603:377::-;;;720:3;713:4;705:6;701:17;697:27;687:2;;745:8;735;728:26;687:2;-1:-1:-1;775:20:7;;818:18;807:30;;804:2;;;857:8;847;840:26;804:2;901:4;893:6;889:17;877:29;;953:3;946:4;937:6;929;925:19;921:30;918:39;915:2;;;970:1;967;960:12;985:1268;;;;;;;;;1254:3;1242:9;1233:7;1229:23;1225:33;1222:2;;;1276:6;1268;1261:22;1222:2;1304:31;1325:9;1304:31;:::i;:::-;1294:41;;1354:40;1390:2;1379:9;1375:18;1354:40;:::i;:::-;1344:50;;1445:2;1434:9;1430:18;1417:32;1468:18;1509:2;1501:6;1498:14;1495:2;;;1530:6;1522;1515:22;1495:2;1574:76;1642:7;1633:6;1622:9;1618:22;1574:76;:::i;:::-;1669:8;;-1:-1:-1;1548:102:7;-1:-1:-1;1757:2:7;1742:18;;1729:32;;-1:-1:-1;1773:16:7;;;1770:2;;;1807:6;1799;1792:22;1770:2;1851:78;1921:7;1910:8;1899:9;1895:24;1851:78;:::i;:::-;1948:8;;-1:-1:-1;1825:104:7;-1:-1:-1;2036:3:7;2021:19;;2008:33;;-1:-1:-1;2053:16:7;;;2050:2;;;2087:6;2079;2072:22;2050:2;;2131:62;2185:7;2174:8;2163:9;2159:24;2131:62;:::i;:::-;1212:1041;;;;-1:-1:-1;1212:1041:7;;-1:-1:-1;1212:1041:7;;;;;;2212:8;-1:-1:-1;;;1212:1041:7:o;2258:721::-;;;;;;;2457:3;2445:9;2436:7;2432:23;2428:33;2425:2;;;2479:6;2471;2464:22;2425:2;2507:31;2528:9;2507:31;:::i;:::-;2497:41;;2557:40;2593:2;2582:9;2578:18;2557:40;:::i;:::-;2547:50;;2644:2;2633:9;2629:18;2616:32;2606:42;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:3;2739:9;2735:19;2722:33;2778:18;2770:6;2767:30;2764:2;;;2815:6;2807;2800:22;2764:2;2859:60;2911:7;2902:6;2891:9;2887:22;2859:60;:::i;:::-;2415:564;;;;-1:-1:-1;2415:564:7;;-1:-1:-1;2415:564:7;;2938:8;;2415:564;-1:-1:-1;;;2415:564:7:o;2984:297::-;;3104:2;3092:9;3083:7;3079:23;3075:32;3072:2;;;3125:6;3117;3110:22;3072:2;3162:9;3156:16;3215:5;3208:13;3201:21;3194:5;3191:32;3181:2;;3242:6;3234;3227:22;3181:2;3270:5;3062:219;-1:-1:-1;;;3062:219:7:o;3286:306::-;;3397:2;3385:9;3376:7;3372:23;3368:32;3365:2;;;3418:6;3410;3403:22;3365:2;3449:23;;-1:-1:-1;;;;;;3501:32:7;;3491:43;;3481:2;;3553:6;3545;3538:22;3597:190;;3709:2;3697:9;3688:7;3684:23;3680:32;3677:2;;;3730:6;3722;3715:22;3677:2;-1:-1:-1;3758:23:7;;3667:120;-1:-1:-1;3667:120:7:o;3792:745::-;;;;;;;4007:3;3995:9;3986:7;3982:23;3978:33;3975:2;;;4029:6;4021;4014:22;3975:2;4070:9;4057:23;4047:33;;4099:40;4135:2;4124:9;4120:18;4099:40;:::i;:::-;4089:50;;4186:2;4175:9;4171:18;4158:32;4148:42;;4237:2;4226:9;4222:18;4209:32;4199:42;;4292:3;4281:9;4277:19;4264:33;4320:18;4312:6;4309:30;4306:2;;;4357:6;4349;4342:22;4306:2;4401:76;4469:7;4460:6;4449:9;4445:22;4401:76;:::i;4542:247::-;4699:19;;;4743:2;4734:12;;4727:28;4780:2;4771:12;;4689:100::o;4794:425::-;5007:19;;;5064:2;5060:15;;;;-1:-1:-1;;5056:53:7;5051:2;5042:12;;5035:75;5135:2;5126:12;;5119:28;5172:2;5163:12;;5156:28;5209:3;5200:13;;4997:222::o;5224:955::-;;5500:1;5496;5491:3;5487:11;5483:19;5541:2;5533:6;5529:15;5518:9;5511:34;5564:2;5614;5606:6;5602:15;5597:2;5586:9;5582:18;5575:43;5654:6;5649:2;5638:9;5634:18;5627:34;5697:6;5692:2;5681:9;5677:18;5670:34;5741:3;5735;5724:9;5720:19;5713:32;5774:6;5768:13;5754:27;;5818:6;5812:3;5801:9;5797:19;5790:35;5843:4;5856:141;5870:6;5867:1;5864:13;5856:141;;;5966:14;;;5962:23;;5956:30;5931:17;;;5950:3;5927:27;5920:67;5885:10;;5856:141;;;6015:6;6012:1;6009:13;6006:2;;;6086:4;6080:3;6071:6;6060:9;6056:22;6052:32;6045:46;6006:2;-1:-1:-1;;6162:2:7;6141:15;-1:-1:-1;;6137:29:7;6122:45;;;;6169:3;6118:55;;5463:716;-1:-1:-1;;;;;;5463:716:7:o;6184:274::-;-1:-1:-1;;;;;6376:32:7;;;;6358:51;;6440:2;6425:18;;6418:34;6346:2;6331:18;;6313:145::o;6463:187::-;6628:14;;6621:22;6603:41;;6591:2;6576:18;;6558:92::o;6655:177::-;6801:25;;;6789:2;6774:18;;6756:76::o;6837:202::-;-1:-1:-1;;;;;;6999:33:7;;;;6981:52;;6969:2;6954:18;;6936:103::o;7044:219::-;-1:-1:-1;;;;;7224:32:7;;;;7206:51;;7194:2;7179:18;;7161:102::o;7490:404::-;7692:2;7674:21;;;7731:2;7711:18;;;7704:30;7770:34;7765:2;7750:18;;7743:62;-1:-1:-1;;;7836:2:7;7821:18;;7814:38;7884:3;7869:19;;7664:230::o;7899:397::-;8101:2;8083:21;;;8140:2;8120:18;;;8113:30;8179:34;8174:2;8159:18;;8152:62;-1:-1:-1;;;8245:2:7;8230:18;;8223:31;8286:3;8271:19;;8073:223::o;8301:399::-;8503:2;8485:21;;;8542:2;8522:18;;;8515:30;8581:34;8576:2;8561:18;;8554:62;-1:-1:-1;;;8647:2:7;8632:18;;8625:33;8690:3;8675:19;;8475:225::o;8958:120::-;;9024:1;9014:2;;9029:18;;:::i;:::-;-1:-1:-1;9063:9:7;;9004:74::o;9083:236::-;;-1:-1:-1;;9143:17:7;;9140:2;;;-1:-1:-1;;;9183:33:7;;9239:4;9236:1;9229:15;9269:4;9190:3;9257:17;9140:2;-1:-1:-1;9311:1:7;9300:13;;9130:189::o;9324:112::-;;9382:1;9372:2;;9387:18;;:::i;:::-;-1:-1:-1;9421:9:7;;9362:74::o;9441:127::-;9502:10;9497:3;9493:20;9490:1;9483:31;9533:4;9530:1;9523:15;9557:4;9554:1;9547:15
Swarm Source
ipfs://acdb646ece506c985500e267b4eb06d7e5aebd34ce9e82bd7523a470a5441d36
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.