Common functions include code found in both ERC721 and ERC1155 Creator Contracts. These functions exist for either ERC721 or ERC1155 implementations. Implementation details can be found in the following smart contract files:
The token was minted by an extension that does not have approve transfer callbacks enabled, or did not implement approve transfer callbacks
This functionality is useful if you want to enforce on transfer rules, such as theOpenSea Operator Filter Registry.
Set to the 0x0000000000000000000000000000000000000000 address to disable.
Permissions: Owner/Admin function callable by contract owner only.
getApproveTransfer
Gets the address of the contract that is checked for transfer approvals. Returns 0x0000000000000000000000000000000000000000 if no contract is configured.
Permissions: Public function callable by anyone.
Token Owner Functions
burn
Burns (destroys) a token or tokens. The token creator extension is notified when this occurs.
Permissions: Public function only callable by token owner.
function burn(address account, uint256[] memory tokenIds, uint256[] memory amounts)
safeTransferFrom
Transfers ownership of a specific NFT from one address to another. When using safeTransferFrom the token contract checks to see that the receiver address is an IERC721Receiver, which implies that it knows how to handle ERC721 tokens (unlike the standard transferFrom function).
Permissions: Public function callable by token owner only
Input Parameters: from address, to address, tokenId
function safeTransferFrom(address _from, address _to, uint256 _tokenId)
When implementing transfers within your contracts its best practice to always use the safeTransferFrom function (rather than transferFrom) to ensure events set to trigger upon retrieval are successful (ensures receiver knows how to handle the tokens it is about to receive as an IERC721 or ERC1155 Receiver).
Metadata Functions
Metadata functions can add or modify a Token's URI, or Uniform Resource Identifier. This URI specifies the endpoint with information representing the NFT including its media and attributes, conforming to the ERC721 Metadata JSON Schema. This JSON is often hosted on decentralized protocols like Arweave, like we use within Manifold Studio.
setBaseTokenURI
Sets the base URI for any tokens created without an extension. Once set, the metadata URI will be base_uri/<tokenId> by default.
Permissions: Owner/Admin function callable by contract owner only.
function setBaseTokenURI(string calldata uri)
setTokenURIPrefix
Sets a prefix for all tokens minted without an extension. If configured, and a token has a URI set, tokenURI will return <prefixURI><tokenURI>.
Permissions: Owner/Admin function callable by contract owner only.
function setTokenURIPrefix(string calldata prefix)
setTokenURI
Sets a specific metadata URI for a given token created without an extension.Methods included for taking in both singular token values and arrays of multiple tokens/strings.
Permissions: Owner/Admin function callable by contract owner only.
function setTokenURI(uint256 tokenId, string calldata uri)
function setTokenURI(uint256[] memory tokenIds, string[] calldata uris)
Royalty Functions
Functions for querying or setting royalties on a contract or specific token.
getFeeRecipients
Gets royalty recipients for a given tokenId. Standard interface identifier for Rarible royalties.
Permissions: Public function callable by anyone.
function getFeeRecipients(uint256 id) public view
returns (address payable[] memory)
getFeeBps
Gets royalty percentage (bps) for a given tokenId.Standard interface identifier for Rarible royalties. Public function callable by anyone.
Permissions: Public function callable by anyone.
function getFeeBps(uint256 id) public view
returns (uint[] memory)
getFees
Gets royalty recipient and royalty percentage for a given tokenId. Standard interface identifier for Foundation royalties. Public function callable by anyone.
Permissions: Public function callable by anyone.
function getFees(unit256) public view
returns (address[], unit256[])
getRoyalties
Gets royalty recipient and royalty percentage for a given tokenId. Public function callable by anyone.
Permissions: Public function callable by anyone.
function getRoyalties(uint256 tokenId) view
returns (address payable[] memory, uint256[] memory)
royaltyInfo
Gets royalty configuration (receiver and royalty amount) for a given token provided tokenID and salePrice. Supports the same interface as other marketplace platforms such as Rarible or Foundation (EIP-2981 NFT Royalty Standard). Public function callable by anyone.
Permissions: Public function callable by anyone.
function royaltyInfo(uint256 tokenId, uint256 value) view
returns (address, uint256)
setRoyalties
Sets default royalties for all tokens on a contract. You can also use the same function specifying a particular tokenID to set royalties for that singular token.
Permissions: Owner/Admin function callable by contract owner only.
function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints)
function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints)