NFT with IPFS

Hello everyone,
I followed the “How to Create NFTs Like NBA Top Shot With Flow and IPFS” tutorial using file storage via IPFS (Pinata), but there are things bothering me and I will need your help to clear up a few points.
The principle of NFT for example for the case of a .jpeg photo is to make this photo unique and non-reproducible otherwise it loses its meaning.
In the tutorial “How to Create NFTs Like NBA Top Shot With Flow and IPFS” the IPFS link is recorded in the NFT metadata and this poses a problem in my opinion, because these metadata are necessarily accessible to all (otherwise impossible to prove that the NFT in question does refer to a file), and yet if everyone has access to the information of the NFT it means that anyone could retrieve the IPFS link of the photo and mint another NFT pointing to this same link IPFS. So there is nothing unique anymore!
To avoid this it would be necessary not to give access to the IPFS link but by doing this how to prove to others that the NFT does indeed refer to the photo of the IPFS link ??

I thank you in advance for your help on this subject because for me in this way the NFT loses all its meaning which is to make a file unique in this example.

Good question! Yep, anyone can mint an NFT with the same metadata, regardless of how the metadata is stored (i.e. whether it’s on chain or via an external storage solution). However emphasis on the an! Rather than seeing the underlying data as the source of truth, you should see the NFT (the resource created via Cadence contracts) to be the source of truth: your resources are deployed from your contract, and your dapp is compatible with your contract and resource types, which only your contract controls, so even if someone were to copy your NFTs and mint clones, they would have do so using a different contract, and any smart contract transaction (eg a marketplace sale) that expects a specific type from your contract (e.g. Sylv1umNFT), will fail, meaning only your NFTs will be compatible.

If, instead, you want to create contracts that allow anyone to mint NFTs, you can enforce some form of uniqueness in the created resources by keeping a hash of minted contract metadata and checking uniqueness on every mint so that duplication is blocked at the contract level.

Lastly, if you want to use an open/non-curated NFT marketplace where you can’t control the underlying contract and are worried about duplication, keep in mind these marketplaces still have the concept of authors/minting account, so your NFTs would always only be from your account, and you can make that clear in your marketing/communication/etc.

Hope this helps!

2 Likes

Great ! Thanks for your answer ! Your explanations helped me a lot !!

1 Like