NFTs on Cardano

Should only be able to mint 1.

Naive solution proposal:

  • Set forge field amount to 1.
  • Does not work, we can submit many transactions, all minting one at a time.

Second option is to use existing NFT support, using deadlines. This guarantees that after deadline no new tokens will be minted.

However this is not a strong guarantee, you are reliant on external tools: blockchain explorer. The currency symbol alone does not suffice to guarantee uniqueness.

We need something which can only exist in a single transaction.

To do so, we can use UTxOs.

UTxOs are uniquely identified by transaction ID, and its index in the lists of outputs from Tx.

Minting an NFT

We provide a specific UTxO to minting policy, and check that transaction consumes this UTxO.

Once a UTxO is consumed, it can never be consumed again.

See Cardano NFT implementation