Uploading your NFT content to IPFS leveraging Pinata
This is part of a three step tutorial on minting NFTs on Flow. The steps to this tutorial are:
- Creating the Contract
- Uploading the asset to IPFS with Pinata - This Blog Entry
- Deploying the contract to the Flow Emulator and verifying that the NFT has been minted correctly with the correct content.
Before you mint an NFT, you’ll want to upload the file to the InterPlanetary File System (IPFS). In general, blockchains do not store large quantities of data well. Instead of storing the content of your image or video into the blockchain, you’ll want to store the content on IPFS, and provide the hash to your content in the metadata of the NFT token.
When you add a file to IPFS, the file is split into smaller chunks, which are cryptographically hashed, and given a unique fingerprint called the Content Identifier (CID). When someone goes to access your file via IPFS, they lookup this unique fingerprint. The lookup process will access their peer IPFS nodes to see whether they have access to the CID. Once IPFS finds the CID, then the file will be downloaded for use.
The easiest way to upload your content to IPFS is to make use of Pinata. Not only does Pinata enable you to easily place a file onto your own IPFS account, Pinata also provides you with other handy features so you don’t have to become an IPFS expert, e.g. a Fast Global CDN, IPFS Gateway, etc.
After you sign up for Pinata, upload the file that you’d like to mint as an NFT. Once you’ve uploaded your file, copy the CID to your clipboard.
let metadata : {String : String} = { "name": "AllCode Logo", "street_address": "Fillmore Street", "phone_number": "415-890-6431", "email": "[email protected]", "uri": "ipfs://QmVH5T7MFVU52hTfQdWvu73iFPEF3jizuGfyVLccTmBCX2" }
The NFT doesn’t actually store the image or video on the blockchain. Instead the wallet which renders the NFT will communicate with the smart contract to acquire the uri of the NFT. The wallet will then query IPFS for the file that resides at the uri. The wallet will render the file that resides at the IPFS uri.
In our next tutorial, we’ll deploy the contract to the Flow Emulator and verifying that the NFT has been minted correctly with the correct content.