Although IPFS—the so-called Interplanetary File System— has far less name recognition than blockchain, it represents one of the essential technologies underlying the current boom in NFTs (non-fungible tokens).
First released in 2015, IPFS is a distributed file system that uses content-addressed storage to locate files. It is distributed in the sense that it is maintained by a global network of computers. Anybody can join the IPFS network and host data. Content-addressed storage means that the address of a file is determined by the content of the file, not by its name.
In the World Wide Web, we use links to identify content. These links typically contain some meaningful “name” for the content—for instance, https://guyaharrison.squarespace.com/book will take you to a list of the books I have written. The content for the link can change—as I write new books, I’ll add them to that page, and you’ll be able to see the updated content. This is location-addressed storage—the URL is the “location,” and the content can change. Location-addressed storage is great because it allows information to be kept up-to-date.
Where IPFS Shines
What if you want to make sure that the content that an address refers to does not change? This is where IPFS shines. The address for an IPFS link includes a hash for the content; when you request an address, IPFS looks through the distributed network to find a matching hash. If it finds a match, your file is returned. Two identical files in the IPFS network will have the same hash even if they are uploaded by different users. For instance, the cover of my most recent book can be found at https://ipfs.io/ ipfs/QmctjCdW5S3XL12KWWhquJPZ6EebPLPB999tf9 noJ8z2M9. The cover image for this link cannot possibly be changed since if the image were changed, it would no longer hash to the same value.
On the one hand, to blockchains, IPFS allows for immutable and un-censorable data. Unlike blockchain, IPFS can’t prove the creation date of a particular data element. On the other hand, IPFS is capable of storing massive files that could not possibly be stored on a blockchain.
Interesting Uses
IPFS has been put to some interesting uses over the years, but it was really with the advent of NFTs that it became economically significant. NFTs are created on a blockchain but are usually associated with some off-chain data. For example, consider the NFT of Beeple’s “EVERYDAYS: THE FIRST 5000 DAYS.” This NFT sold at Christie’s for $69 million! The NFT itself is stored on the Ethereum blockchain, but if you look on the blockchain, you won’t see the digital art. Instead you will see an IPFS address, which will lead you to the digital art. If you want to see what a $69-million image looks like, go to https://ipfs.io/ipfs/ QmZ15eQX8FPjfrtdX3QYbrhZxJpbLpvDpsgb2p3VEH8Bqq.
NFT creators don’t have to use IPFS to store digital images and metadata, but it’s quickly become best practice. If I sell you an NFT with a location-addressed link, I could change the content for the link after you buy the NFT. You might think you are buying a Beeple, but find later that it’s turned into a photo of my dog. With IPFS, this can’t happen since the image associated with a link cannot change.
However, while the image associated with an IPFS link cannot change, there is still a chance that it might be lost. IPFS relies on the distributed network to store files, but there’s no guarantee that a file will remain present in IPFS indefinitely. For instance, I might add a file to my IPFS node and then shut down my computer. Unless another IPFS node has fetched the file for some reason, the file will then be unavailable.
A Foundation Stone
For this reason, NFT creators typically “pin” their media to IPFS using a commercial service. For a fee, the service commits to storing the media on multiple IPFS servers under its control.
IPFS has become an indispensable part of the NFT economy. The economic value of media stored on IPFS has increased dramatically as a result and, consequently, I think IPFS now deserves to be seen as one of the foundation stones of the emerging Web3 architecture.