Mary promises NFTs, but the documentation leads me to believe otherwise

Just a disclaimer I also posted this to /r/cardanodevelopers, I wanted to post here to since there’s quite a bit of discussion around NFTs but no real answers and I wanted to bring it to attention. There are of course the NFT DAO proposal on Project Catalyst and (apparently) 42 NFT related projects proposed on there, so it seems pertinent to discuss this.

So in almost all the news articles and videos Charles etc. has mentioned that Mary brings all native assets including NFTs. However, I’ve discovered that the documentation on native assets states that there are three minting policy types:

  • Single issuer - only one person can mint this type of token

  • Time-locked - can only be spent in or after a particular epoch period

  • One-time - can only be minted once

From my understanding, a single issuer policy could be used to mint a pseudo-NFT if you issue just one, and use a basic multisig script. That’s great. However, in my opinion this cannot be a true NFT since the issuer can just as easily mint another one with the same policy at a later date, making it fungible with the first token.

I’ve also read the discussion on this project catalyst regarding this, and there appears to be quite a bit of disagreement on the topic.

Therefore, if my understanding is correct, we require a one-time mint policy for true NFTs to ensure they are scarce and more cannot be minted later. The documentation states:

One-time mint policy … This type of policy needs Plutus smart contracts to be implemented.

Making me believe that we will not have NFTs until we have Plutus… Unless there is something I’m missing about the difference between these policies and what they mean in terms of a true non-fungible, scarce, indivisible token. I feel like there’s a gap here that isn’t being discussed in the open so I wanted to bring some attention to it, help others who are trying to mint their own NFTs, and hopefully answer a few questions.


1 Like

Hey I’ve seen you linked my metadata proposal in here. It has actually not much do to with the policy behind the token minting process. It’s about creating the properties for the NFT.

Anyway you are somehow right with that the current policies are not really optimal for NFTs. I personally think the time-locked policy is the best currently for NFTs, because you have the capability to create a token group in multiple transactions and as owner of a token you can be ensured it is staying unique after a certain slot.

With Plutus you can make policies that are based on a state machine where you can mint tokens forever but you keep track of an id that increases by one each time you mint a token with that policy. so each token will always just exist once, much like the erc721 contract.