Token
Overview ERC-1155
Total Supply:
0 N/A
Holders:
1,067 addresses
Transfers:
-
Contract:
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GBCLab
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; import {ERC1155} from "@rari-capital/solmate/src/tokens/ERC1155.sol"; import {Auth, Authority} from "@rari-capital/solmate/src/auth/Auth.sol"; import {ERC2981} from "@openzeppelin/contracts/token/common/ERC2981.sol"; /** * @title Blueberry Lab Items * @author IrvingDevPro * @notice This contract manage the tokens usable by GBC holders */ contract GBCLab is ERC1155, Auth, ERC2981 { constructor(address _owner, Authority _authority) Auth(_owner, _authority) {} string private _uri; mapping(uint256 => string) private _uris; function uri(uint256 id) public view override returns (string memory) { string memory uri_ = _uris[id]; if (bytes(uri_).length > 0) return uri_; return _uri; } function setUri(string memory uri_) external requiresAuth { _uri = uri_; } function setUri(uint256 id, string memory uri_) external requiresAuth { _uris[id] = uri_; if (bytes(uri_).length == 0) { emit URI(_uri, id); } else { emit URI(uri_, id); } } function mint(address to, uint256 id, uint256 amount, bytes memory data) external requiresAuth { _mint(to, id, amount, data); } function batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) external requiresAuth { _batchMint(to, ids, amounts, data); } function burn(address to, uint256 id, uint256 amount) external requiresAuth { _burn(to, id, amount); } function batchBurn( address to, uint256[] memory ids, uint256[] memory amounts ) external requiresAuth { _batchBurn(to, ids, amounts); } function setRoyalty(uint256 id, address receiver, uint96 feeNumerator) external requiresAuth { if(receiver == address(0)) return _resetTokenRoyalty(id); _setTokenRoyalty(id, receiver, feeNumerator); } function setRoyalty(address receiver, uint96 feeNumerator) external requiresAuth { if(receiver == address(0)) return _deleteDefaultRoyalty(); _setDefaultRoyalty(receiver, feeNumerator); } function supportsInterface(bytes4 interfaceId) public pure override(ERC1155, ERC2981) returns (bool) { return interfaceId == 0x2a55205a || // ERC165 Interface ID for ERC2981 interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public virtual { require(ids.length == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); // Storing these outside the loop saves ~15 gas per iteration. uint256 id; uint256 amount; for (uint256 i = 0; i < ids.length; ) { id = ids[i]; amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) public view virtual returns (uint256[] memory balances) { require(owners.length == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal virtual { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155BatchReceived.selector; } }
// 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() virtual { 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 (last updated v4.6.0) (token/common/ERC2981.sol) pragma solidity ^0.8.0; import "../../interfaces/IERC2981.sol"; import "../../utils/introspection/ERC165.sol"; /** * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the * fee is specified in basis points by default. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC2981 is IERC2981, ERC165 { struct RoyaltyInfo { address receiver; uint96 royaltyFraction; } RoyaltyInfo private _defaultRoyaltyInfo; mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); } /** * @inheritdoc IERC2981 */ function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) { RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; if (royalty.receiver == address(0)) { royalty = _defaultRoyaltyInfo; } uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); return (royalty.receiver, royaltyAmount); } /** * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an * override. */ function _feeDenominator() internal pure virtual returns (uint96) { return 10000; } /** * @dev Sets the royalty information that all ids in this contract will default to. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: invalid receiver"); _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Removes default royalty information. */ function _deleteDefaultRoyalty() internal virtual { delete _defaultRoyaltyInfo; } /** * @dev Sets the royalty information for a specific token id, overriding the global default. * * Requirements: * * - `tokenId` must be already minted. * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: Invalid parameters"); _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Resets royalty information for the token id back to the global default. */ function _resetTokenRoyalty(uint256 tokenId) internal virtual { delete _tokenRoyaltyInfo[tokenId]; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165.sol"; /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// 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); }
{ "optimizer": { "enabled": true, "runs": 1 }, "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":"contract Authority","name":"_authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","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":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","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":"uint256","name":"amount","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":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"uri_","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setUri","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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200258e3803806200258e8339810160408190526200003491620000d1565b600280546001600160a01b038085166001600160a01b0319928316811790935560038054918516919092161790556040518391839133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a35050505062000128565b60008060408385031215620000e4578182fd5b8251620000f1816200010f565b602084015190925062000104816200010f565b809150509250929050565b6001600160a01b03811681146200012557600080fd5b50565b61245680620001386000396000f3fe608060405234801561001057600080fd5b50600436106101065760003560e01c8062fdd58e1461010b57806301ffc9a7146101465780630e89341c1461016957806313af4035146101895780632a55205a1461019e5780632eb2c2d6146101d05780634e1273f4146101e3578063731133e914610203578063782f08ae146102165780637a9e5e4b1461022957806380c8d6901461023c5780638da5cb5b1461024f5780638f2fc60b1461027a5780639b642de11461028d578063a22cb465146102a0578063b48ab8b6146102b3578063bf7e214f146102c6578063e985e9c5146102d9578063f242432a14610307578063f5298aca1461031a578063f6eb127a1461032d575b600080fd5b610133610119366004611b93565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b610159610154366004611cfe565b610340565b604051901515815260200161013d565b61017c610177366004611d68565b6103ad565b60405161013d91906120db565b61019c6101973660046118d0565b6104ee565b005b6101b16101ac366004611e01565b610575565b604080516001600160a01b03909316835260208301919091520161013d565b61019c6101de36600461192b565b610623565b6101f66101f1366004611c7a565b61089c565b60405161013d919061209a565b61019c610211366004611bf2565b6109e6565b61019c610224366004611dbd565b610a2a565b61019c6102373660046118d0565b610acf565b61019c61024a366004611d80565b610bc8565b600254610262906001600160a01b031681565b6040516001600160a01b03909116815260200161013d565b61019c610288366004611c46565b610c2b565b61019c61029b366004611d36565b610c7f565b61019c6102ae366004611b66565b610cc4565b61019c6102c1366004611ad0565b610d30565b600354610262906001600160a01b031681565b6101596102e73660046118f3565b600160209081526000928352604080842090915290825290205460ff1681565b61019c6103153660046119e5565b610d6e565b61019c610328366004611bbe565b610f44565b61019c61033b366004611a5e565b610f81565b600063152a902d60e11b6001600160e01b03198316148061037157506301ffc9a760e01b6001600160e01b03198316145b8061038c5750636cdb3d1360e11b6001600160e01b03198316145b806103a757506303a24d0760e21b6001600160e01b03198316145b92915050565b6000818152600760205260408120805460609291906103cb9061231d565b80601f01602080910402602001604051908101604052809291908181526020018280546103f79061231d565b80156104445780601f1061041957610100808354040283529160200191610444565b820191906000526020600020905b81548152906001019060200180831161042757829003601f168201915b5050505050905060008151111561045b5792915050565b600680546104689061231d565b80601f01602080910402602001604051908101604052809291908181526020018280546104949061231d565b80156104e15780601f106104b6576101008083540402835291602001916104e1565b820191906000526020600020905b8154815290600101906020018083116104c457829003601f168201915b5050505050915050919050565b610504336000356001600160e01b031916610fbe565b6105295760405162461bcd60e51b815260040161052090612194565b60405180910390fd5b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60008281526005602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916105ea5750604080518082019091526004546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610609906001600160601b0316876122e7565b61061391906122c7565b91519350909150505b9250929050565b8483146106425760405162461bcd60e51b8152600401610520906121e4565b336001600160a01b038916148061067c57506001600160a01b038816600090815260016020908152604080832033845290915290205460ff165b6106985760405162461bcd60e51b815260040161052090612257565b60008060005b8781101561076f578888828181106106c657634e487b7160e01b600052603260045260246000fd5b9050602002013592508686828181106106ef57634e487b7160e01b600052603260045260246000fd5b6001600160a01b038e166000908152602081815260408083208984528252822080549390910294909401359550859392509061072c908490612306565b90915550506001600160a01b038a16600090815260208181526040808320868452909152812080548492906107629084906122af565b909155505060010161069e565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03166000805160206123c18339815191528b8b8b8b6040516107b19493929190612073565b60405180910390a46001600160a01b0389163b156108675760405163bc197c8160e01b808252906001600160a01b038b169063bc197c81906108059033908f908e908e908e908e908e908e90600401611f04565b602060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190611d1a565b6001600160e01b03191614610874565b6001600160a01b03891615155b6108905760405162461bcd60e51b8152600401610520906121ba565b50505050505050505050565b60608382146108bd5760405162461bcd60e51b8152600401610520906121e4565b836001600160401b038111156108e357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561090c578160200160208202803683370190505b50905060005b848110156109dd5760008087878481811061093d57634e487b7160e01b600052603260045260246000fd5b905060200201602081019061095291906118d0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085858481811061099457634e487b7160e01b600052603260045260246000fd5b905060200201358152602001908152602001600020548282815181106109ca57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152600101610912565b50949350505050565b6109fc336000356001600160e01b031916610fbe565b610a185760405162461bcd60e51b815260040161052090612194565b610a2484848484611077565b50505050565b610a40336000356001600160e01b031916610fbe565b610a5c5760405162461bcd60e51b815260040161052090612194565b60008281526007602090815260409091208251610a7b928401906116ae565b508051610aad57816000805160206124018339815191526006604051610aa191906120ee565b60405180910390a25050565b8160008051602061240183398151915282604051610aa191906120db565b5050565b6002546001600160a01b0316331480610b73575060035460405163b700961360e01b81526001600160a01b039091169063b700961390610b2390339030906001600160e01b03196000351690600401611fc6565b60206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190611ce2565b610b7c57600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b610bde336000356001600160e01b031916610fbe565b610bfa5760405162461bcd60e51b815260040161052090612194565b6001600160a01b038216610c1b575050600090815260056020526040812055565b610c268383836111b6565b505050565b610c41336000356001600160e01b031916610fbe565b610c5d5760405162461bcd60e51b815260040161052090612194565b6001600160a01b038216610c7557610acb6000600455565b610acb828261127f565b610c95336000356001600160e01b031916610fbe565b610cb15760405162461bcd60e51b815260040161052090612194565b8051610acb9060069060208401906116ae565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d46336000356001600160e01b031916610fbe565b610d625760405162461bcd60e51b815260040161052090612194565b610a2484848484611335565b336001600160a01b0387161480610da857506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610dc45760405162461bcd60e51b815260040161052090612257565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610df5908490612306565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610e2b9084906122af565b909155505060408051858152602081018590526001600160a01b03808816929089169133916000805160206123e1833981519152910160405180910390a46001600160a01b0385163b15610f135760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e6190610eb19033908b908a908a908a908a90600401611ff3565b602060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190611d1a565b6001600160e01b03191614610f20565b6001600160a01b03851615155b610f3c5760405162461bcd60e51b8152600401610520906121ba565b505050505050565b610f5a336000356001600160e01b031916610fbe565b610f765760405162461bcd60e51b815260040161052090612194565b610c26838383611522565b610f97336000356001600160e01b031916610fbe565b610fb35760405162461bcd60e51b815260040161052090612194565b610c26838383611594565b6003546000906001600160a01b03168015801590611057575060405163b700961360e01b81526001600160a01b0382169063b70096139061100790879030908890600401611fc6565b60206040518083038186803b15801561101f57600080fd5b505afa158015611033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110579190611ce2565b8061106f57506002546001600160a01b038581169116145b949350505050565b6001600160a01b038416600090815260208181526040808320868452909152812080548492906110a89084906122af565b909155505060408051848152602081018490526001600160a01b0386169160009133916000805160206123e1833981519152910160405180910390a46001600160a01b0384163b1561118d5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e619061112b90339060009089908990899060040161202e565b602060405180830381600087803b15801561114557600080fd5b505af1158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d9190611d1a565b6001600160e01b0319161461119a565b6001600160a01b03841615155b610a245760405162461bcd60e51b8152600401610520906121ba565b6127106001600160601b03821611156111e15760405162461bcd60e51b81526004016105209061220d565b6001600160a01b0382166112355760405162461bcd60e51b815260206004820152601b60248201527a455243323938313a20496e76616c696420706172616d657465727360281b6044820152606401610520565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600590529190942093519051909116600160a01b029116179055565b6127106001600160601b03821611156112aa5760405162461bcd60e51b81526004016105209061220d565b6001600160a01b0382166112fc5760405162461bcd60e51b815260206004820152601960248201527822a921991c9c189d1034b73b30b634b2103932b1b2b4bb32b960391b6044820152606401610520565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600455565b8251825181146113575760405162461bcd60e51b8152600401610520906121e4565b60005b818110156114025783818151811061138257634e487b7160e01b600052603260045260246000fd5b6020026020010151600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106113d057634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060008282546113f591906122af565b909155505060010161135a565b50846001600160a01b031660006001600160a01b0316336001600160a01b03166000805160206123c183398151915287876040516114419291906120ad565b60405180910390a46001600160a01b0385163b156114f25760405163bc197c8160e01b808252906001600160a01b0387169063bc197c81906114909033906000908a908a908a90600401611f68565b602060405180830381600087803b1580156114aa57600080fd5b505af11580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e29190611d1a565b6001600160e01b031916146114ff565b6001600160a01b03851615155b61151b5760405162461bcd60e51b8152600401610520906121ba565b5050505050565b6001600160a01b03831660009081526020818152604080832085845290915281208054839290611553908490612306565b909155505060408051838152602081018390526000916001600160a01b0386169133916000805160206123e1833981519152910160405180910390a4505050565b8151815181146115b65760405162461bcd60e51b8152600401610520906121e4565b60005b81811015611661578281815181106115e157634e487b7160e01b600052603260045260246000fd5b6020026020010151600080876001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061162f57634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060008282546116549190612306565b90915550506001016115b9565b5060006001600160a01b0316846001600160a01b0316336001600160a01b03166000805160206123c183398151915286866040516116a09291906120ad565b60405180910390a450505050565b8280546116ba9061231d565b90600052602060002090601f0160209004810192826116dc5760008555611722565b82601f106116f557805160ff1916838001178555611722565b82800160010185558215611722579182015b82811115611722578251825591602001919060010190611707565b5061172e929150611732565b5090565b5b8082111561172e5760008155600101611733565b60008083601f840112611758578182fd5b5081356001600160401b0381111561176e578182fd5b6020830191508360208260051b850101111561061c57600080fd5b600082601f830112611799578081fd5b813560206001600160401b038211156117b4576117b461236e565b8160051b6117c382820161227f565b8381528281019086840183880185018910156117dd578687fd5b8693505b858410156117ff5780358352600193909301929184019184016117e1565b50979650505050505050565b60008083601f84011261181c578182fd5b5081356001600160401b03811115611832578182fd5b60208301915083602082850101111561061c57600080fd5b600082601f83011261185a578081fd5b81356001600160401b038111156118735761187361236e565b611886601f8201601f191660200161227f565b81815284602083860101111561189a578283fd5b816020850160208301379081016020019190915292915050565b80356001600160601b03811681146118cb57600080fd5b919050565b6000602082840312156118e1578081fd5b81356118ec81612384565b9392505050565b60008060408385031215611905578081fd5b823561191081612384565b9150602083013561192081612384565b809150509250929050565b60008060008060008060008060a0898b031215611946578384fd5b883561195181612384565b9750602089013561196181612384565b965060408901356001600160401b038082111561197c578586fd5b6119888c838d01611747565b909850965060608b01359150808211156119a0578586fd5b6119ac8c838d01611747565b909650945060808b01359150808211156119c4578384fd5b506119d18b828c0161180b565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156119fd578182fd5b8635611a0881612384565b95506020870135611a1881612384565b9450604087013593506060870135925060808701356001600160401b03811115611a40578283fd5b611a4c89828a0161180b565b979a9699509497509295939492505050565b600080600060608486031215611a72578283fd5b8335611a7d81612384565b925060208401356001600160401b0380821115611a98578384fd5b611aa487838801611789565b93506040860135915080821115611ab9578283fd5b50611ac686828701611789565b9150509250925092565b60008060008060808587031215611ae5578384fd5b8435611af081612384565b935060208501356001600160401b0380821115611b0b578485fd5b611b1788838901611789565b94506040870135915080821115611b2c578384fd5b611b3888838901611789565b93506060870135915080821115611b4d578283fd5b50611b5a8782880161184a565b91505092959194509250565b60008060408385031215611b78578182fd5b8235611b8381612384565b915060208301356119208161239c565b60008060408385031215611ba5578182fd5b8235611bb081612384565b946020939093013593505050565b600080600060608486031215611bd2578081fd5b8335611bdd81612384565b95602085013595506040909401359392505050565b60008060008060808587031215611c07578182fd5b8435611c1281612384565b9350602085013592506040850135915060608501356001600160401b03811115611c3a578182fd5b611b5a8782880161184a565b60008060408385031215611c58578182fd5b8235611c6381612384565b9150611c71602084016118b4565b90509250929050565b60008060008060408587031215611c8f578182fd5b84356001600160401b0380821115611ca5578384fd5b611cb188838901611747565b90965094506020870135915080821115611cc9578384fd5b50611cd687828801611747565b95989497509550505050565b600060208284031215611cf3578081fd5b81516118ec8161239c565b600060208284031215611d0f578081fd5b81356118ec816123aa565b600060208284031215611d2b578081fd5b81516118ec816123aa565b600060208284031215611d47578081fd5b81356001600160401b03811115611d5c578182fd5b61106f8482850161184a565b600060208284031215611d79578081fd5b5035919050565b600080600060608486031215611d94578081fd5b833592506020840135611da681612384565b9150611db4604085016118b4565b90509250925092565b60008060408385031215611dcf578182fd5b8235915060208301356001600160401b03811115611deb578182fd5b611df78582860161184a565b9150509250929050565b60008060408385031215611e13578182fd5b50508035926020909101359150565b81835260006001600160fb1b03831115611e3a578081fd5b8260051b80836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b83811015611e8557815187529582019590820190600101611e69565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452815b81811015611ede57602081850181015186830182015201611ec2565b81811115611eef5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0389811682528816602082015260a060408201819052600090611f31908301888a611e22565b8281036060840152611f44818789611e22565b90508281036080840152611f59818587611e90565b9b9a5050505050505050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611f9490830186611e56565b8281036060840152611fa68186611e56565b90508281036080840152611fba8185611eb9565b98975050505050505050565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6001600160a01b03878116825286166020820152604081018590526060810184905260a060808201819052600090611fba9083018486611e90565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061206890830184611eb9565b979650505050505050565b604081526000612087604083018688611e22565b8281036020840152612068818587611e22565b6020815260006118ec6020830184611e56565b6040815260006120c06040830185611e56565b82810360208401526120d28185611e56565b95945050505050565b6020815260006118ec6020830184611eb9565b6000602080835281845483600182811c91508083168061210f57607f831692505b85831081141561212d57634e487b7160e01b87526022600452602487fd5b87860183815260200181801561214a576001811461215b57612185565b60ff19861682528782019650612185565b60008b815260209020895b8681101561217f57815484820152908501908901612166565b83019750505b50949998505050505050505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6020808252600f908201526e0988a9c8ea890be9a92a69a82a8869608b1b604082015260600190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b604051601f8201601f191681016001600160401b03811182821017156122a7576122a761236e565b604052919050565b600082198211156122c2576122c2612358565b500190565b6000826122e257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561230157612301612358565b500290565b60008282101561231857612318612358565b500390565b600181811c9082168061233157607f821691505b6020821081141561235257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461239957600080fd5b50565b801515811461239957600080fd5b6001600160e01b03198116811461239957600080fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529ba26469706673582212200d6d42152bc155107487d638dff173249d742b242d9cae7f951418275355550064736f6c63430008040033000000000000000000000000de2dbb7f1c893cc5e2f51cbfd2a73c8a016183a0000000000000000000000000575f40e8422efa696108dafd12cd8d6366982416
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000de2dbb7f1c893cc5e2f51cbfd2a73c8a016183a0000000000000000000000000575f40e8422efa696108dafd12cd8d6366982416
-----Decoded View---------------
Arg [0] : _owner (address): 0xde2dbb7f1c893cc5e2f51cbfd2a73c8a016183a0
Arg [1] : _authority (address): 0x575f40e8422efa696108dafd12cd8d6366982416
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000de2dbb7f1c893cc5e2f51cbfd2a73c8a016183a0
Arg [1] : 000000000000000000000000575f40e8422efa696108dafd12cd8d6366982416