posted an update

ZKNFD Update: Aleo NFT Standard Integration

We’ve officially aligned our contract with the Aleo NFT Standard (ARC-721) to qualify for the $5,000 NFT Bounty sponsored by Capncrunch (zSociety).


What’s New in ZKNFD

NFT Standard Compliance

Our CredentialNFT now follows the ARC-721 structure:

  • Private ownership (private owner)
  • Private metadata (private data)
  • Unique edition commitment (scalar edition)
  • Public identifier via commit_nft(data, edition)

This ensures:

  • Privacy of NFT ownership
  • Privacy of domain metadata
  • Uniqueness enforcement using nft_commits

ARC-721 Functional Highlights

  • commit_nft(...): hashes the data struct, then commits it using edition
  • nft_owners: tracks public owners of private credentials
  • nft_commits: prevents duplicate credentials (ensures 1-of-1 issuance)

Transition Breakdown

issue_domain_credential(...) (async)

  • Accepts a domain, its parent, a signed Merkle root, and an issuer
  • Verifies the root and signature using Aleo's signature::verify
  • Creates a private NFT conforming to ARC-721
  • Writes public mappings for future transfer, verification, and registry

verify_domain_credential(...)

  • Verifies any Merkle leaf against the domain credential’s root
  • Zero-knowledge proof verification for domain-linked identity claims

Why This Matters for the NFT Bounty

  • Private ownership and private data are first-class citizens
  • Fully compatible with ARC-721’s marketplace, registry, and transfer extensions
  • Prepares the path for future features like transfer_private_to_public, approve_public, and publish_nft_content

Next Steps

  • Add NFTView for optional public visibility of NFT data
  • Support transfer_public_to_private and approval flow
  • Deploy a verifier or registry UI connected to the minted credentials

This update locks ZKNFD in as a strong contender for the NFT Bounty by integrating native Leo privacy features into domain credentials — a real, usable NFT use case that couldn't be built anywhere but Aleo.

Log in or sign up for Devpost to join the conversation.