Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 269 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18887306 | 282 days ago | IN | 0 ETH | 0.00056247 | ||||
Mint | 18887156 | 282 days ago | IN | 0.011 ETH | 0.00049487 | ||||
Mint | 18887155 | 282 days ago | IN | 0.011 ETH | 0.00071429 | ||||
Mint | 18887154 | 282 days ago | IN | 0.011 ETH | 0.00103718 | ||||
Mint | 18887150 | 282 days ago | IN | 0.033 ETH | 0.00105618 | ||||
Mint | 18887142 | 282 days ago | IN | 0.011 ETH | 0.00098089 | ||||
Mint | 18887141 | 282 days ago | IN | 0.011 ETH | 0.0006854 | ||||
Mint | 18887135 | 282 days ago | IN | 0.011 ETH | 0.0010573 | ||||
Mint | 18887126 | 282 days ago | IN | 0.011 ETH | 0.00100398 | ||||
Mint | 18887126 | 282 days ago | IN | 0.033 ETH | 0.00068297 | ||||
Mint | 18887125 | 282 days ago | IN | 0.055 ETH | 0.00101 | ||||
Mint | 18887124 | 282 days ago | IN | 0.022 ETH | 0.00064678 | ||||
Mint | 18887108 | 282 days ago | IN | 0.055 ETH | 0.0011019 | ||||
Mint | 18887107 | 282 days ago | IN | 0.011 ETH | 0.00075305 | ||||
Mint | 18887105 | 282 days ago | IN | 0.011 ETH | 0.00070132 | ||||
Mint | 18887104 | 282 days ago | IN | 0.011 ETH | 0.00069411 | ||||
Mint | 18887099 | 282 days ago | IN | 0.011 ETH | 0.00074512 | ||||
Mint | 18887097 | 282 days ago | IN | 0.011 ETH | 0.00065272 | ||||
Mint | 18887095 | 282 days ago | IN | 0.011 ETH | 0.00100174 | ||||
Mint | 18887088 | 282 days ago | IN | 0.011 ETH | 0.00067342 | ||||
Mint | 18887084 | 282 days ago | IN | 0.022 ETH | 0.0009801 | ||||
Mint | 18887065 | 282 days ago | IN | 0.022 ETH | 0.00098836 | ||||
Mint | 18887049 | 282 days ago | IN | 0.022 ETH | 0.00104886 | ||||
Mint | 18887045 | 282 days ago | IN | 0.011 ETH | 0.00100104 | ||||
Mint | 18887034 | 282 days ago | IN | 0.011 ETH | 0.0009935 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18887306 | 282 days ago | 5.9675 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Darknezz
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.13; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; contract Darknezz { error MaxSupplyReached(); error UserMaxSupplyReached(); error InvalidValue(); error RequestingTooMany(); error TransferFailed(); error OnlyOwner(); error WlMintNotActive(); error MintNotActive(); event Mint(address indexed minter, uint256 indexed amount, uint256 startID); uint256 public TOTAL_SUPPLY = 0; mapping (address=>uint16) balances; mapping (address=>uint16) wlBalances; uint256 public immutable WL_PRICE = 0.0055 * 1 ether; uint256 public immutable PRICE = 0.0110 * 1 ether; uint256 public immutable MAX_SUPPLY = 555; uint public immutable MAX_PER_WALLET_WL = 3; uint16 public immutable MAX_PER_WALLET = 5; bool public wlMintActive = false; bool public mintActive = false; bytes32 public merkleRoot; address OWNER; modifier onlyOwner() { if (msg.sender != OWNER) { revert OnlyOwner(); } _; } constructor (bytes32 _merkleRoot) { OWNER = msg.sender; merkleRoot = _merkleRoot; } function setWlMintActive(bool _wlMintActive) external onlyOwner { wlMintActive = _wlMintActive; } function setMintActive(bool _mintActive) external onlyOwner { mintActive = _mintActive; } function getWlBalance(address _address) external view returns (uint16) { return wlBalances[_address]; } function getBalance(address _address) external view returns (uint16) { return balances[_address]; } function setMerkleRoot(bytes32 _merkleRoot) external onlyOwner { merkleRoot = _merkleRoot; } function setOwner(address _owner) external onlyOwner { OWNER = _owner; } function wlMint(uint256 amount,bytes32[] memory proof) external payable { if (!wlMintActive) { revert WlMintNotActive(); } if (TOTAL_SUPPLY == MAX_SUPPLY) { revert MaxSupplyReached(); } if ((TOTAL_SUPPLY + amount) > MAX_SUPPLY) { revert RequestingTooMany(); } if ((WL_PRICE * amount) != msg.value) { revert InvalidValue(); } if (wlBalances[msg.sender] + amount > MAX_PER_WALLET_WL) { revert UserMaxSupplyReached(); } bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(proof, merkleRoot, leaf), "Invalid proof"); emit Mint(msg.sender, amount, TOTAL_SUPPLY); unchecked { TOTAL_SUPPLY += amount; wlBalances[msg.sender] += uint16(amount); } } function mint(uint256 amount) external payable { if (!mintActive) { revert MintNotActive(); } if (TOTAL_SUPPLY == MAX_SUPPLY) { revert MaxSupplyReached(); } if ((TOTAL_SUPPLY + amount) > MAX_SUPPLY) { revert RequestingTooMany(); } if ((PRICE * amount) != msg.value) { revert InvalidValue(); } if (balances[msg.sender] + amount > MAX_PER_WALLET) { revert UserMaxSupplyReached(); } emit Mint(msg.sender, amount, TOTAL_SUPPLY); unchecked { TOTAL_SUPPLY += amount; balances[msg.sender] += uint16(amount); } } function withdraw() external onlyOwner { (bool success,) = address(OWNER).call{value: address(this).balance}(""); if (!success) { revert TransferFailed(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.20; /** * @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 The multiproof provided is not valid. */ error MerkleProofInvalidMultiproof(); /** * @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} */ 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. */ 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} */ 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. */ 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. */ 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). */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds 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 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // 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 from 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) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { 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. */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds 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 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // 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 from 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) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { return hashes[totalHashes - 1]; } } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Sorts the pair (a, b) and hashes the result. */ function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } /** * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory. */ 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) } } }
{ "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidValue","type":"error"},{"inputs":[],"name":"MaxSupplyReached","type":"error"},{"inputs":[],"name":"MintNotActive","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"RequestingTooMany","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"UserMaxSupplyReached","type":"error"},{"inputs":[],"name":"WlMintNotActive","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startID","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_WALLET_WL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WL_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getWlBalance","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_mintActive","type":"bool"}],"name":"setMintActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_wlMintActive","type":"bool"}],"name":"setWlMintActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"wlMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wlMintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040526000805566138a388a43c000608052662714711487800060a05261022b60c052600360e0819052600561010052805461ffff1916905534801561004757600080fd5b50604051610d21380380610d2183398101604081905261006691610080565b600580546001600160a01b03191633179055600455610099565b60006020828403121561009257600080fd5b5051919050565b60805160a05160c05160e05161010051610c0c61011560003960008181610120015261086b0152600081816102e501526105db015260008181610215015281816104f2015281816105340152818161077f01526107c101526000818161031901526108140152600081816101e101526105870152610c0c6000f3fe6080604052600436106101095760003560e01c806351222f3311610095578063902d55a511610064578063902d55a51461033b578063a0712d6814610351578063c91be70d14610364578063ee1cc94414610384578063f8b2cb4f146103a457600080fd5b806351222f33146102995780637cb64759146102b3578063828122ab146102d35780638d859f3e1461030757600080fd5b806331c3c7a0116100dc57806331c3c7a0146101cf57806332cb6b0c146102035780633ccfd60b146102375780633ef0d36d1461024c5780634f8ed95c1461025f57600080fd5b80630f2cdd6c1461010e57806313af40351461015a57806325fd90f31461017c5780632eb4a7ab146101ab575b600080fd5b34801561011a57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020015b60405180910390f35b34801561016657600080fd5b5061017a610175366004610a3c565b6103de565b005b34801561018857600080fd5b5060035461019b90610100900460ff1681565b6040519015158152602001610151565b3480156101b757600080fd5b506101c160045481565b604051908152602001610151565b3480156101db57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561020f57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561024357600080fd5b5061017a61042b565b61017a61025a366004610a7b565b6104cd565b34801561026b57600080fd5b5061014261027a366004610a3c565b6001600160a01b031660009081526002602052604090205461ffff1690565b3480156102a557600080fd5b5060035461019b9060ff1681565b3480156102bf57600080fd5b5061017a6102ce366004610b45565b610725565b3480156102df57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561031357600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561034757600080fd5b506101c160005481565b61017a61035f366004610b45565b610755565b34801561037057600080fd5b5061017a61037f366004610b5e565b61092c565b34801561039057600080fd5b5061017a61039f366004610b5e565b61096a565b3480156103b057600080fd5b506101426103bf366004610a3c565b6001600160a01b031660009081526001602052604090205461ffff1690565b6005546001600160a01b0316331461040957604051635fc483c560e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461045657604051635fc483c560e01b815260040160405180910390fd5b6005546040516000916001600160a01b03169047908381818185875af1925050503d80600081146104a3576040519150601f19603f3d011682016040523d82523d6000602084013e6104a8565b606091505b50509050806104ca576040516312171d8360e31b815260040160405180910390fd5b50565b60035460ff166104f05760405163ed5bf9ab60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600054036105325760405163d05cb60960e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000826000546105619190610b96565b111561058057604051639e0456c360e01b815260040160405180910390fd5b346105ab837f0000000000000000000000000000000000000000000000000000000000000000610ba9565b146105c957604051632a9ffab760e21b815260040160405180910390fd5b336000908152600260205260409020547f00000000000000000000000000000000000000000000000000000000000000009061060a90849061ffff16610b96565b111561062957604051630157715d60e61b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061066f82600454836109af565b6106af5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640160405180910390fd5b82336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f6000546040516106ed91815260200190565b60405180910390a350506000805482018155338152600260205260409020805461ffff19811661ffff91821690930116919091179055565b6005546001600160a01b0316331461075057604051635fc483c560e01b815260040160405180910390fd5b600455565b600354610100900460ff1661077d5760405163914edb0f60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600054036107bf5760405163d05cb60960e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000816000546107ee9190610b96565b111561080d57604051639e0456c360e01b815260040160405180910390fd5b34610838827f0000000000000000000000000000000000000000000000000000000000000000610ba9565b1461085657604051632a9ffab760e21b815260040160405180910390fd5b3360009081526001602052604090205461ffff7f000000000000000000000000000000000000000000000000000000000000000081169161089991849116610b96565b11156108b857604051630157715d60e61b815260040160405180910390fd5b80336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f6000546040516108f691815260200190565b60405180910390a36000805482018155338152600160205260409020805461ffff19811661ffff91821690930116919091179055565b6005546001600160a01b0316331461095757604051635fc483c560e01b815260040160405180910390fd5b6003805460ff1916911515919091179055565b6005546001600160a01b0316331461099557604051635fc483c560e01b815260040160405180910390fd5b600380549115156101000261ff0019909216919091179055565b6000826109bc85846109c5565b14949350505050565b600081815b8451811015610a00576109f6828683815181106109e9576109e9610bc0565b6020026020010151610a0a565b91506001016109ca565b5090505b92915050565b6000818310610a26576000828152602084905260409020610a35565b60008381526020839052604090205b9392505050565b600060208284031215610a4e57600080fd5b81356001600160a01b0381168114610a3557600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610a8e57600080fd5b8235915060208084013567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad457610ad4610a65565b8060051b604051601f19603f83011681018181108582111715610af957610af9610a65565b604052918252848201925083810185019189831115610b1757600080fd5b938501935b82851015610b3557843584529385019392850192610b1c565b8096505050505050509250929050565b600060208284031215610b5757600080fd5b5035919050565b600060208284031215610b7057600080fd5b81358015158114610a3557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0457610a04610b80565b8082028115828204841417610a0457610a04610b80565b634e487b7160e01b600052603260045260246000fdfea26469706673582212204da051f136372bc18de018c90b3e77146328d1b886f199bf50ec4168af838bc164736f6c634300081700338d4e0b71c1101d533a72376cd3197ab218c056f023425dd7652e46174b690b61
Deployed Bytecode
0x6080604052600436106101095760003560e01c806351222f3311610095578063902d55a511610064578063902d55a51461033b578063a0712d6814610351578063c91be70d14610364578063ee1cc94414610384578063f8b2cb4f146103a457600080fd5b806351222f33146102995780637cb64759146102b3578063828122ab146102d35780638d859f3e1461030757600080fd5b806331c3c7a0116100dc57806331c3c7a0146101cf57806332cb6b0c146102035780633ccfd60b146102375780633ef0d36d1461024c5780634f8ed95c1461025f57600080fd5b80630f2cdd6c1461010e57806313af40351461015a57806325fd90f31461017c5780632eb4a7ab146101ab575b600080fd5b34801561011a57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000581565b60405161ffff90911681526020015b60405180910390f35b34801561016657600080fd5b5061017a610175366004610a3c565b6103de565b005b34801561018857600080fd5b5060035461019b90610100900460ff1681565b6040519015158152602001610151565b3480156101b757600080fd5b506101c160045481565b604051908152602001610151565b3480156101db57600080fd5b506101c17f00000000000000000000000000000000000000000000000000138a388a43c00081565b34801561020f57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000022b81565b34801561024357600080fd5b5061017a61042b565b61017a61025a366004610a7b565b6104cd565b34801561026b57600080fd5b5061014261027a366004610a3c565b6001600160a01b031660009081526002602052604090205461ffff1690565b3480156102a557600080fd5b5060035461019b9060ff1681565b3480156102bf57600080fd5b5061017a6102ce366004610b45565b610725565b3480156102df57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000381565b34801561031357600080fd5b506101c17f000000000000000000000000000000000000000000000000002714711487800081565b34801561034757600080fd5b506101c160005481565b61017a61035f366004610b45565b610755565b34801561037057600080fd5b5061017a61037f366004610b5e565b61092c565b34801561039057600080fd5b5061017a61039f366004610b5e565b61096a565b3480156103b057600080fd5b506101426103bf366004610a3c565b6001600160a01b031660009081526001602052604090205461ffff1690565b6005546001600160a01b0316331461040957604051635fc483c560e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461045657604051635fc483c560e01b815260040160405180910390fd5b6005546040516000916001600160a01b03169047908381818185875af1925050503d80600081146104a3576040519150601f19603f3d011682016040523d82523d6000602084013e6104a8565b606091505b50509050806104ca576040516312171d8360e31b815260040160405180910390fd5b50565b60035460ff166104f05760405163ed5bf9ab60e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000022b600054036105325760405163d05cb60960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000022b826000546105619190610b96565b111561058057604051639e0456c360e01b815260040160405180910390fd5b346105ab837f00000000000000000000000000000000000000000000000000138a388a43c000610ba9565b146105c957604051632a9ffab760e21b815260040160405180910390fd5b336000908152600260205260409020547f00000000000000000000000000000000000000000000000000000000000000039061060a90849061ffff16610b96565b111561062957604051630157715d60e61b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061066f82600454836109af565b6106af5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640160405180910390fd5b82336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f6000546040516106ed91815260200190565b60405180910390a350506000805482018155338152600260205260409020805461ffff19811661ffff91821690930116919091179055565b6005546001600160a01b0316331461075057604051635fc483c560e01b815260040160405180910390fd5b600455565b600354610100900460ff1661077d5760405163914edb0f60e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000022b600054036107bf5760405163d05cb60960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000022b816000546107ee9190610b96565b111561080d57604051639e0456c360e01b815260040160405180910390fd5b34610838827f0000000000000000000000000000000000000000000000000027147114878000610ba9565b1461085657604051632a9ffab760e21b815260040160405180910390fd5b3360009081526001602052604090205461ffff7f000000000000000000000000000000000000000000000000000000000000000581169161089991849116610b96565b11156108b857604051630157715d60e61b815260040160405180910390fd5b80336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f6000546040516108f691815260200190565b60405180910390a36000805482018155338152600160205260409020805461ffff19811661ffff91821690930116919091179055565b6005546001600160a01b0316331461095757604051635fc483c560e01b815260040160405180910390fd5b6003805460ff1916911515919091179055565b6005546001600160a01b0316331461099557604051635fc483c560e01b815260040160405180910390fd5b600380549115156101000261ff0019909216919091179055565b6000826109bc85846109c5565b14949350505050565b600081815b8451811015610a00576109f6828683815181106109e9576109e9610bc0565b6020026020010151610a0a565b91506001016109ca565b5090505b92915050565b6000818310610a26576000828152602084905260409020610a35565b60008381526020839052604090205b9392505050565b600060208284031215610a4e57600080fd5b81356001600160a01b0381168114610a3557600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610a8e57600080fd5b8235915060208084013567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad457610ad4610a65565b8060051b604051601f19603f83011681018181108582111715610af957610af9610a65565b604052918252848201925083810185019189831115610b1757600080fd5b938501935b82851015610b3557843584529385019392850192610b1c565b8096505050505050509250929050565b600060208284031215610b5757600080fd5b5035919050565b600060208284031215610b7057600080fd5b81358015158114610a3557600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0457610a04610b80565b8082028115828204841417610a0457610a04610b80565b634e487b7160e01b600052603260045260246000fdfea26469706673582212204da051f136372bc18de018c90b3e77146328d1b886f199bf50ec4168af838bc164736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
8d4e0b71c1101d533a72376cd3197ab218c056f023425dd7652e46174b690b61
-----Decoded View---------------
Arg [0] : _merkleRoot (bytes32): 0x8d4e0b71c1101d533a72376cd3197ab218c056f023425dd7652e46174b690b61
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 8d4e0b71c1101d533a72376cd3197ab218c056f023425dd7652e46174b690b61
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.