Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 657 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set State | 17735445 | 548 days ago | IN | 0 ETH | 0.0011164 | ||||
Bless | 17735438 | 548 days ago | IN | 0 ETH | 0.00226179 | ||||
Bless | 17735436 | 548 days ago | IN | 0 ETH | 0.00740806 | ||||
Bless | 17735434 | 548 days ago | IN | 0 ETH | 0.00750347 | ||||
Bless | 17735431 | 548 days ago | IN | 0 ETH | 0.00788376 | ||||
Bless | 17735431 | 548 days ago | IN | 0 ETH | 0.00788376 | ||||
Set State | 17735425 | 548 days ago | IN | 0 ETH | 0.00132936 | ||||
Bless | 17731973 | 549 days ago | IN | 0 ETH | 0.00339146 | ||||
Bless | 17728210 | 549 days ago | IN | 0 ETH | 0.00516908 | ||||
Bless | 17728198 | 549 days ago | IN | 0 ETH | 0.00426461 | ||||
Bless | 17728184 | 549 days ago | IN | 0 ETH | 0.00456618 | ||||
Set State | 17728178 | 549 days ago | IN | 0 ETH | 0.00152652 | ||||
Config Blessing | 17722335 | 550 days ago | IN | 0 ETH | 0.00105708 | ||||
Set Whitelist Ro... | 17722308 | 550 days ago | IN | 0 ETH | 0.0007633 | ||||
Bless | 17453267 | 588 days ago | IN | 0 ETH | 0.00035967 | ||||
Set State | 17394998 | 596 days ago | IN | 0 ETH | 0.00101536 | ||||
Bless | 17394990 | 596 days ago | IN | 0 ETH | 0.00166455 | ||||
Bless | 17394990 | 596 days ago | IN | 0 ETH | 0.00166455 | ||||
Bless | 17394989 | 596 days ago | IN | 0 ETH | 0.00603542 | ||||
Bless | 17394988 | 596 days ago | IN | 0 ETH | 0.00590535 | ||||
Bless | 17394986 | 596 days ago | IN | 0 ETH | 0.00600322 | ||||
Bless | 17394986 | 596 days ago | IN | 0 ETH | 0.0063361 | ||||
Bless | 17394986 | 596 days ago | IN | 0 ETH | 0.0063361 | ||||
Bless | 17394986 | 596 days ago | IN | 0 ETH | 0.0063361 | ||||
Bless | 17394984 | 596 days ago | IN | 0 ETH | 0.00657575 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16628675 | 704 days ago | 0.03590679 ETH |
Loading...
Loading
Contract Name:
NFTBlessing
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; contract NFTBlessing is Ownable { enum Blesser{None, Legendary, Angel, Anonymous, Cagehead, Demon, MrRoot, TimeTraveler, Undead, Zombie} enum State{OFF, WHITELIST, ALL} struct Blessing{ Blesser blesser; uint256 assetId; } IERC721 darkflex = IERC721(0x765dA497beAF1C7D83476C0e77B6CABA672dEfb9); address burnWallet = 0x000000000000000000000000000000000000dEaD; Blesser public currentBlesser = Blesser.None; uint256 public blessingCeil = 0; uint256 public numCurrentBlessings = 0; uint256 public metadataHash; State public currentState = State.OFF; mapping(uint256 => Blessing) public blessedNFTs; mapping(address => Blesser) public walletPrevBlessed; bytes32 public whitelistRoot; constructor(){ blessedNFTs[578] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[1236] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[1987] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[2430] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[3014] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[4241] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[5506] = Blessing(Blesser.Legendary, 0xffff); blessedNFTs[6148] = Blessing(Blesser.Legendary, 0xffff); } function setWhitelistRoot(bytes32 _whitelistRoot) public onlyOwner { whitelistRoot = _whitelistRoot; } function setState(State state) public onlyOwner { currentState = state; } function configBlessing(Blesser blesser, uint256 _blessingCeil, uint256 _metadataHash) public onlyOwner { currentBlesser = blesser; blessingCeil = _blessingCeil; metadataHash = _metadataHash; numCurrentBlessings = 0; } function getNftStatus(uint256 tokenid) public view returns(Blessing memory) { Blessing memory token = blessedNFTs[tokenid]; if((token.blesser == Blesser.None) || (token.blesser == Blesser.Legendary)){ return Blessing(Blesser.None, 0); } else if((token.blesser == currentBlesser) && (currentState != State.OFF)) { return Blessing(token.blesser, 2**255); } return token; } function walletCanBless() public view returns(bool){ return walletPrevBlessed[msg.sender] != currentBlesser; } /* * Blesses one nft by burning the other. * @return hash of your new token's image */ function bless(uint256 blessed, uint256 burned, bytes32[] calldata _merkleProof) public { bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require((currentState == State.ALL) || (currentState == State.WHITELIST && MerkleProof.verify(_merkleProof, whitelistRoot, leaf)), "Either state is off or you're not in whitelist."); require(walletPrevBlessed[msg.sender] != currentBlesser, "You can only bless once per event."); require(blessedNFTs[blessed].blesser == Blesser.None, "Blessed NFT has been blessed before"); require(blessedNFTs[burned].blesser == Blesser.None, "Burned NFT has been blessed before"); require(blessingCeil > numCurrentBlessings, "All blesings already done."); require(darkflex.ownerOf(blessed) == msg.sender, "You have to own the token you are blessing."); darkflex.safeTransferFrom(msg.sender, burnWallet, burned); blessedNFTs[blessed] = Blessing(currentBlesser, numCurrentBlessings); walletPrevBlessed[msg.sender] = currentBlesser; numCurrentBlessings += 1; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The tree and the proofs can be generated using our * https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. * You will find a quickstart guide in the readme. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the merkle tree could be reinterpreted as a leaf value. * OpenZeppelin's JavaScript library generates merkle trees that are safe * against this attack out of the box. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Calldata version of {verify} * * _Available since v4.7._ */ function verifyCalldata( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} * * _Available since v4.7._ */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false * respectively. * * CAUTION: Not all merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer). * * _Available since v4.7._ */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/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`. * * 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; /** * @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 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: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) 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 // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"blessed","type":"uint256"},{"internalType":"uint256","name":"burned","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"bless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blessedNFTs","outputs":[{"internalType":"enum NFTBlessing.Blesser","name":"blesser","type":"uint8"},{"internalType":"uint256","name":"assetId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blessingCeil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum NFTBlessing.Blesser","name":"blesser","type":"uint8"},{"internalType":"uint256","name":"_blessingCeil","type":"uint256"},{"internalType":"uint256","name":"_metadataHash","type":"uint256"}],"name":"configBlessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentBlesser","outputs":[{"internalType":"enum NFTBlessing.Blesser","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentState","outputs":[{"internalType":"enum NFTBlessing.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenid","type":"uint256"}],"name":"getNftStatus","outputs":[{"components":[{"internalType":"enum NFTBlessing.Blesser","name":"blesser","type":"uint8"},{"internalType":"uint256","name":"assetId","type":"uint256"}],"internalType":"struct NFTBlessing.Blessing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataHash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numCurrentBlessings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum NFTBlessing.State","name":"state","type":"uint8"}],"name":"setState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_whitelistRoot","type":"bytes32"}],"name":"setWhitelistRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletCanBless","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletPrevBlessed","outputs":[{"internalType":"enum NFTBlessing.Blesser","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405273765da497beaf1c7d83476c0e77b6caba672defb9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff02191690836009811115620000c557620000c462000612565b5b0217905550600060035560006004556000600660006101000a81548160ff02191690836002811115620000fd57620000fc62000612565b5b02179055503480156200010f57600080fd5b5062000130620001246200054660201b60201c565b6200054e60201b60201c565b60405180604001604052806001600981111562000152576200015162000612565b5b815260200161ffff81525060076000610242815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115620001a0576200019f62000612565b5b021790555060208201518160010155905050604051806040016040528060016009811115620001d457620001d362000612565b5b815260200161ffff815250600760006104d4815260200190815260200160002060008201518160000160006101000a81548160ff0219169083600981111562000222576200022162000612565b5b02179055506020820151816001015590505060405180604001604052806001600981111562000256576200025562000612565b5b815260200161ffff815250600760006107c3815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115620002a457620002a362000612565b5b021790555060208201518160010155905050604051806040016040528060016009811115620002d857620002d762000612565b5b815260200161ffff8152506007600061097e815260200190815260200160002060008201518160000160006101000a81548160ff0219169083600981111562000326576200032562000612565b5b0217905550602082015181600101559050506040518060400160405280600160098111156200035a576200035962000612565b5b815260200161ffff81525060076000610bc6815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115620003a857620003a762000612565b5b021790555060208201518160010155905050604051806040016040528060016009811115620003dc57620003db62000612565b5b815260200161ffff81525060076000611091815260200190815260200160002060008201518160000160006101000a81548160ff021916908360098111156200042a576200042962000612565b5b0217905550602082015181600101559050506040518060400160405280600160098111156200045e576200045d62000612565b5b815260200161ffff81525060076000611582815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115620004ac57620004ab62000612565b5b021790555060208201518160010155905050604051806040016040528060016009811115620004e057620004df62000612565b5b815260200161ffff81525060076000611804815260200190815260200160002060008201518160000160006101000a81548160ff021916908360098111156200052e576200052d62000612565b5b02179055506020820151816001015590505062000641565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b3c80620006516000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806381646075116100a2578063c5a1d7f011610071578063c5a1d7f014610285578063cdf9ca73146102a3578063ece6efb7146102bf578063f2fde38b146102ef578063f5aa406d1461030b5761010b565b806381646075146101fc5780638da5cb5b14610218578063a9900edf14610236578063c104bcf0146102675761010b565b806356de96db116100de57806356de96db1461019a578063695d96e9146101b65780636ac2c8b8146101d4578063715018a6146101f25761010b565b80630c3f6acf14610110578063177f6a551461012e578063321267b11461014c578063386bfc981461017c575b600080fd5b610118610327565b604051610125919061103a565b60405180910390f35b61013661033a565b604051610143919061106e565b60405180910390f35b610166600480360381019061016191906110bf565b610340565b6040516101739190611172565b60405180910390f35b610184610520565b60405161019191906111a6565b60405180910390f35b6101b460048036038101906101af91906111e6565b610526565b005b6101be61055b565b6040516101cb919061106e565b60405180910390f35b6101dc610561565b6040516101e99190611222565b60405180910390f35b6101fa610574565b005b610216600480360381019061021191906112a2565b610588565b005b610220610bb2565b60405161022d9190611357565b60405180910390f35b610250600480360381019061024b91906110bf565b610bdb565b60405161025e929190611372565b60405180910390f35b61026f610c0c565b60405161027c91906113b6565b60405180910390f35b61028d610c96565b60405161029a919061106e565b60405180910390f35b6102bd60048036038101906102b891906113f6565b610c9c565b005b6102d960048036038101906102d49190611475565b610ce9565b6040516102e69190611222565b60405180910390f35b61030960048036038101906103049190611475565b610d09565b005b610325600480360381019061032091906114ce565b610d8c565b005b600660009054906101000a900460ff1681565b60035481565b610348610f97565b6000600760008481526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff16600981111561038d5761038c610fc3565b5b600981111561039f5761039e610fc3565b5b81526020016001820154815250509050600060098111156103c3576103c2610fc3565b5b816000015160098111156103da576103d9610fc3565b5b148061040e5750600160098111156103f5576103f4610fc3565b5b8160000151600981111561040c5761040b610fc3565b5b145b156104445760405180604001604052806000600981111561043257610431610fc3565b5b8152602001600081525091505061051b565b600260149054906101000a900460ff16600981111561046657610465610fc3565b5b8160000151600981111561047d5761047c610fc3565b5b1480156104be57506000600281111561049957610498610fc3565b5b600660009054906101000a900460ff1660028111156104bb576104ba610fc3565b5b14155b15610516576040518060400160405280826000015160098111156104e5576104e4610fc3565b5b81526020017f800000000000000000000000000000000000000000000000000000000000000081525091505061051b565b809150505b919050565b60095481565b61052e610d9e565b80600660006101000a81548160ff0219169083600281111561055357610552610fc3565b5b021790555050565b60045481565b600260149054906101000a900460ff1681565b61057c610d9e565b6105866000610e1c565b565b60003360405160200161059b9190611543565b6040516020818303038152906040528051906020012090506002808111156105c6576105c5610fc3565b5b600660009054906101000a900460ff1660028111156105e8576105e7610fc3565b5b148061067d57506001600281111561060357610602610fc3565b5b600660009054906101000a900460ff16600281111561062557610624610fc3565b5b14801561067c575061067b838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060095483610ee0565b5b5b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b3906115e1565b60405180910390fd5b600260149054906101000a900460ff1660098111156106de576106dd610fc3565b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600981111561073d5761073c610fc3565b5b0361077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490611673565b60405180910390fd5b6000600981111561079157610790610fc3565b5b6007600087815260200190815260200160002060000160009054906101000a900460ff1660098111156107c7576107c6610fc3565b5b14610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe90611705565b60405180910390fd5b6000600981111561081b5761081a610fc3565b5b6007600086815260200190815260200160002060000160009054906101000a900460ff16600981111561085157610850610fc3565b5b14610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890611797565b60405180910390fd5b600454600354116108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90611803565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b8152600401610949919061106e565b602060405180830381865afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611838565b73ffffffffffffffffffffffffffffffffffffffff16146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906118d7565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401610a61939291906118f7565b600060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b505050506040518060400160405280600260149054906101000a900460ff166009811115610ac057610abf610fc3565b5b81526020016004548152506007600087815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115610b0957610b08610fc3565b5b021790555060208201518160010155905050600260149054906101000a900460ff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836009811115610b8c57610b8b610fc3565b5b0217905550600160046000828254610ba4919061195d565b925050819055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b6000600260149054906101000a900460ff166009811115610c3057610c2f610fc3565b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166009811115610c8f57610c8e610fc3565b5b1415905090565b60055481565b610ca4610d9e565b82600260146101000a81548160ff02191690836009811115610cc957610cc8610fc3565b5b021790555081600381905550806005819055506000600481905550505050565b60086020528060005260406000206000915054906101000a900460ff1681565b610d11610d9e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790611a03565b60405180910390fd5b610d8981610e1c565b50565b610d94610d9e565b8060098190555050565b610da6610ef7565b73ffffffffffffffffffffffffffffffffffffffff16610dc4610bb2565b73ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190611a6f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082610eed8584610eff565b1490509392505050565b600033905090565b60008082905060005b8451811015610f4a57610f3582868381518110610f2857610f27611a8f565b5b6020026020010151610f55565b91508080610f4290611abe565b915050610f08565b508091505092915050565b6000818310610f6d57610f688284610f80565b610f78565b610f778383610f80565b5b905092915050565b600082600052816020526040600020905092915050565b604051806040016040528060006009811115610fb657610fb5610fc3565b5b8152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811061100357611002610fc3565b5b50565b600081905061101482610ff2565b919050565b600061102482611006565b9050919050565b61103481611019565b82525050565b600060208201905061104f600083018461102b565b92915050565b6000819050919050565b61106881611055565b82525050565b6000602082019050611083600083018461105f565b92915050565b600080fd5b600080fd5b61109c81611055565b81146110a757600080fd5b50565b6000813590506110b981611093565b92915050565b6000602082840312156110d5576110d4611089565b5b60006110e3848285016110aa565b91505092915050565b600a81106110fd576110fc610fc3565b5b50565b600081905061110e826110ec565b919050565b600061111e82611100565b9050919050565b61112e81611113565b82525050565b61113d81611055565b82525050565b6040820160008201516111596000850182611125565b50602082015161116c6020850182611134565b50505050565b60006040820190506111876000830184611143565b92915050565b6000819050919050565b6111a08161118d565b82525050565b60006020820190506111bb6000830184611197565b92915050565b600381106111ce57600080fd5b50565b6000813590506111e0816111c1565b92915050565b6000602082840312156111fc576111fb611089565b5b600061120a848285016111d1565b91505092915050565b61121c81611113565b82525050565b60006020820190506112376000830184611213565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112625761126161123d565b5b8235905067ffffffffffffffff81111561127f5761127e611242565b5b60208301915083602082028301111561129b5761129a611247565b5b9250929050565b600080600080606085870312156112bc576112bb611089565b5b60006112ca878288016110aa565b94505060206112db878288016110aa565b935050604085013567ffffffffffffffff8111156112fc576112fb61108e565b5b6113088782880161124c565b925092505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061134182611316565b9050919050565b61135181611336565b82525050565b600060208201905061136c6000830184611348565b92915050565b60006040820190506113876000830185611213565b611394602083018461105f565b9392505050565b60008115159050919050565b6113b08161139b565b82525050565b60006020820190506113cb60008301846113a7565b92915050565b600a81106113de57600080fd5b50565b6000813590506113f0816113d1565b92915050565b60008060006060848603121561140f5761140e611089565b5b600061141d868287016113e1565b935050602061142e868287016110aa565b925050604061143f868287016110aa565b9150509250925092565b61145281611336565b811461145d57600080fd5b50565b60008135905061146f81611449565b92915050565b60006020828403121561148b5761148a611089565b5b600061149984828501611460565b91505092915050565b6114ab8161118d565b81146114b657600080fd5b50565b6000813590506114c8816114a2565b92915050565b6000602082840312156114e4576114e3611089565b5b60006114f2848285016114b9565b91505092915050565b60008160601b9050919050565b6000611513826114fb565b9050919050565b600061152582611508565b9050919050565b61153d61153882611336565b61151a565b82525050565b600061154f828461152c565b60148201915081905092915050565b600082825260208201905092915050565b7f456974686572207374617465206973206f6666206f7220796f75277265206e6f60008201527f7420696e2077686974656c6973742e0000000000000000000000000000000000602082015250565b60006115cb602f8361155e565b91506115d68261156f565b604082019050919050565b600060208201905081810360008301526115fa816115be565b9050919050565b7f596f752063616e206f6e6c7920626c657373206f6e636520706572206576656e60008201527f742e000000000000000000000000000000000000000000000000000000000000602082015250565b600061165d60228361155e565b915061166882611601565b604082019050919050565b6000602082019050818103600083015261168c81611650565b9050919050565b7f426c6573736564204e465420686173206265656e20626c65737365642062656660008201527f6f72650000000000000000000000000000000000000000000000000000000000602082015250565b60006116ef60238361155e565b91506116fa82611693565b604082019050919050565b6000602082019050818103600083015261171e816116e2565b9050919050565b7f4275726e6564204e465420686173206265656e20626c6573736564206265666f60008201527f7265000000000000000000000000000000000000000000000000000000000000602082015250565b600061178160228361155e565b915061178c82611725565b604082019050919050565b600060208201905081810360008301526117b081611774565b9050919050565b7f416c6c20626c6573696e677320616c726561647920646f6e652e000000000000600082015250565b60006117ed601a8361155e565b91506117f8826117b7565b602082019050919050565b6000602082019050818103600083015261181c816117e0565b9050919050565b60008151905061183281611449565b92915050565b60006020828403121561184e5761184d611089565b5b600061185c84828501611823565b91505092915050565b7f596f75206861766520746f206f776e2074686520746f6b656e20796f7520617260008201527f6520626c657373696e672e000000000000000000000000000000000000000000602082015250565b60006118c1602b8361155e565b91506118cc82611865565b604082019050919050565b600060208201905081810360008301526118f0816118b4565b9050919050565b600060608201905061190c6000830186611348565b6119196020830185611348565b611926604083018461105f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061196882611055565b915061197383611055565b925082820190508082111561198b5761198a61192e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119ed60268361155e565b91506119f882611991565b604082019050919050565b60006020820190508181036000830152611a1c816119e0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a5960208361155e565b9150611a6482611a23565b602082019050919050565b60006020820190508181036000830152611a8881611a4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ac982611055565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611afb57611afa61192e565b5b60018201905091905056fea26469706673582212201ad84a971cd1132774bf37bafe2c3f83916240dcb705cbcef59a2b411102652664736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806381646075116100a2578063c5a1d7f011610071578063c5a1d7f014610285578063cdf9ca73146102a3578063ece6efb7146102bf578063f2fde38b146102ef578063f5aa406d1461030b5761010b565b806381646075146101fc5780638da5cb5b14610218578063a9900edf14610236578063c104bcf0146102675761010b565b806356de96db116100de57806356de96db1461019a578063695d96e9146101b65780636ac2c8b8146101d4578063715018a6146101f25761010b565b80630c3f6acf14610110578063177f6a551461012e578063321267b11461014c578063386bfc981461017c575b600080fd5b610118610327565b604051610125919061103a565b60405180910390f35b61013661033a565b604051610143919061106e565b60405180910390f35b610166600480360381019061016191906110bf565b610340565b6040516101739190611172565b60405180910390f35b610184610520565b60405161019191906111a6565b60405180910390f35b6101b460048036038101906101af91906111e6565b610526565b005b6101be61055b565b6040516101cb919061106e565b60405180910390f35b6101dc610561565b6040516101e99190611222565b60405180910390f35b6101fa610574565b005b610216600480360381019061021191906112a2565b610588565b005b610220610bb2565b60405161022d9190611357565b60405180910390f35b610250600480360381019061024b91906110bf565b610bdb565b60405161025e929190611372565b60405180910390f35b61026f610c0c565b60405161027c91906113b6565b60405180910390f35b61028d610c96565b60405161029a919061106e565b60405180910390f35b6102bd60048036038101906102b891906113f6565b610c9c565b005b6102d960048036038101906102d49190611475565b610ce9565b6040516102e69190611222565b60405180910390f35b61030960048036038101906103049190611475565b610d09565b005b610325600480360381019061032091906114ce565b610d8c565b005b600660009054906101000a900460ff1681565b60035481565b610348610f97565b6000600760008481526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff16600981111561038d5761038c610fc3565b5b600981111561039f5761039e610fc3565b5b81526020016001820154815250509050600060098111156103c3576103c2610fc3565b5b816000015160098111156103da576103d9610fc3565b5b148061040e5750600160098111156103f5576103f4610fc3565b5b8160000151600981111561040c5761040b610fc3565b5b145b156104445760405180604001604052806000600981111561043257610431610fc3565b5b8152602001600081525091505061051b565b600260149054906101000a900460ff16600981111561046657610465610fc3565b5b8160000151600981111561047d5761047c610fc3565b5b1480156104be57506000600281111561049957610498610fc3565b5b600660009054906101000a900460ff1660028111156104bb576104ba610fc3565b5b14155b15610516576040518060400160405280826000015160098111156104e5576104e4610fc3565b5b81526020017f800000000000000000000000000000000000000000000000000000000000000081525091505061051b565b809150505b919050565b60095481565b61052e610d9e565b80600660006101000a81548160ff0219169083600281111561055357610552610fc3565b5b021790555050565b60045481565b600260149054906101000a900460ff1681565b61057c610d9e565b6105866000610e1c565b565b60003360405160200161059b9190611543565b6040516020818303038152906040528051906020012090506002808111156105c6576105c5610fc3565b5b600660009054906101000a900460ff1660028111156105e8576105e7610fc3565b5b148061067d57506001600281111561060357610602610fc3565b5b600660009054906101000a900460ff16600281111561062557610624610fc3565b5b14801561067c575061067b838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060095483610ee0565b5b5b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b3906115e1565b60405180910390fd5b600260149054906101000a900460ff1660098111156106de576106dd610fc3565b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600981111561073d5761073c610fc3565b5b0361077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490611673565b60405180910390fd5b6000600981111561079157610790610fc3565b5b6007600087815260200190815260200160002060000160009054906101000a900460ff1660098111156107c7576107c6610fc3565b5b14610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe90611705565b60405180910390fd5b6000600981111561081b5761081a610fc3565b5b6007600086815260200190815260200160002060000160009054906101000a900460ff16600981111561085157610850610fc3565b5b14610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890611797565b60405180910390fd5b600454600354116108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90611803565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b8152600401610949919061106e565b602060405180830381865afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611838565b73ffffffffffffffffffffffffffffffffffffffff16146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906118d7565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401610a61939291906118f7565b600060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b505050506040518060400160405280600260149054906101000a900460ff166009811115610ac057610abf610fc3565b5b81526020016004548152506007600087815260200190815260200160002060008201518160000160006101000a81548160ff02191690836009811115610b0957610b08610fc3565b5b021790555060208201518160010155905050600260149054906101000a900460ff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836009811115610b8c57610b8b610fc3565b5b0217905550600160046000828254610ba4919061195d565b925050819055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b6000600260149054906101000a900460ff166009811115610c3057610c2f610fc3565b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166009811115610c8f57610c8e610fc3565b5b1415905090565b60055481565b610ca4610d9e565b82600260146101000a81548160ff02191690836009811115610cc957610cc8610fc3565b5b021790555081600381905550806005819055506000600481905550505050565b60086020528060005260406000206000915054906101000a900460ff1681565b610d11610d9e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790611a03565b60405180910390fd5b610d8981610e1c565b50565b610d94610d9e565b8060098190555050565b610da6610ef7565b73ffffffffffffffffffffffffffffffffffffffff16610dc4610bb2565b73ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190611a6f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082610eed8584610eff565b1490509392505050565b600033905090565b60008082905060005b8451811015610f4a57610f3582868381518110610f2857610f27611a8f565b5b6020026020010151610f55565b91508080610f4290611abe565b915050610f08565b508091505092915050565b6000818310610f6d57610f688284610f80565b610f78565b610f778383610f80565b5b905092915050565b600082600052816020526040600020905092915050565b604051806040016040528060006009811115610fb657610fb5610fc3565b5b8152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811061100357611002610fc3565b5b50565b600081905061101482610ff2565b919050565b600061102482611006565b9050919050565b61103481611019565b82525050565b600060208201905061104f600083018461102b565b92915050565b6000819050919050565b61106881611055565b82525050565b6000602082019050611083600083018461105f565b92915050565b600080fd5b600080fd5b61109c81611055565b81146110a757600080fd5b50565b6000813590506110b981611093565b92915050565b6000602082840312156110d5576110d4611089565b5b60006110e3848285016110aa565b91505092915050565b600a81106110fd576110fc610fc3565b5b50565b600081905061110e826110ec565b919050565b600061111e82611100565b9050919050565b61112e81611113565b82525050565b61113d81611055565b82525050565b6040820160008201516111596000850182611125565b50602082015161116c6020850182611134565b50505050565b60006040820190506111876000830184611143565b92915050565b6000819050919050565b6111a08161118d565b82525050565b60006020820190506111bb6000830184611197565b92915050565b600381106111ce57600080fd5b50565b6000813590506111e0816111c1565b92915050565b6000602082840312156111fc576111fb611089565b5b600061120a848285016111d1565b91505092915050565b61121c81611113565b82525050565b60006020820190506112376000830184611213565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126112625761126161123d565b5b8235905067ffffffffffffffff81111561127f5761127e611242565b5b60208301915083602082028301111561129b5761129a611247565b5b9250929050565b600080600080606085870312156112bc576112bb611089565b5b60006112ca878288016110aa565b94505060206112db878288016110aa565b935050604085013567ffffffffffffffff8111156112fc576112fb61108e565b5b6113088782880161124c565b925092505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061134182611316565b9050919050565b61135181611336565b82525050565b600060208201905061136c6000830184611348565b92915050565b60006040820190506113876000830185611213565b611394602083018461105f565b9392505050565b60008115159050919050565b6113b08161139b565b82525050565b60006020820190506113cb60008301846113a7565b92915050565b600a81106113de57600080fd5b50565b6000813590506113f0816113d1565b92915050565b60008060006060848603121561140f5761140e611089565b5b600061141d868287016113e1565b935050602061142e868287016110aa565b925050604061143f868287016110aa565b9150509250925092565b61145281611336565b811461145d57600080fd5b50565b60008135905061146f81611449565b92915050565b60006020828403121561148b5761148a611089565b5b600061149984828501611460565b91505092915050565b6114ab8161118d565b81146114b657600080fd5b50565b6000813590506114c8816114a2565b92915050565b6000602082840312156114e4576114e3611089565b5b60006114f2848285016114b9565b91505092915050565b60008160601b9050919050565b6000611513826114fb565b9050919050565b600061152582611508565b9050919050565b61153d61153882611336565b61151a565b82525050565b600061154f828461152c565b60148201915081905092915050565b600082825260208201905092915050565b7f456974686572207374617465206973206f6666206f7220796f75277265206e6f60008201527f7420696e2077686974656c6973742e0000000000000000000000000000000000602082015250565b60006115cb602f8361155e565b91506115d68261156f565b604082019050919050565b600060208201905081810360008301526115fa816115be565b9050919050565b7f596f752063616e206f6e6c7920626c657373206f6e636520706572206576656e60008201527f742e000000000000000000000000000000000000000000000000000000000000602082015250565b600061165d60228361155e565b915061166882611601565b604082019050919050565b6000602082019050818103600083015261168c81611650565b9050919050565b7f426c6573736564204e465420686173206265656e20626c65737365642062656660008201527f6f72650000000000000000000000000000000000000000000000000000000000602082015250565b60006116ef60238361155e565b91506116fa82611693565b604082019050919050565b6000602082019050818103600083015261171e816116e2565b9050919050565b7f4275726e6564204e465420686173206265656e20626c6573736564206265666f60008201527f7265000000000000000000000000000000000000000000000000000000000000602082015250565b600061178160228361155e565b915061178c82611725565b604082019050919050565b600060208201905081810360008301526117b081611774565b9050919050565b7f416c6c20626c6573696e677320616c726561647920646f6e652e000000000000600082015250565b60006117ed601a8361155e565b91506117f8826117b7565b602082019050919050565b6000602082019050818103600083015261181c816117e0565b9050919050565b60008151905061183281611449565b92915050565b60006020828403121561184e5761184d611089565b5b600061185c84828501611823565b91505092915050565b7f596f75206861766520746f206f776e2074686520746f6b656e20796f7520617260008201527f6520626c657373696e672e000000000000000000000000000000000000000000602082015250565b60006118c1602b8361155e565b91506118cc82611865565b604082019050919050565b600060208201905081810360008301526118f0816118b4565b9050919050565b600060608201905061190c6000830186611348565b6119196020830185611348565b611926604083018461105f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061196882611055565b915061197383611055565b925082820190508082111561198b5761198a61192e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119ed60268361155e565b91506119f882611991565b604082019050919050565b60006020820190508181036000830152611a1c816119e0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a5960208361155e565b9150611a6482611a23565b602082019050919050565b60006020820190508181036000830152611a8881611a4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ac982611055565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611afb57611afa61192e565b5b60018201905091905056fea26469706673582212201ad84a971cd1132774bf37bafe2c3f83916240dcb705cbcef59a2b411102652664736f6c63430008110033
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.