Decentralized systems cannot promise data “permanence,” but are part of a maximalist approach to storage.
What do you actually get when you buy an NFT?
You own a unique token on a blockchain that references some off-chain data. The token is non-fungible (unique) and immutable (being on a blockchain). That’s all that an NFT guarantees: You own a unique and unchangeable reference to some data.
Focusing on this core NFT definition, two main challenges arise.
First, an NFT is only as good as the link to its data. This reference is just a line of code, but for an NFT to have value others have to agree it refers to valuable data.
Second, the off-chain data itself has to exist, it has to be stored somewhere and it has to be accessible. There are many instances where NFT links return 404 errors later on – making those NFTs worthless.
InterPlanetary File System (IPFS) and Filecoin, open-source protocols originally created by my employer, Protocol Labs, provide potential solutions. However, understanding how to correctly leverage these solutions is often what trips users up in practice. There are nuances that need to be accounted for when using them directly or building services on top of them.
We work for Protocol Labs on a product called NFT.Storage and spend a lot of time thinking about how to make sure NFTs are as useful as possible. It’s still early days in the industry, and the NFT space really is the Wild West right now. We want to help educate people on what NFTs are, the challenges of NFTs, the technologies that exist to solve these challenges and how we can drive culture around NFTs to take full advantage of these technologies.
A recent CoinDesk op-ed suggested that IPFS isn’t a “permanent” solution for NFTs. This is a mischaracterization of what IPFS is. For NFTs to become truly “immutable” digital records, the community must develop better practices around linking to data, and its underlying storage – of which IPFS and Filecoin can be a significant part.
Strengthening references to off-chain data
An NFT’s reference to off-chain data can be anything written in code. Most commonly, an NFT contains an HTTP URL that points to a location of data somewhere on the internet. This is problematic for supposedly immutable assets. Who is running the server? What happens if that server goes down? What if that data is deleted? What if it sends the incorrect data?
With HTTP URLs, there must be trust that the service provider remains uncompromised and that the content they serve is actually the content being searched for. Even though the token part of an NFT is on a blockchain, the asset is only as good as its weakest link.
This is where IPFS can help. IPFS enables users to store and retrieve content based on a “fingerprint” of the content itself (a cryptographic hash called a CID). By putting an IPFS CID in an NFT, that NFT directly references the data itself rather than a brittle HTTP link.
IPFS itself is not data storage – it’s a layer on top of data storage. Anyone can ask for a CID and get the uniquely corresponding content back as long as someone is broadcasting it to the network.
Further, IPFS is universally compatible with any data storage system. It can retrieve data off of a centralized provider, a local computer or decentralized storage protocols – whatever is broadcasting the CID to the rest of the network.
A common misconception of IPFS is that it is supposed to provide “permanent” storage. Within NFTs, its purpose is actually to prevent a type of link rot that afflicts so many NFTs’ off-chain data. But it doesn’t necessarily solve where off-chain data is stored.
Improving the availability of off-chain data
For an NFT to be useful, not only does it need to have an immutable pointer to its data, but the data must be stored and accessible.
The beauty of IPFS is that it doesn’t require users to specify where data is but rather what data they’re looking for, as long as there’s at least one copy of the data being broadcasted to the network. So when we think about resilience for NFTs, IPFS means that anyone can download, serve and replicate off-chain NFT data in as many places as they’d like using whatever tools they prefer.
We call this a “maximalist” approach to storage. Anyone with any association with an NFT can store its data locally, pay a provider (e.g. Pinata, Infura), rely on a decentralized storage network (e.g. Filecoin, Arweave) or use a combination. With IPFS, users can hedge against one solution breaking by simultaneously using others.The problem around NFT persistence is very much technically solved. Anyone with a vested interest in an NFT should just make sure it’s stored in whatever ways make them comfortable. One big part of this is driving a culture where people are responsible for their own NFTs by downloading a local copy and ensuring the data is hosted in places they consider safe.
We must shift the conversation away from guarantees of “permanence” and towards a better understanding of persistence and resilience.
It’s true that this sort of culture, where people have more responsibility for their NFTs, is hard to develop. Most people don’t want to take on that added responsibility. However, Web 3 tools like NFT.Storage are trying to mitigate this issue by enabling multi-generational off-chain storage as public goods using IPFS and Filecoin.
The illusion of permanence
Filecoin’s critics point to the challenges of decentralized storage to say that “NFTs are no more permanent than any other part of the web.” But this oversimplifies the project, by insisting data be “permanent.” Of course, nothing is truly “permanent”; every system comes with its own set of tail risks and disclaimers. If we truly want to protect against even the 0.01% chance that any single system fails, we want to take a more comprehensive, layered approach.
Any solution to off-chain data storage will be multifaceted and should be engineered to be swappable. This might look like marketplaces, artists and collectors all storing data in many places, where the responsibility for storage and accessibility extends beyond a single protocol. As our colleague Mikeal Rogers said, “Put your data in as many providers as it takes for you to feel confident you have permanence.”
And Filecoin is one of these storage options but is often misunderstood. Filecoin’s primary benefit is trustlessly guaranteeing that someone out there is actually storing the data they say they are for an agreed upon amount of time (what Filecoin users call a “deal”). The system is designed to be inexpensive and scalable ($0.01/TiB/year, 15EiB+ capacity).
But this doesn’t prevent it from being able to offer guaranteed storage beyond the duration of a single deal. New developments like the Filecoin Virtual Machine enable automatic deal renewal and repair, creating a powerful foundation for multi-generational storage.
Improving education and changing the culture
It’s important to be honest about NFTs’ limitations. Because NFTs are not the underlying data they represent, it’s important to understand their nuances. Thankfully, there are solutions like IPFS and Filecoin today to solve their shortcomings.
However, we must shift the conversation away from guarantees of “permanence” and towards a better understanding of persistence and resilience. No storage system can truly guarantee permanence, but content addressing allows for anyone who cares about an NFT to store it themselves in their preferred systems.
What can the community do to help the NFT space mature when it comes to storage? A few ideas:
Wallet providers should make it easy for their users to store their NFT data locally and pin it to IPFS to make it easy for them to take ownership of their NFTs
More decentralized storage networks should use IPFS CIDs as the primitive for their URIs – CIDs are designed to be universal, interoperable and backward-compatible – read here to learn more
Have more conversations about NFT storage! Talking about it forces services, tooling providers and storage services to interoperate and solve the problem communally.
Feb 15, 2022 at 1:00 p.m. PST
Updated Feb 15, 2022 at 1:00 p.m. PST