Is there an NFT smart contract in Aztec?

Hi all,

I love NFTs and Zero Knowledge Proofs. I’m curious if there is an implementation of a private NFT smart contract on Aztec. Namely, all the NFTs would have metadata on-chain which is represented as a mapping from ID to metadata. Complementary to that, people would own UTXOs/notes of the NFT id that represents that they own the NFT. This would effectively hide who is the sender and receiver of the NFT. The main things that this contract would do would be the following operations:

  1. mint - Enables you to create an NFT as UTXO but the address of the receiver is not revealed
  2. transfer - You can transfer the NFT without revealing the sender and receiver address
  3. prove - You can prove that the NFT you own contains certain attributes. For example, the NFT has golden fur. Namely, you can construct a proof that you own an NFT that has golden fur attribute which is a part of a subset of a collection of the NFTs that all have golden fur

If the smart contract hasn’t been built, I would be very keen on building it for Aztec. I can provide more implementation details as well about how this smart contract would especially using Noir to build it

Yep, you can view the source code here: aztec-packages/noir-projects/noir-contracts/contracts/nft_contract at master · AztecProtocol/aztec-packages · GitHub

and there is a docs page with more info here: NFT contract | Privacy-first zkRollup | Aztec Documentation

1 Like

We have ERC721/ERC1155 contracts here: tezac/src/contracts at main · 0xandee/tezac · GitHub and integrate the NFT contract with App (sandbox) to demonstrate private Minting/Transfer on the way.