My Initial Review of Chia’s NFT0 Standard
Chia released their new standard for NFTs last week. I’ve had time to go over the initial release and test out all the available endpoints. I wanted to give some thoughts on the overall process and some questions I have for future releases. All my information comes from a Chia blogpost, developer guide, and my own experience issuing NFTs on the Chia testnet.
Setup
To get set up, you need to install a development version of Chia by cloning a specific branch of their chia-blockchain repository, pause or uninstall any running instances of Chia, and switch over to their testnet. Also, if you don’t have the testnet already synced, you are instructed to download the Chia synced testnet node. The recommendation is you should have at least 50 GB of space available on your machine.
I have experience following instructions like these for other projects, so it’s not a big deal for me. However, I can see less experienced developers struggling to get through this setup, or not able to meet the requirements (I’m not sure if everyone has 50 GB lying around for a blockchain testnet node).
I think this is mostly a function of the standards age. It’s brand new and being actively worked on. As time goes on, I’m sure these instructions will become easier, especially once it makes it to their mainnet.
Version
After installation, the documentation asks you to check your Chia version. My version differed from what was posted in the developer guide.
My version:
Chia developer guide version
Having a mismatch between versions didn't ruin my experience, but it did give me an uneasy feeling when I saw it. In the past, I’ve spent hours debugging walkthroughs because of changes between the version documented and what is most recent. My guess is this documentation will be updated once the new NFT1 standard is released.
You can only issue NFT0 tokens on the Chia testnet. The intention is to have an early access token for developers to try and give feedback.
Endpoints
Once I had everything installed and configured, all the endpoints worked without issue. I was able to create an NFT wallet, mint a token, list out my tokens, transfer a token, and add a URI to a token without issue. The commands themselves were easy to understand and well documented within the CLI.
The first thing you need to do is create an NFT wallet. Each public/private key pair in Chia can have multiple wallets. Once created, you’ll be able to see a new wallet when you run thechia wallet show command.
I don’t mind having different wallets for each key pair at the moment. My only concern is how this will scale with the number of wallets Chia hopes to make available. We’ll have to wait and see on that.
Another concern I had with multiple wallets had to do with token transfers. Take NFTs as an example. If I need an NFT wallet to hold an NFT token, what happens if I try to transfer an NFT to an address without an NFT wallet?
Thankfully, the developers at Chia already considered this scenario. If you transfer an NFT to an address that does not have an NFT wallet, Chia will create an NFT wallet for that address automatically.
Wrapping Up
Once I got past the initial setup, the NFT0 standard was intuitive to use. The endpoints are simple and well documented. According to Chia, the first production release for their NFT standard will be geared toward a fine art vertical. I’m interested in hearing about the other verticals they plan on addressing.
One of the larger questions I have is regarding metadata or attributes stored in an NFT. Most of the NFTs you see in marketplaces like OpenSea have attributes that are used to describe the NFT. Attributes are stored off-chain, usually on IPFS, in JSON files.
My hope is Chia can take the next step by storing attributes inside the NFT payload. I think it would be wise for Chia to define standards for their NFT attributes. Otherwise, different token providers will have their own standards.
If you're interested in using the NFT0 standard, I would highly recommend giving it a try.