Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,083 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 18504290 | 384 days ago | IN | 0 ETH | 0.00055411 | ||||
Mint | 18504290 | 384 days ago | IN | 0 ETH | 0.00060973 | ||||
Mint | 18504290 | 384 days ago | IN | 0 ETH | 0.00055411 | ||||
Mint | 18504290 | 384 days ago | IN | 0 ETH | 0.00055411 | ||||
Mint | 17976426 | 458 days ago | IN | 0 ETH | 0.00161593 | ||||
Mint | 17876775 | 472 days ago | IN | 0 ETH | 0.00168236 | ||||
Mint | 17029524 | 591 days ago | IN | 0 ETH | 0.00208048 | ||||
Mint | 16896605 | 610 days ago | IN | 0 ETH | 0.00155241 | ||||
Mint | 16896574 | 610 days ago | IN | 0 ETH | 0.00156073 | ||||
Mint | 16896551 | 610 days ago | IN | 0 ETH | 0.00153902 | ||||
Mint | 16896530 | 610 days ago | IN | 0 ETH | 0.00147452 | ||||
Mint | 16896513 | 610 days ago | IN | 0 ETH | 0.00150342 | ||||
Mint | 16896484 | 610 days ago | IN | 0 ETH | 0.00162052 | ||||
Mint | 16896467 | 610 days ago | IN | 0 ETH | 0.0014617 | ||||
Mint | 16896440 | 610 days ago | IN | 0 ETH | 0.00154722 | ||||
Mint | 16896414 | 610 days ago | IN | 0 ETH | 0.00185718 | ||||
Mint | 16890962 | 610 days ago | IN | 0 ETH | 0.00322331 | ||||
Mint | 16745448 | 631 days ago | IN | 0 ETH | 0.00236329 | ||||
Mint | 16570599 | 655 days ago | IN | 0 ETH | 0.00256208 | ||||
Mint | 16525226 | 662 days ago | IN | 0 ETH | 0.00153962 | ||||
Mint | 16383922 | 681 days ago | IN | 0 ETH | 0.00230592 | ||||
Mint | 16383909 | 681 days ago | IN | 0 ETH | 0.00246202 | ||||
Mint | 16383893 | 681 days ago | IN | 0 ETH | 0.00260384 | ||||
Mint | 16378339 | 682 days ago | IN | 0 ETH | 0.00219271 | ||||
Mint | 16378315 | 682 days ago | IN | 0 ETH | 0.00230145 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Minter
Compiler Version
v0.8.3+commit.8d00100c
Optimization Enabled:
Yes with 7500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./ElfNFT.sol"; contract Minter is Authorizable { // The ERC721 contract to mint ElfNFT public immutable elfNFT; // The merkle root with deposits encoded into it as hash [address, tokenId] // Assumed to be a node sorted tree bytes32 public merkleRoot; constructor(address _token, bytes32 _merkleRoot) { elfNFT = ElfNFT(_token); merkleRoot = _merkleRoot; } /// @notice mints an NFT for an approved account in the merkle tree /// @param tokenId the unique id for the token /// @param merkleProof the merkle proof associated with the sender's address /// and tokenId that validates minting function mint(uint256 tokenId, bytes32[] memory merkleProof) public { // Hash the user plus the token id bytes32 leafHash = keccak256(abi.encodePacked(msg.sender, tokenId)); // Verify the proof for this leaf require( MerkleProof.verify(merkleProof, merkleRoot, leafHash), "Invalid Proof" ); // mint the token, assuming it hasn't already been minted elfNFT.mint(msg.sender, tokenId); } function setRewardsRoot(bytes32 _merkleRoot) public onlyOwner { merkleRoot = _merkleRoot; } // because we may change conditions for minting down the road, allow // transferring ownership of the NFT contract to a new minter. function transferNFTOwnership(address newOwner) public onlyOwner { elfNFT.setOwner(newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } return computedHash; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; import "@rari-capital/solmate/src/tokens/ERC721.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "./Authorizable.sol"; contract ElfNFT is ERC721, Authorizable { using Strings for uint256; string public baseURI; uint256 public count; /// @notice constructor /// @param _name the name of the NFT /// @param _symbol the symbol of the NFT constructor( string memory _name, string memory _symbol, address _owner, string memory _baseURI ) ERC721(_name, _symbol) { setOwner(_owner); // don't use setBaseURI since deployer isn't authorized yet baseURI = _baseURI; } /// @notice retrieves the tokenURI, which will be a concatenation of the /// 'baseURI' and the 'tokenId' /// @param tokenId an identifier for the token function tokenURI(uint256 tokenId) public view override returns (string memory) { return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, "/", tokenId.toString())) : ""; } function setBaseURI(string memory _baseURI) public onlyAuthorized { baseURI = _baseURI; } function mint(address to, uint256 tokenId) public onlyOwner { _mint(to, tokenId); count++; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern, minimalist, and gas efficient ERC-721 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol) /// @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC. abstract contract ERC721 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*/////////////////////////////////////////////////////////////// METADATA STORAGE/LOGIC //////////////////////////////////////////////////////////////*/ string public name; string public symbol; function tokenURI(uint256 id) public view virtual returns (string memory); /*/////////////////////////////////////////////////////////////// ERC721 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => uint256) public balanceOf; mapping(uint256 => address) public ownerOf; mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*/////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; } /*/////////////////////////////////////////////////////////////// ERC721 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 id) public virtual { address owner = ownerOf[id]; require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); getApproved[id] = spender; emit Approval(owner, spender, id); } function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom( address from, address to, uint256 id ) public virtual { require(from == ownerOf[id], "WRONG_FROM"); require(to != address(0), "INVALID_RECIPIENT"); require( msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. unchecked { balanceOf[from]--; balanceOf[to]++; } ownerOf[id] = to; delete getApproved[id]; emit Transfer(from, to, id); } function safeTransferFrom( address from, address to, uint256 id ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function safeTransferFrom( address from, address to, uint256 id, bytes memory data ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*/////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 id) internal virtual { require(to != address(0), "INVALID_RECIPIENT"); require(ownerOf[id] == address(0), "ALREADY_MINTED"); // Counter overflow is incredibly unrealistic. unchecked { balanceOf[to]++; } ownerOf[id] = to; emit Transfer(address(0), to, id); } function _burn(uint256 id) internal virtual { address owner = ownerOf[id]; require(ownerOf[id] != address(0), "NOT_MINTED"); // Ownership check above ensures no underflow. unchecked { balanceOf[owner]--; } delete ownerOf[id]; delete getApproved[id]; emit Transfer(owner, address(0), id); } /*/////////////////////////////////////////////////////////////// INTERNAL SAFE MINT LOGIC //////////////////////////////////////////////////////////////*/ function _safeMint(address to, uint256 id) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function _safeMint( address to, uint256 id, bytes memory data ) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } } /// @notice A generic interface for a contract which properly accepts ERC721 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol) interface ERC721TokenReceiver { function onERC721Received( address operator, address from, uint256 id, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; contract Authorizable { // This contract allows a flexible authorization scheme // The owner who can change authorization status address public owner; // A mapping from an address to its authorization status mapping(address => bool) public authorized; /// @dev We set the deployer to the owner constructor() { owner = msg.sender; } /// @dev This modifier checks if the msg.sender is the owner modifier onlyOwner() { require(msg.sender == owner, "Sender not owner"); _; } /// @dev This modifier checks if an address is authorized modifier onlyAuthorized() { require(isAuthorized(msg.sender), "Sender not Authorized"); _; } /// @dev Returns true if an address is authorized /// @param who the address to check /// @return true if authorized false if not function isAuthorized(address who) public view returns (bool) { return authorized[who]; } /// @dev Privileged function authorize an address /// @param who the address to authorize function authorize(address who) external onlyOwner { _authorize(who); } /// @dev Privileged function to de authorize an address /// @param who The address to remove authorization from function deauthorize(address who) external onlyOwner { authorized[who] = false; } /// @dev Function to change owner /// @param who The new owner address function setOwner(address who) public onlyOwner { owner = who; } /// @dev Inheritable function which authorizes someone /// @param who the address to authorize function _authorize(address who) internal { authorized[who] = true; } }
{ "optimizer": { "enabled": true, "runs": 7500 }, "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"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"deauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"elfNFT","outputs":[{"internalType":"contract ElfNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"isAuthorized","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setRewardsRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferNFTOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610b70380380610b7083398101604081905261002f9161005e565b60008054336001600160a01b031990911617905560609190911b6001600160601b031916608052600255610096565b60008060408385031215610070578182fd5b82516001600160a01b0381168114610086578283fd5b6020939093015192949293505050565b60805160601c610aaf6100c16000396000818160e80152818161049601526106ca0152610aaf6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b11610081578063ba41b0c61161005b578063ba41b0c6146101d7578063d697a1a9146101ea578063fe9fbb80146101fd576100c9565b80638da5cb5b14610171578063b6a5d7de14610191578063b9181611146101a4576100c9565b806327c97fa5116100b257806327c97fa5146101345780632eb4a7ab146101475780633f17493d1461015e576100c9565b806313af4035146100ce57806320c590bc146100e3575b600080fd5b6100e16100dc3660046108af565b610236565b005b61010a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e16101423660046108af565b610303565b61015060025481565b60405190815260200161012b565b6100e161016c3660046108af565b6103d0565b60005461010a9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e161019f3660046108af565b6104f5565b6101c76101b23660046108af565b60016020526000908152604090205460ff1681565b604051901515815260200161012b565b6100e16101e5366004610902565b6105cf565b6100e16101f83660046108ea565b610740565b6101c761020b3660046108af565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b6040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f000000000000000000000000000000000000000000000000000000000000000016906313af403590602401600060405180830381600087803b1580156104da57600080fd5b505af11580156104ee573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b6105cc8173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201526034810183905260009060540160405160208183030381529060405280519060200120905061062f82600254836107c6565b610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016102b3565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b600255565b6000826107d385846107dc565b14949350505050565b600081815b84518110156108a7576000858281518110610825577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610867576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610894565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061089f816109ec565b9150506107e1565b509392505050565b6000602082840312156108c0578081fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e3578182fd5b9392505050565b6000602082840312156108fb578081fd5b5035919050565b60008060408385031215610914578081fd5b8235915060208084013567ffffffffffffffff80821115610933578384fd5b818601915086601f830112610946578384fd5b81358181111561095857610958610a4a565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561099b5761099b610a4a565b604052828152858101935084860182860187018b10156109b9578788fd5b8795505b838610156109db5780358552600195909501949386019386016109bd565b508096505050505050509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610a43577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220670d15becb38f6dba2b9c596a1c2985086aa7d42962c9a6f16f860650ca7ea2964736f6c63430008030033000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b5dcb25b2f04e6cde986427dfd8cda532dd75c0cd5db62bf8046edd05f62229e04
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b11610081578063ba41b0c61161005b578063ba41b0c6146101d7578063d697a1a9146101ea578063fe9fbb80146101fd576100c9565b80638da5cb5b14610171578063b6a5d7de14610191578063b9181611146101a4576100c9565b806327c97fa5116100b257806327c97fa5146101345780632eb4a7ab146101475780633f17493d1461015e576100c9565b806313af4035146100ce57806320c590bc146100e3575b600080fd5b6100e16100dc3660046108af565b610236565b005b61010a7f000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b581565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e16101423660046108af565b610303565b61015060025481565b60405190815260200161012b565b6100e161016c3660046108af565b6103d0565b60005461010a9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e161019f3660046108af565b6104f5565b6101c76101b23660046108af565b60016020526000908152604090205460ff1681565b604051901515815260200161012b565b6100e16101e5366004610902565b6105cf565b6100e16101f83660046108ea565b610740565b6101c761020b3660046108af565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b6040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b516906313af403590602401600060405180830381600087803b1580156104da57600080fd5b505af11580156104ee573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b6105cc8173ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b50565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201526034810183905260009060540160405160208183030381529060405280519060200120905061062f82600254836107c6565b610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642050726f6f660000000000000000000000000000000000000060448201526064016102b3565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b573ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064016102b3565b600255565b6000826107d385846107dc565b14949350505050565b600081815b84518110156108a7576000858281518110610825577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311610867576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610894565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061089f816109ec565b9150506107e1565b509392505050565b6000602082840312156108c0578081fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e3578182fd5b9392505050565b6000602082840312156108fb578081fd5b5035919050565b60008060408385031215610914578081fd5b8235915060208084013567ffffffffffffffff80821115610933578384fd5b818601915086601f830112610946578384fd5b81358181111561095857610958610a4a565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561099b5761099b610a4a565b604052828152858101935084860182860187018b10156109b9578788fd5b8795505b838610156109db5780358552600195909501949386019386016109bd565b508096505050505050509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610a43577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220670d15becb38f6dba2b9c596a1c2985086aa7d42962c9a6f16f860650ca7ea2964736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b5dcb25b2f04e6cde986427dfd8cda532dd75c0cd5db62bf8046edd05f62229e04
-----Decoded View---------------
Arg [0] : _token (address): 0xDb042927c36791Bd500698c7d1bD81b6864229b5
Arg [1] : _merkleRoot (bytes32): 0xdcb25b2f04e6cde986427dfd8cda532dd75c0cd5db62bf8046edd05f62229e04
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000db042927c36791bd500698c7d1bd81b6864229b5
Arg [1] : dcb25b2f04e6cde986427dfd8cda532dd75c0cd5db62bf8046edd05f62229e04
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.