What NFTs are made of?
Some key features define an NFT, regardless of the platform. Firstly, each token has a unique id that distinguishes it from all other tokens. This contrasts with a fungible token like Ether, which exists as an amount attached to an account or a wallet. There is no way to distinguish one Ether from another. As each NFT is unique, they are owned and traded individually, with the smart contract keeping track of who owns what.
Another critical feature of an NFT is the possibility to link to data stored outside of a smart contract. Storing or processing data outside of a smart contract is being “off the chain”. Since data stored on the chain needs to be processed, verified, and replicated across the entire blockchain network, it can be costly to store large amounts of data. This is often a problem for the use of NFTs, especially tokens that represent digital collectibles or works of Art, where storing all the work can cost the equivalent of millions of dollars.
How IPFS helps
When an NFT is created and linked to a digital file that lives on some other system, the way in which this link happens is very important. There are a few reasons why traditional HTTP links are not a great fit.
With an HTTP address like https://cloud-bucket.provider.com/my-nft.jpeg, anyone can fetch the contents of my-nft.jpeg, provided that the server owner pays his bills. However, there is no way to ensure that the content of my-nft.jpeg remains the same as when the NFT was created. The server owner can easily replace the my-nft.jpeg file for something completely different at any time, causing the NFT to change its meaning.
IPFS solves this problem using “Content Addressing”. Adding data to IPFS produces a “content identifier” (CID) that is directly derived from the data itself and from links to this data on the IPFS network. Since a CID can only refer to a specific piece of content, we know that no one can replace or change the content without breaking the link.
By using the CID, anyone can obtain a copy of IPFS’s network data as long as there is at least one copy on the network, even if the original provider has disappeared. This makes CIDs perfect for NFT storage.
All we need to do is place the CID in an ipfs:// URI (universal resource identifier) as described below:
ipfs://bafybeidlkqhddsjrdue7y3dy27pu5d7ydyemcls4z24szlyik3we7vqvam/my-nft.png
as a result, we have an immutable blockchain link to our token Data.
But what is a URI? It is a Universal Resource Identifier, as in the name itself, it is the resource identifier. It can be an image, a page, etc., since everything available on the internet needs a unique identifier to avoid confusion.
There may be cases where you want to change the metadata to an NFT after it’s published. That’s no problem! To update the URI for a token that has already been updated, all you need to do is add support to your smart contract. This will allow you to change the URI to a new IPFS URI while still leaving a record of the initial version in the blockchain’s transaction history. This provides responsibility and makes it clear to everyone what has been changed, when, and by whom.
To help explain how NFTs and IPFS can work together, IPFS created Minty – a simple command-line application to automatically coin an NFT and place it on IPFS.
NFT production platforms are rather complex. As with any modern web application, there are many decisions to be made about the technology, user interface conventions, API design, and so on. Blockchain-enabled DAPPS (decentralized applications) also need to interact with user wallets, such as Metamask, further increasing their complexity.
Since Minty was released to demonstrate the concepts and process of NFTs mining supported by IPFS, we don’t need to get involved in every detail of modern DAPP development. Instead, Minty is a simple command-line application written in Javascript.
IPFS: Interplanetary File Storage: Watch Here
Article and research | Marcus Ferreira Translation and Review | Carolina Martins