Token

 

Overview ERC-1155

Total Supply:
0 N/A

Holders:
1,067 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GBCLab

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion
File 1 of 7 : GBCL.sol
//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
    }
}

File 2 of 7 : ERC1155.sol
// 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;
    }
}

File 3 of 7 : Auth.sol
// 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);
}

File 4 of 7 : ERC2981.sol
// 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];
    }
}

File 5 of 7 : IERC2981.sol
// 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);
}

File 6 of 7 : ERC165.sol
// 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;
    }
}

File 7 of 7 : IERC165.sol
// 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);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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"}]

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


Loading