Check out our tzNFT tutorial base here.
Today we’re releasing a tutorial about creating and interacting with NFTs based on Tezos’ FA2 token standard.
Our new NFT tutorial will teach you how to use the tznft CLI tool to originate and interact with an FA2 NFT contract implementation, and specifically how to:
- Use an NFT collection contract to mint a collection of tokens
- How to inspect token metadata and balances
- How to transfer created tokens
- How to transfer tokens on behalf of an owner
- How to include an IPFS hash as part of the token metadata
NFTs and Metadata
Non-fungible tokens (NFTs) are an increasingly popular blockchain primitive, representing unique digital objects across a range of contexts. In such cases, NFTs have been used to represent the right to own, use, and exchange digital art, collectibles, in-game assets, permissions, and even insurance. As implied by their name, NFTs differ from fungible tokens by the fact that each NFT is not mutually interchangeable. NFTs have unique token IDs, typically including metadata which links to a unique document, image, in-game item, or other content usually stored off-chain.
Metadata is often a critical driver of what makes an NFT valuable, especially by tying an NFT to its underlying artifact. A deeper treatment of metadata is beyond this release but we soon plan to release the draft of TZIP-16 which specifies a general contract metadata standard. We also plan to release a simple open-source UI allowing non-technical users to mint their own customizable NFTs and extend a basic NFT interface with popular capabilities (e.g. for a marketplace).
As always, we’re interested to hear developer feedback or from potential users of our tools!
FA2 is a multi-asset interface on the Tezos blockchain, enabling users to create a wide range of token types, such as fungible, non-fungible, or semi-fungible. FA2 provides a standard API to transfer tokens, check balances, administer permissions to other on-chain contracts, and manage metadata.
For past users of FA2 (TZIP-12), please note the most recent changes to the specification, which include a slight modification to the Operator API which breaks existing implementations.