Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 4,195 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 21217739 | 4 days ago | IN | 0 ETH | 0.00028513 | ||||
Set Approval For... | 21205671 | 6 days ago | IN | 0 ETH | 0.00033034 | ||||
Set Approval For... | 21177564 | 10 days ago | IN | 0 ETH | 0.00082016 | ||||
Safe Transfer Fr... | 21059825 | 27 days ago | IN | 0 ETH | 0.00030852 | ||||
Set Approval For... | 21003675 | 34 days ago | IN | 0 ETH | 0.00027661 | ||||
Set Approval For... | 20999351 | 35 days ago | IN | 0 ETH | 0.00042622 | ||||
Set Approval For... | 20861961 | 54 days ago | IN | 0 ETH | 0.00025746 | ||||
Set Approval For... | 20861004 | 54 days ago | IN | 0 ETH | 0.0002457 | ||||
Safe Transfer Fr... | 20766446 | 67 days ago | IN | 0 ETH | 0.00010017 | ||||
Safe Transfer Fr... | 20766436 | 67 days ago | IN | 0 ETH | 0.00010741 | ||||
Safe Transfer Fr... | 20759779 | 68 days ago | IN | 0 ETH | 0.0000831 | ||||
Safe Transfer Fr... | 20759765 | 68 days ago | IN | 0 ETH | 0.0001131 | ||||
Set Approval For... | 20730312 | 73 days ago | IN | 0 ETH | 0.00008617 | ||||
Set Approval For... | 20702082 | 76 days ago | IN | 0 ETH | 0.00003621 | ||||
Set Approval For... | 20654751 | 83 days ago | IN | 0 ETH | 0.00005081 | ||||
Set Approval For... | 20573027 | 94 days ago | IN | 0 ETH | 0.00004519 | ||||
Set Approval For... | 20537389 | 99 days ago | IN | 0 ETH | 0.00004108 | ||||
Safe Transfer Fr... | 20048295 | 168 days ago | IN | 0 ETH | 0.00053052 | ||||
Set Approval For... | 20044059 | 168 days ago | IN | 0 ETH | 0.00028956 | ||||
Set Approval For... | 20039922 | 169 days ago | IN | 0 ETH | 0.00037339 | ||||
Safe Transfer Fr... | 20039907 | 169 days ago | IN | 0 ETH | 0.00057753 | ||||
Set Approval For... | 20020130 | 172 days ago | IN | 0 ETH | 0.00065656 | ||||
Set Approval For... | 19964890 | 179 days ago | IN | 0 ETH | 0.00044056 | ||||
Set Approval For... | 19735123 | 212 days ago | IN | 0 ETH | 0.00041195 | ||||
Set Approval For... | 19568866 | 235 days ago | IN | 0 ETH | 0.00343177 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
QuantumKeyRing
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; import {ERC721 as ERC721S} from "@rari-capital/solmate/src/tokens/ERC721.sol"; import "@rari-capital/solmate/src/auth/Auth.sol"; import "@openzeppelin/contracts/utils/structs/BitMaps.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "./ERC2981V2.sol"; // // // XXXXXXX // X XXXX XXXXXX // XXSXSXXXXXX XXXXX // XXXXX XX XXXXXSXX // XXXX XXXS SSXX XXXX // XXX XXXX XXXXXX X // XXXXXXX X XXX XXX // XXXXXXXX XXXXXXX // SXX XXXXX XXXSXXSX // XXXXXXXXX XXXXXXXXXX // SXXX X XX XXXXXX XXX // XXXXXX X XXX X X XSXX // SXXXXX X XXSXXXXS XX // XSXSX XXXXXX // SXXX XXX XXXXX // XXXXX SXXXXXX // SXXS X XXXXX // XXXXXX X XSX X // XSXXX XX XXXXX // XXSXSSX XXXXXX // XSXXXSXXXXXXXXX // XXXXX XXXXXX /// @title The Quantum Key Ring. The keys do something. /// @author exp.table contract QuantumKeyRing is ERC721S, ERC2981, Auth { using Strings for uint256; using BitMaps for BitMaps.BitMap; /// >>>>>>>>>>>>>>>>>>>>>>> STATE <<<<<<<<<<<<<<<<<<<<<<<<<< /// mapping (uint256 => string) public keyCID; mapping (uint256 => uint256) public keySupply; mapping (uint256 => uint256) public tokenIdToSkinId; uint private constant _SEPARATOR = 10**4; string private _baseURI = "ipfs://"; address private _minter; /// >>>>>>>>>>>>>>>>>>>>> CONSTRUCTOR <<<<<<<<<<<<<<<<<<<<<< /// /// @notice Deploys QuantumKeyRing /// @dev Initiates the Auth module with no authority and the sender as the owner /// @param owner The owner of the contract /// @param authority address of the deployed authority constructor(address owner, address authority) ERC721S("QuantumKeyRing", "QKR") Auth(owner, Authority(authority)) { _baseURI = "ipfs://"; } /// >>>>>>>>>>>>>>>>>>>>> RESTRICTED <<<<<<<<<<<<<<<<<<<<<< /// /// @notice set address of the minter /// @param minter The address of the minter - should be QuantumKeyMaker function setMinter(address minter) public requiresAuth { _minter = minter; } /// @notice set the baseURI /// @param baseURI new base function setBaseURI(string calldata baseURI) public requiresAuth { _baseURI = baseURI; } /// @notice set the IPFS CID /// @param keyId The key id /// @param cid cid function setCID(uint256 keyId, string calldata cid) public requiresAuth { keyCID[keyId] = cid; } /// @notice sets the recipient of the royalties /// @param recipient address of the recipient function setRoyaltyRecipient(address recipient) public requiresAuth { _royaltyRecipient = recipient; } /// @notice sets the fee of royalties /// @dev The fee denominator is 10000 in BPS. /// @param fee fee /* Example This would set the fee at 5% ``` keyRing.setRoyaltyFee(500) ``` */ function setRoyaltyFee(uint256 fee) public requiresAuth { _royaltyFee = fee; } /// >>>>>>>>>>>>>>>>>>>>> VIEW <<<<<<<<<<<<<<<<<<<<<< /// /// @notice Returns the URI of the token /// @param tokenId id of the token /// @return URI for the token ; expected to be ipfs://<cid> function tokenURI(uint256 tokenId) public view override returns (string memory) { uint256 keyId = tokenId / _SEPARATOR; return string(abi.encodePacked(_baseURI, keyCID[keyId], "/" , tokenIdToSkinId[tokenId].toString())); } /// >>>>>>>>>>>>>>>>>>>>> EXTERNAL <<<<<<<<<<<<<<<<<<<<<< /// /// @notice Mints new keys /// @dev there is no check regarding limiting supply /// @param to recipient of newly minted tokens /// @param keyId id of the key /// @param amount amount to mint function make(address to, uint256 keyId, uint256 amount) public { require(msg.sender == owner || msg.sender == _minter, "NOT_AUTHORIZED"); uint256 currSupply = keySupply[keyId]; for(uint i; i < amount; i++) { _safeMint(to, (keyId * _SEPARATOR) + currSupply + i); } keySupply[keyId] += amount; } /// @notice Burns key /// @dev Can be called by the owner or approved operator /// @param tokenId id of the tokens function burn(uint256 tokenId) public { address owner = ownerOf[tokenId]; require( msg.sender == owner || msg.sender == getApproved[tokenId] || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED" ); _burn(tokenId); } /// @notice Applies a skin to a key /// @param tokenId id of the key /// @param skinId index of the skin function applySkin(uint256 tokenId, uint256 skinId) public { require(ownerOf[tokenId] == msg.sender, "NOT_OWNER"); require(skinId > tokenIdToSkinId[tokenId], "CANT_REVERT"); tokenIdToSkinId[tokenId] = skinId; } function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721S, ERC2981) returns (bool) { return ERC721S.supportsInterface(interfaceId) || ERC2981.supportsInterface(interfaceId); } }
// 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: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol) /// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol) abstract contract Auth { event OwnerUpdated(address indexed user, address indexed newOwner); event AuthorityUpdated(address indexed user, Authority indexed newAuthority); address public owner; Authority public authority; constructor(address _owner, Authority _authority) { owner = _owner; authority = _authority; emit OwnerUpdated(msg.sender, _owner); emit AuthorityUpdated(msg.sender, _authority); } modifier requiresAuth() { require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED"); _; } function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) { Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas. // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be // aware that this makes protected functions uncallable even to the owner if the authority is out of order. return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner; } function setAuthority(Authority newAuthority) public virtual { // We check if the caller is the owner first because we want to ensure they can // always swap out the authority even if it's reverting or using up a lot of gas. require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig)); authority = newAuthority; emit AuthorityUpdated(msg.sender, newAuthority); } function setOwner(address newOwner) public virtual requiresAuth { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } } /// @notice A generic interface for a contract which provides authorization data to an Auth instance. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol) /// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol) interface Authority { function canCall( address user, address target, bytes4 functionSig ) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/structs/BitMaps.sol) pragma solidity ^0.8.0; /** * @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential. * Largelly inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor]. */ library BitMaps { struct BitMap { mapping(uint256 => uint256) _data; } /** * @dev Returns whether the bit at `index` is set. */ function get(BitMap storage bitmap, uint256 index) internal view returns (bool) { uint256 bucket = index >> 8; uint256 mask = 1 << (index & 0xff); return bitmap._data[bucket] & mask != 0; } /** * @dev Sets the bit at `index` to the boolean `value`. */ function setTo( BitMap storage bitmap, uint256 index, bool value ) internal { if (value) { set(bitmap, index); } else { unset(bitmap, index); } } /** * @dev Sets the bit at `index`. */ function set(BitMap storage bitmap, uint256 index) internal { uint256 bucket = index >> 8; uint256 mask = 1 << (index & 0xff); bitmap._data[bucket] |= mask; } /** * @dev Unsets the bit at `index`. */ function unset(BitMap storage bitmap, uint256 index) internal { uint256 bucket = index >> 8; uint256 mask = 1 << (index & 0xff); bitmap._data[bucket] &= ~mask; } }
// 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); } }
pragma solidity >=0.8.0; /// @title Minimalist ERC2981 implementation. /// @notice To be used within Quantum, as it was written for its needs. /// @author exp.table abstract contract ERC2981 { /// @dev one global fee for all royalties. uint256 internal _royaltyFee; /// @dev one global recipient for all royalties. address internal _royaltyRecipient; function royaltyInfo(uint256 tokenId, uint256 salePrice) public view virtual returns ( address receiver, uint256 royaltyAmount ) { receiver = _royaltyRecipient; royaltyAmount = (salePrice * _royaltyFee) / 10000; } function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981 } }
{ "optimizer": { "enabled": true, "runs": 10000 }, "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":"owner","type":"address"},{"internalType":"address","name":"authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"skinId","type":"uint256"}],"name":"applySkin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"keyCID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"keySupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"keyId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"make","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"keyId","type":"uint256"},{"internalType":"string","name":"cid","type":"string"}],"name":"setCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRoyaltyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setRoyaltyRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdToSkinId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526007608081905266697066733a2f2f60c81b60a09081526200002a91600d919062000195565b503480156200003857600080fd5b50604051620028bb380380620028bb8339810160408190526200005b9162000258565b604080518082018252600e81526d5175616e74756d4b657952696e6760901b60208083019182528351808501909452600384526228a5a960e91b90840152815185938593929091620000b09160009162000195565b508051620000c690600190602084019062000195565b5050600880546001600160a01b038086166001600160a01b03199283168117909355600980549186169190921617905560405190915033907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a3505060408051808201909152600780825266697066733a2f2f60c81b60209092019182526200018c91600d9162000195565b505050620002cd565b828054620001a39062000290565b90600052602060002090601f016020900481019282620001c7576000855562000212565b82601f10620001e257805160ff191683800117855562000212565b8280016001018555821562000212579182015b8281111562000212578251825591602001919060010190620001f5565b506200022092915062000224565b5090565b5b8082111562000220576000815560010162000225565b80516001600160a01b03811681146200025357600080fd5b919050565b600080604083850312156200026c57600080fd5b62000277836200023b565b915062000287602084016200023b565b90509250929050565b600181811c90821680620002a557607f821691505b60208210811415620002c757634e487b7160e01b600052602260045260246000fd5b50919050565b6125de80620002dd6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e116101045780638f17ae32116100a2578063bf7e214f11610071578063bf7e214f14610496578063c87b56dd146104b6578063e985e9c5146104c9578063fca3b5aa146104f757600080fd5b80638f17ae321461044857806395d89b4114610468578063a22cb46514610470578063b88d4fde1461048357600080fd5b806382295a2d116100de57806382295a2d146103ef5780638ad8d1d6146104025780638c73a042146104155780638da5cb5b1461042857600080fd5b80636352211e1461038657806370a08231146103bc5780637a9e5e4b146103dc57600080fd5b806323b872dd1161017157806341e42f301161014b57806341e42f301461033a57806342842e0e1461034d57806342966c681461036057806355f804b31461037357600080fd5b806323b872dd146102d55780632a55205a146102e85780633e4086e51461032757600080fd5b8063095ea7b3116101ad578063095ea7b31461026c57806313af403514610281578063197d3520146102945780631adbdf32146102a757600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611e0c565b61050a565b60405190151581526020015b60405180910390f35b61020461052a565b6040516101f39190611ea6565b61024761021f366004611eb9565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b61027f61027a366004611ef4565b6105b8565b005b61027f61028f366004611f20565b6106ed565b61027f6102a2366004611f3d565b6107d8565b6102c76102b5366004611eb9565b600c6020526000908152604090205481565b6040519081526020016101f3565b61027f6102e3366004611f5f565b6108ba565b6102fb6102f6366004611f3d565b610b33565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101f3565b61027f610335366004611eb9565b610b76565b61027f610348366004611f20565b610bf5565b61027f61035b366004611f5f565b610cb6565b61027f61036e366004611eb9565b610e06565b61027f610381366004611fe9565b610ef0565b610247610394366004611eb9565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102c76103ca366004611f20565b60026020526000908152604090205481565b61027f6103ea366004611f20565b610f76565b61027f6103fd36600461202b565b6110d3565b610204610410366004611eb9565b61116c565b61027f610423366004612077565b611185565b6008546102479073ffffffffffffffffffffffffffffffffffffffff1681565b6102c7610456366004611eb9565b600b6020526000908152604090205481565b61020461128e565b61027f61047e3660046120ba565b61129b565b61027f610491366004612122565b611332565b6009546102479073ffffffffffffffffffffffffffffffffffffffff1681565b6102046104c4366004611eb9565b611469565b6101e76104d7366004612220565b600560209081526000928352604080842090915290825290205460ff1681565b61027f610505366004611f20565b6114ce565b60006105158261158f565b80610524575061052482611670565b92915050565b600080546105379061224e565b80601f01602080910402602001604051908101604052809291908181526020018280546105639061224e565b80156105b05780601f10610585576101008083540402835291602001916105b0565b820191906000526020600020905b81548152906001019060200180831161059357829003601f168201915b505050505081565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061061b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61066c5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61071b336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b6107675760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16331461084b5760405162461bcd60e51b815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610663565b6000828152600c602052604090205481116108a85760405162461bcd60e51b815260206004820152600b60248201527f43414e545f5245564552540000000000000000000000000000000000000000006044820152606401610663565b6000918252600c602052604090912055565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146109305760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff82166109935760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610663565b3373ffffffffffffffffffffffffffffffffffffffff841614806109da575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610a15575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b610a615760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60075460065473ffffffffffffffffffffffffffffffffffffffff9091169060009061271090610b6390856122d1565b610b6d919061233d565b90509250929050565b610ba4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610bf05760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600655565b610c23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610c6f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cc18383836108ba565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610db557506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610e015760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610e5c575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610e97575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610ee35760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b610eec82611816565b5050565b610f1e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610f6a5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b610e01600d8383611d24565b60085473ffffffffffffffffffffffffffffffffffffffff1633148061105957506009546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611059919061236e565b61106257600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b611101336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b61114d5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b6000838152600a60205260409020611166908383611d24565b50505050565b600a60205260009081526040902080546105379061224e565b60085473ffffffffffffffffffffffffffffffffffffffff163314806111c25750600e5473ffffffffffffffffffffffffffffffffffffffff1633145b61120e5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b6000828152600b6020526040812054905b8281101561126457611252858284611239612710896122d1565b611243919061238b565b61124d919061238b565b611946565b8061125c816123a3565b91505061121f565b506000838152600b60205260408120805484929061128390849061238b565b909155505050505050565b600180546105379061224e565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61133d8484846108ba565b73ffffffffffffffffffffffffffffffffffffffff83163b158061141d57506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906113b69033908990889088906004016123dc565b6020604051808303816000875af11580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f99190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6111665760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b606060006114796127108461233d565b6000818152600a60209081526040808320878452600c90925290912054919250600d916114a590611a8d565b6040516020016114b7939291906124f6565b604051602081830303815290604052915050919050565b6114fc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b6115485760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061162257507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105245750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105245750507fffffffff00000000000000000000000000000000000000000000000000000000167f2a55205a000000000000000000000000000000000000000000000000000000001490565b60095460009073ffffffffffffffffffffffffffffffffffffffff1680158015906117e957506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e9919061236e565b8061180e575060085473ffffffffffffffffffffffffffffffffffffffff8581169116145b949350505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118885760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526003825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6119508282611bbf565b73ffffffffffffffffffffffffffffffffffffffff82163b1580611a4157506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af11580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d9190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610eec5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b606081611acd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611af75780611ae1816123a3565b9150611af09050600a8361233d565b9150611ad1565b60008167ffffffffffffffff811115611b1257611b126120f3565b6040519080825280601f01601f191660200182016040528015611b3c576020820181803683370190505b5090505b841561180e57611b5160018361254e565b9150611b5e600a86612565565b611b6990603061238b565b60f81b818381518110611b7e57611b7e612579565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611bb8600a8661233d565b9450611b40565b73ffffffffffffffffffffffffffffffffffffffff8216611c225760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610663565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c945760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d309061224e565b90600052602060002090601f016020900481019282611d525760008555611db6565b82601f10611d89578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611db6565b82800160010185558215611db6579182015b82811115611db6578235825591602001919060010190611d9b565b50611dc2929150611dc6565b5090565b5b80821115611dc25760008155600101611dc7565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e0957600080fd5b50565b600060208284031215611e1e57600080fd5b8135611e2981611ddb565b9392505050565b60005b83811015611e4b578181015183820152602001611e33565b838111156111665750506000910152565b60008151808452611e74816020860160208601611e30565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e296020830184611e5c565b600060208284031215611ecb57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611e0957600080fd5b60008060408385031215611f0757600080fd5b8235611f1281611ed2565b946020939093013593505050565b600060208284031215611f3257600080fd5b8135611e2981611ed2565b60008060408385031215611f5057600080fd5b50508035926020909101359150565b600080600060608486031215611f7457600080fd5b8335611f7f81611ed2565b92506020840135611f8f81611ed2565b929592945050506040919091013590565b60008083601f840112611fb257600080fd5b50813567ffffffffffffffff811115611fca57600080fd5b602083019150836020828501011115611fe257600080fd5b9250929050565b60008060208385031215611ffc57600080fd5b823567ffffffffffffffff81111561201357600080fd5b61201f85828601611fa0565b90969095509350505050565b60008060006040848603121561204057600080fd5b83359250602084013567ffffffffffffffff81111561205e57600080fd5b61206a86828701611fa0565b9497909650939450505050565b60008060006060848603121561208c57600080fd5b833561209781611ed2565b95602085013595506040909401359392505050565b8015158114611e0957600080fd5b600080604083850312156120cd57600080fd5b82356120d881611ed2565b915060208301356120e8816120ac565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561213857600080fd5b843561214381611ed2565b9350602085013561215381611ed2565b925060408501359150606085013567ffffffffffffffff8082111561217757600080fd5b818701915087601f83011261218b57600080fd5b81358181111561219d5761219d6120f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156121e3576121e36120f3565b816040528281528a60208487010111156121fc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561223357600080fd5b823561223e81611ed2565b915060208301356120e881611ed2565b600181811c9082168061226257607f821691505b6020821081141561229c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612309576123096122a2565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261234c5761234c61230e565b500490565b60006020828403121561236357600080fd5b8151611e2981611ddb565b60006020828403121561238057600080fd5b8151611e29816120ac565b6000821982111561239e5761239e6122a2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123d5576123d56122a2565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261241b6080830184611e5c565b9695505050505050565b8054600090600181811c908083168061243f57607f831692505b602080841082141561247a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561248e57600181146124bd576124ea565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506124ea565b60008881526020902060005b868110156124e25781548b8201529085019083016124c9565b505084890196505b50505050505092915050565b600061250b6125058387612425565b85612425565b7f2f0000000000000000000000000000000000000000000000000000000000000081528351612541816001840160208801611e30565b0160010195945050505050565b600082821015612560576125606122a2565b500390565b6000826125745761257461230e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e7cf72724b9ab7b6720da8bf2c5ecf4d3546f880eb060908fac8bdda6329449f64736f6c634300080b00330000000000000000000000009fef8de6fb60f43079565ece74f235aed225face0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e116101045780638f17ae32116100a2578063bf7e214f11610071578063bf7e214f14610496578063c87b56dd146104b6578063e985e9c5146104c9578063fca3b5aa146104f757600080fd5b80638f17ae321461044857806395d89b4114610468578063a22cb46514610470578063b88d4fde1461048357600080fd5b806382295a2d116100de57806382295a2d146103ef5780638ad8d1d6146104025780638c73a042146104155780638da5cb5b1461042857600080fd5b80636352211e1461038657806370a08231146103bc5780637a9e5e4b146103dc57600080fd5b806323b872dd1161017157806341e42f301161014b57806341e42f301461033a57806342842e0e1461034d57806342966c681461036057806355f804b31461037357600080fd5b806323b872dd146102d55780632a55205a146102e85780633e4086e51461032757600080fd5b8063095ea7b3116101ad578063095ea7b31461026c57806313af403514610281578063197d3520146102945780631adbdf32146102a757600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611e0c565b61050a565b60405190151581526020015b60405180910390f35b61020461052a565b6040516101f39190611ea6565b61024761021f366004611eb9565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b61027f61027a366004611ef4565b6105b8565b005b61027f61028f366004611f20565b6106ed565b61027f6102a2366004611f3d565b6107d8565b6102c76102b5366004611eb9565b600c6020526000908152604090205481565b6040519081526020016101f3565b61027f6102e3366004611f5f565b6108ba565b6102fb6102f6366004611f3d565b610b33565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101f3565b61027f610335366004611eb9565b610b76565b61027f610348366004611f20565b610bf5565b61027f61035b366004611f5f565b610cb6565b61027f61036e366004611eb9565b610e06565b61027f610381366004611fe9565b610ef0565b610247610394366004611eb9565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102c76103ca366004611f20565b60026020526000908152604090205481565b61027f6103ea366004611f20565b610f76565b61027f6103fd36600461202b565b6110d3565b610204610410366004611eb9565b61116c565b61027f610423366004612077565b611185565b6008546102479073ffffffffffffffffffffffffffffffffffffffff1681565b6102c7610456366004611eb9565b600b6020526000908152604090205481565b61020461128e565b61027f61047e3660046120ba565b61129b565b61027f610491366004612122565b611332565b6009546102479073ffffffffffffffffffffffffffffffffffffffff1681565b6102046104c4366004611eb9565b611469565b6101e76104d7366004612220565b600560209081526000928352604080842090915290825290205460ff1681565b61027f610505366004611f20565b6114ce565b60006105158261158f565b80610524575061052482611670565b92915050565b600080546105379061224e565b80601f01602080910402602001604051908101604052809291908181526020018280546105639061224e565b80156105b05780601f10610585576101008083540402835291602001916105b0565b820191906000526020600020905b81548152906001019060200180831161059357829003601f168201915b505050505081565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061061b575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61066c5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61071b336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b6107675760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16331461084b5760405162461bcd60e51b815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610663565b6000828152600c602052604090205481116108a85760405162461bcd60e51b815260206004820152600b60248201527f43414e545f5245564552540000000000000000000000000000000000000000006044820152606401610663565b6000918252600c602052604090912055565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146109305760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff82166109935760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610663565b3373ffffffffffffffffffffffffffffffffffffffff841614806109da575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610a15575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b610a615760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526003825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60075460065473ffffffffffffffffffffffffffffffffffffffff9091169060009061271090610b6390856122d1565b610b6d919061233d565b90509250929050565b610ba4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610bf05760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600655565b610c23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610c6f5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cc18383836108ba565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610db557506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d919190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610e015760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610e5c575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610e97575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610ee35760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b610eec82611816565b5050565b610f1e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b610f6a5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b610e01600d8383611d24565b60085473ffffffffffffffffffffffffffffffffffffffff1633148061105957506009546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611059919061236e565b61106257600080fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b611101336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b61114d5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b6000838152600a60205260409020611166908383611d24565b50505050565b600a60205260009081526040902080546105379061224e565b60085473ffffffffffffffffffffffffffffffffffffffff163314806111c25750600e5473ffffffffffffffffffffffffffffffffffffffff1633145b61120e5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610663565b6000828152600b6020526040812054905b8281101561126457611252858284611239612710896122d1565b611243919061238b565b61124d919061238b565b611946565b8061125c816123a3565b91505061121f565b506000838152600b60205260408120805484929061128390849061238b565b909155505050505050565b600180546105379061224e565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61133d8484846108ba565b73ffffffffffffffffffffffffffffffffffffffff83163b158061141d57506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906113b69033908990889088906004016123dc565b6020604051808303816000875af11580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f99190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6111665760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b606060006114796127108461233d565b6000818152600a60209081526040808320878452600c90925290912054919250600d916114a590611a8d565b6040516020016114b7939291906124f6565b604051602081830303815290604052915050919050565b6114fc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611705565b6115485760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610663565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061162257507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105245750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105245750507fffffffff00000000000000000000000000000000000000000000000000000000167f2a55205a000000000000000000000000000000000000000000000000000000001490565b60095460009073ffffffffffffffffffffffffffffffffffffffff1680158015906117e957506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa1580156117c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e9919061236e565b8061180e575060085473ffffffffffffffffffffffffffffffffffffffff8581169116145b949350505050565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118885760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526003825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6119508282611bbf565b73ffffffffffffffffffffffffffffffffffffffff82163b1580611a4157506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af11580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d9190612351565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610eec5760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610663565b606081611acd57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611af75780611ae1816123a3565b9150611af09050600a8361233d565b9150611ad1565b60008167ffffffffffffffff811115611b1257611b126120f3565b6040519080825280601f01601f191660200182016040528015611b3c576020820181803683370190505b5090505b841561180e57611b5160018361254e565b9150611b5e600a86612565565b611b6990603061238b565b60f81b818381518110611b7e57611b7e612579565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611bb8600a8661233d565b9450611b40565b73ffffffffffffffffffffffffffffffffffffffff8216611c225760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610663565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c945760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610663565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260026020908152604080832080546001019055848352600390915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d309061224e565b90600052602060002090601f016020900481019282611d525760008555611db6565b82601f10611d89578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611db6565b82800160010185558215611db6579182015b82811115611db6578235825591602001919060010190611d9b565b50611dc2929150611dc6565b5090565b5b80821115611dc25760008155600101611dc7565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611e0957600080fd5b50565b600060208284031215611e1e57600080fd5b8135611e2981611ddb565b9392505050565b60005b83811015611e4b578181015183820152602001611e33565b838111156111665750506000910152565b60008151808452611e74816020860160208601611e30565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e296020830184611e5c565b600060208284031215611ecb57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611e0957600080fd5b60008060408385031215611f0757600080fd5b8235611f1281611ed2565b946020939093013593505050565b600060208284031215611f3257600080fd5b8135611e2981611ed2565b60008060408385031215611f5057600080fd5b50508035926020909101359150565b600080600060608486031215611f7457600080fd5b8335611f7f81611ed2565b92506020840135611f8f81611ed2565b929592945050506040919091013590565b60008083601f840112611fb257600080fd5b50813567ffffffffffffffff811115611fca57600080fd5b602083019150836020828501011115611fe257600080fd5b9250929050565b60008060208385031215611ffc57600080fd5b823567ffffffffffffffff81111561201357600080fd5b61201f85828601611fa0565b90969095509350505050565b60008060006040848603121561204057600080fd5b83359250602084013567ffffffffffffffff81111561205e57600080fd5b61206a86828701611fa0565b9497909650939450505050565b60008060006060848603121561208c57600080fd5b833561209781611ed2565b95602085013595506040909401359392505050565b8015158114611e0957600080fd5b600080604083850312156120cd57600080fd5b82356120d881611ed2565b915060208301356120e8816120ac565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561213857600080fd5b843561214381611ed2565b9350602085013561215381611ed2565b925060408501359150606085013567ffffffffffffffff8082111561217757600080fd5b818701915087601f83011261218b57600080fd5b81358181111561219d5761219d6120f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156121e3576121e36120f3565b816040528281528a60208487010111156121fc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561223357600080fd5b823561223e81611ed2565b915060208301356120e881611ed2565b600181811c9082168061226257607f821691505b6020821081141561229c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612309576123096122a2565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261234c5761234c61230e565b500490565b60006020828403121561236357600080fd5b8151611e2981611ddb565b60006020828403121561238057600080fd5b8151611e29816120ac565b6000821982111561239e5761239e6122a2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123d5576123d56122a2565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261241b6080830184611e5c565b9695505050505050565b8054600090600181811c908083168061243f57607f831692505b602080841082141561247a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561248e57600181146124bd576124ea565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506124ea565b60008881526020902060005b868110156124e25781548b8201529085019083016124c9565b505084890196505b50505050505092915050565b600061250b6125058387612425565b85612425565b7f2f0000000000000000000000000000000000000000000000000000000000000081528351612541816001840160208801611e30565b0160010195945050505050565b600082821015612560576125606122a2565b500390565b6000826125745761257461230e565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e7cf72724b9ab7b6720da8bf2c5ecf4d3546f880eb060908fac8bdda6329449f64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009fef8de6fb60f43079565ece74f235aed225face0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1
-----Decoded View---------------
Arg [0] : owner (address): 0x9fef8dE6FB60f43079565ECE74f235AED225face
Arg [1] : authority (address): 0x8c1927427eaAcA6A64E238544ADfb95451cc05A1
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009fef8de6fb60f43079565ece74f235aed225face
Arg [1] : 0000000000000000000000008c1927427eaaca6a64e238544adfb95451cc05a1
Loading...
Loading
Loading...
Loading
OVERVIEW
Quantum Keys are membership tokens that grant access to exclusive IRL events, online mints, and more!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.