As NFTs continue their march into the mainstream, it’s important to know how these supposedly permanent digital assets stay that way – or not. IPFS (or the InterPlanetary File System) is a protocol that many NFTs (or non-fungible tokens) point to as their underlying asset. It’s part of the backbone of this new digital economy.
NFTs are sold on the idea that a blockchain token that corresponds to another digital file – be they MP3s audio files, JPEGs of digital art or PDFs of mortgage certificates – can have monetary value if it is provably unique. But that non-fungible token, which will live as long as Ethereum or Solana or some such platform exist, isn’t the data it’s pegged to. To make these other files last, many NFT minters have turned to distributed file-sharing systems developed by Protocol Labs – one of the industry’s blue chips.
Chris Dupres is the editor of the Chia Plot, where a version of this article first published, and experienced IT professional.
Most people feel that this means every part of an NFT is hosted on a blockchain and immutable. Nothing could be farther from the truth.
I don’t want to get too deep into how IPFS works, but it needs an overview. IPFS is a distributed file system similar to a BitTorrent swarm but with no central tracker, just a distributed hash table (DHT) hosted by nodes that maintains a sort of data ledger. Git, the open-source software management tool, also uses Merkle trees to form blocks that identify the files, which might be where the confusion with traditional blockchains comes from, but it is not a blockchain. Git uses Merkle trees to organize releases and ensure that different versions don’t accidentally get switched and to maintain integrity up and down the tree.
To get onto the IPFS network you can put up a node, using instructions here, and begin hosting files. When you put a file onto IPFS you create its content ID, or CID, which is a complicated set of hashes based on where the file is located and related metadata. That file can then stay hosted on your node alone, or it can be distributed among many nodes. This is where it is like BitTorrent. Just because a file is available “on BitTorrent” doesn’t mean there are any seeders or that it’s there forever. IPFS is like this. The address/CID is permanent, to a degree as it gets passed around the DHT, but the underlying asset, or file, that the IPFS address points to can be lost as easily as any file on any random web server. CoinDesk could run an IPFS node to store its article archive, and it wouldn’t make them any more permanent than they are now.
Filecoin, or IPFS on the blockchain
Filecoin, a sister project, picks up where IPFS left off. It purports to use “blockchain technology” to ensure persistence of data, by actually writing and distributing files across a cryptocurrency network and incentivizing participants to host that data on IPFS for as long as possible by paying out FIL tokens.
This is probably more robust than a random web server run by some random software project hosted in AWS, but it is by no means permanent. Lots of blockchains have gone defunct in the past, and there is no reason to think that Filecoin is an exception.
Many NFT projects use Filecoin to give their buyers the feeling of permanence. Even more use IPFS addresses to give the sense of reliability, as IPFS has won accolades by some of tech’s biggest names.
Read more: IPFS’ Juan Benet: From Idea to Action
However, using IPFS broadly obfuscates the real permanence of NFT-secured assets. It’s an open secret that many NFT projects simply use random web file storage to host their images, and that those could go away at any time. The solution for “savvy” NFTs buyers is to only consider projects where the “art” is hosted on IPFS.
But often an IPFS link just points to that same website you didn’t trust the project creators to maintain. Filecoin hosted storage might be an easier way to provide some reliability for NFT storage, but it is far from perfect.
Problems with IPFS as permanent storage
Honestly, IPFS might as well be a .torrent file that points to a reliable IP address hosting the DHT table for the files you want to host. It’s a little bit more elegant than that, but it really does boil down to the same thing.
No matter what you do with the storage, someone has to host it physically somewhere. There might be layers of incentives provided to ensure that the storage stays up, but it still needs to be on a hard drive somewhere connected to the internet.
Even when a file is hosted on Filecoin you are reliant on the Filecoin nodes it’s hosted on not to go dark during a bear market for the Filecoin team to not introduce a catastrophic error ever. and for the IPFS gateways that are used to access your files stay up.
There are a lot of centralized points of failure here for a decentralized file storage system.
How you can avoid being fooled
From what I can tell, there is no easy way to determine how a file on IPFS is being hosted without running your own IPFS node and using that software to do a lookup of the hash.
Once you have a node up you can use the following code to find who has certain chunks stored:
ipfs dht findprovs $CHUNK_HASH
It is not foolproof as it will only list what nodes are hosting the file that your node can find. However, these files do not distribute automatically and hosting a file is an active process as is pushing it to new nodes. To do this you need to know exactly what file you are looking for and its hash.
Each NFT marketplace should show you the address where an NFT is located. To see where it is on OpenSea, the biggest NFT marketplace right now, you can follow this guide. Amusingly, if you follow this process for the current top NFT project, Mutant Ape Yacht Club, you will find it doesn’t even use IPFS but a centralized web server relying on centralized DNS and a centralized TLS certificate.
Even if you are storing your data on Filecoin you aren’t really accessing it from there when reading the NFT. While a file might be “backed” on Filecoin, transacting with that network requires fees and apparently unsealing a file to read can take hours. To get around this, Protocol Labs developed the FileCoin Pinning Services that hosts files like IPFS. It’s basically just IPFS nodes that grab stuff off Filecoin and host it for a price.
This is all starting to feel like centralized storage with extra expensive and complicated steps. The worst part is that people are putting huge amounts of money into NFTs thinking they’ll last a lifetime, when they are simply files on a file server somewhere that someone (not you) ultimately controls. NFT marketplaces sometimes even have a business incentive to remove your file from the directory.
So what does this all mean?
Basically, NFTs are no more permanent than any other part of the web. They use fancy, useful technology to obfuscate the fact that unless you are hosting the file that your NFT represents yourself you are beholden to others.
Right now, an NFT hosted using Filecoin has as good a chance as anything of sticking around. But, like everything else in this world, it comes down to trust. Do you trust that the entity that created your NFT has put the effort in to ensure reliable access? Do you trust that Filecoin won’t shut down?
These are questions you need to ask yourself when buying into an NFT project. The space is new right now, and don’t be fooled by an IPFS address into thinking that means your asset is permanently ensconced in an immutable blockchain.