NFT Storage Wars

Life is always about compromises. You make compromises every day, like picking up that extra shift at work to buy a round of drinks at the bar.

Developing software and running a business is no different; your decisions impact a much larger group of people than just yourself and a few others. No pressure.

Philosophizing aside, when it comes to selecting solutions for NFT storage & access, there are some easy decisions and some hard decisions. I’ll try to break down the path that Transient Labs has chosen and what the future looks like.

Spoiler alert, there is no right solution, only compromises and tough decisions.

First, let’s get into the details of the different solutions out there (will keep it quick).

Centralized Solutions

Let’s get this out of the way. Centralized solutions aren’t it. You don’t want to rely on NFT metadata only being available through one provider. URLs change, businesses go out of business, etc. There are Web3 solutions that can be used instead.

IPFS

The InterPlanetary File System (IPFS) is a peer-to-peer distributed data access protocol. Instead of addressing content by location (url) or file name, a fingerprint of the data (cryptographic hash) is used to address the content.

It’s critical to know that IPFS is a data access solution, not a data storage solution. However, it enables distributed data storage because anyone can pin content on the network, allowing for data duplication. You can easily run your own IPFS node on your computer and pin the NFTs you create/own! In addition, the IPFS protocol is widely supported across marketplaces and even in the Brave browser. Pretty sweet, right?

This doesn’t come without flaws. Peers aren’t incentivized to pin content, so typically, data is pinned on the network by paying for an IPFS pinning service, like Pinata or Filebase. These services have redundant nodes, however, if you stop paying for the service, the file will be deleted at some point (usually a few months later).

Arweave

The Arweave network is like a blockchain (technically a blockweave) for data storage. It is very much a decentralized data storage solution not a data access solution. It enables distributed data access as many different gateways can be run through centralized services, like arweave.net.

Arweave works by charging upfront for data storage, which covers a minimum of 200 years. It’s a pay-once, store-forever model. Pretty sweet, right?

Of course, just like IPFS, it has its own flaws. If you want to run your own gateway, you have to run a node, which now is a whopping 186TB (as of July 29, 2024). It’s not feasible for people to run this on their own machine, really. In addition, the cost to upload is dependent on the market price of the native token, $AR. When $AR is cheap, it’s usually about $8 for 1GB of data, but right now, it’s $24 for 1GB of data. This, on its own, makes it more difficult for companies to use Arweave as you have to front that money and unstable pricing is really scary when looking at runway.

Onchain NFTs

The holy grail for NFTs is storing the metadata on the same chain as the NFT itself. This provides a system with fewer failure points and dependencies.

Unfortunately, onchain storage isn’t reasonable for many NFTs out there. Things like algorithmic art, SVGs, and other compressed formats (like generative art scripts) are possible to put onchain due to their being small in file size. Larger images, videos, and audio files are much harder to put on chain. Even if you could store a 50MB image onchain, which can be very costly, you can run into issues getting all the data from the blockchain.

I think there is a huge amount of design space left to be explored in this realm, and I don’t think the current solutions are the only solution. I’m excited to keep looking into this space, but haven’t released any solution on a grander scale because there is more to be uncovered.

Why does Transient currently use IPFS?

I’ll reiterate that life is all about compromises and making hard decisions. There’s no right answer, other than saying “no” to centralized solutions.

When we first launched The Lab, we started using Arweave for all the minted NFTs. We quickly ran into some issues, though. Our backend is written in Python and back then, there wasn’t a good Python library for uploading files to Arweave (there still isn’t). Instead, we had to get really creative with how we uploaded data with some super “hacky” code.

Inevitably, we ran into issues with the system I had built. Users reported errors, and our servers crashed frequently enough for it to be a problem. We devised some temporary solutions, but we knew something else was needed.

We could have rewritten our backend but speed is absolutely critical to startups - you don’t want someone beating you to the punch while you’re stuck rebuilding something, especially when our framework gives us a TON of benefits out of the box that we wouldn’t get with a new language.

Instead, we faced a tough decision: keep spending a lot of time trying to fix what was built with scotch tape and just pray that it scales with our users or switch to something else.

I had used IPFS before, so I was very familiar with it. After much back-and-forth within the team, we settled that IPFS would be a good solution for the platform moving forward. There was a lot of debate about what we would lose by moving away from Arweave and what we would gain from IPFS. It wasn’t a decision we took lightly.

Ultimately, we have built a system that scales with our users while balancing Web3 ideals.

The nature of IPFS provides many benefits that Arweave didn’t. However, it also came with monthly costs for data storage rather than the upfront cost with Arweave. Compromises are tough, but this was necessary for overall platform health while balancing the users' needs.

Looking towards the future

It’s not lost on me that the NFTs minted through Transient need to outlive all of us here today. As a company, we don't take this lightly. Even though we have chosen IPFS for the current storage solution, we are strategizing to ensure longevity.

IPFS’s superpower is the distributed data access protocol, and Arweave’s superpower is decentralized data storage. It’s clear that these two combined could provide exactly what we are looking for in a complete solution.

Irys.xyz is working on a provenance toolkit that enables the combination of IPFS and Arweave that looks really compelling. In addition, they are working on a Python toolkit, which would help solve the developer issues we faced originally. So I’m really excited about the prospect there and am already in close contact with the team.

We plan to backup the IPFS content to more permanent storage solutions for existing NFTs on our platform while keeping IPFS routing intact. We believe this is the best path forward and something we are actively pursuing.

The space is obviously still maturing, so things can change, but there are reasons to be hopeful. There is no need to get worried about IPFS or Arweave. Both are here to stay. We keep pushing.

Cheers! 🍻

Subscribe to Marco
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.