Create non-fungible tokens
An NFT collection is a series of non-fungible tokens that each have a unique identifier value. Each token's metadata may be the same, such as the name, image, and description, or each token's data can be unique and associated with a 'rarity' value, where some metadata values are less common than others. Rarity metadata attributes are common in generative NFT collections, often referring to an NFT collection where the artwork for each image has been randomly generated and some components only appear in a select few of the generated images.
To create an NFT collection on ICP, it is recommended to use the ICRC-7 and ICRC-37 standards. ICRC-7 is the base NFT standard, while ICRC-37 is an extension of ICRC-7 that enables an approve
workflow so that owners of an NFT can allow another user to spend or transfer the NFT on their behalf.
Checklist: How to create a non-fungible token
- Determine your collection's name, symbol, imagery, unique properties or attributes, functionality, and tokenomics.
- Refer to the token best practices and security best practices to educate yourself on the precautions you should take when developing a DeFi asset.
- Create or determine the developer identity that will act as the deployer of the collection.
- Setup a local ICRC-7 canister. For Motoko projects, it is recommended to use the package
icrc_nft.mo
- Initialize your collection's settings.
- Determine if your token will support approval workflows and if so, enable ICRC-37 methods.
- Mint the NFTs in your collection locally.
- Run local tests by calling the collection's canister.
- Deploy your collection to the mainnet for production use.
Resources
ICRC-3: The standard for transaction logs and archives.