Finding Image Files For NFTs

I have been saving the images of some of my NFTs by downloading them from OpenSea. I wanted to know if those images were the highest resolution ones available. Then I started to wonder about the actual files themselves – where are they stored? how do I find them? What happens if a random server somewhere that holds the images goes offline?

  • The idea of “NFT Persistence”
  • The image or video of the NFT does not actually live on the blockchain.
  • The NFT token refers to a file that lives somewhere else on the web.
  • So there is some risk that it could be taken offline.
  • There is no consensus on best practices, so caveat emptor.
  • Most people are not aware of this., especially those new to the NFT space.
  • Think of a painting with a certificate of authenticity and ownership. The certificate is a record stored on the blockchain (Ethereum in this case) and the painting is the image file, which is stored somewhere else.
  • It would be far too expensive to store the actual image on Ethereum.
  • The ERC-721 standard does not care where the creator puts the actual data or the reliability of the storage.
  • TokenURI field in the token contract points to where the file is stored.
  • Typically the data I have seen are stored on IPFS (The Interplanetary File System).
  • Content Addressing by IPFS makes a hash of the content itself and can find the nearest copy.
  • Right clicking on a preview image from OpenSea or other NFT sites typically does not provide a high res image.
  • This medium article was very helpful outlining the steps to find my image files.
  • Steps (assuming starting from OpenSea):
    • find the minting smart contract in the details section of the NFT
    • Open the contract in Etherscan
    • Navigate to the “Contract” tab
    • Click on “Read Contract”
    • A list of functions will be displayed
    • select “tokenURI” and enter your NFT’s token id (from the OpenSea details page)
    • An IPFS address will be displayed
    • need to change “ipfs://” at beginning of address to “https://ipfs.io/ipfs/
    • will navigate to the actual image, or a page with metadata about the NFT
    • if the metadata case – follow the same steps as before, copy the image address and change ipfs:// to https://ipfs.io/ipfs at the beginning of the address.
  • This process is a bit laborious.

Questions/Thoughts:

  • How do I make sure that the images persist in IPFS?
  • Is it worthwhile to run your own IPFS node if you have a lot of NFTs?
  • The articles I referenced are about a year old. Is there better consensus now on maintaining NFT persistence?
  • Are there other services or competitors to IPFS?
  • Before purchasing an NFT, it seems to me that checking where the image is stored would be an important part of due diligence.
  • What about completely “on-chain” NFTs like some generative art projects and something like Terraforms by Mathcastles. Is the blockchain data/code sufficient to generate the image/video?

References: