Secret NFT Update: Reference Implementation Complete + New Tutorial Available!

Hi all!

Today we have an exciting update on Secret NFTs - privacy-preserving non-fungible tokens built on Secret Network. As part of the work on the first Secret Grant, the reference implementation for SNIP721 (a Secret NFT standard) has been completed!

Secret Network’s ability to provide programmable privacy dramatically expands the design space for NFTs, which can be so much more than simple representations of digital artwork. This blog post will walk through the unique properties of Secret NFTs that will unlock many new and critical use cases across multiple fields, including art and gaming. It will also link to a new tutorial (in partnership with Figment Learn) that will teach you how to create your very own Secret NFT!

Thanks to @baedrik for his amazing work on the SNIP-721 standard. Please read the full update for more information!

Here is the completed reference implementation.
And here is the updated specification.

This is massive work that opens up a new design space for NFTs. Secret NFTs are unique in their properties, including:

Private ownership: Since NFTs are rare, anyone can know who owns a certain NFT and correlate addresses with individuals. Allowing for private ownership of NFTs ensures your assets and transactions do not need to be exposed to everyone by default, which otherwise restricts the potential growth and adoption of NFTs.

Private metadata: In addition to public metadata, Secret NFTs provide an optional private metadata field. This enables you to do things like have game cards that have some public abilities, as well as special hidden abilities. Or an art NFT creator might choose to make a thumbnail or watermarked version of the image public so people have an idea of what they are buying, but the full resolution/non-watermarked version is private and must be purchased to view it.

Because Secret Network provides programmable privacy, NFT contract creators have a ton of choice in how their NFTs work:

  • You can choose whether the token supply is public/private. If it is public, anyone can query how many NFTs exist in the contract and what their token IDs are. If the token supply is private, only the authorized minters can view the IDs and number of tokens.
  • You can choose if the owner of an NFT is public/private. Even if the contract creator chooses to make ownership public, any user can change their default to make all NFTs they own in that contract have private ownership.
  • You can choose if NFTs contain sealed metadata, in which no one, not even the owner, can view or alter the private metadata until the owner of the NFT irreversibly unwraps it. This is useful for implementing lootboxes or game card packs that have unknown but already determined contents (instead of randomly determining the contents after unwrapping). Anyone can query whether an NFT has been unwrapped.
  • You can choose if the sealed metadata remains private after unwrapping. This can be useful if they are games cards that contain hidden abilities. You still want the abilities to remain hidden for gameplay, even after you open your mystery pack.
  • You can choose whether a minter can alter the metadata of an NFT. For gameplay, this could be used to level-up your NFTs.
  • You can choose whether an NFT owner can alter the metadata of an NFT. For gameplay, you wouldn’t want an owner to give his card any ability he wants, but the idea of an evolving NFT where each owner can make their mark and pass it along to the next owner to do the same is intriguing.

Reply here if you’re interested in extending this awesome work - you could be eligible for your own Secret Grant from our $50M+ SCRT ecosystem pool!