It's 2022! What's in store for NFT.Storage this year?
Storage of off-chain NFT assets is a tricky thing. There are some key requirements: the storage needs to be content-addressed and multi-generational at the very least. Ideally, it’s on decentralized storage so as the NFT gets bought and sold, the risk that the off-chain data is lost is minimal. These are all table stakes things that anyone minting or buying an NFT should double check.
However, there’s a lot more that we can demand out of our NFT storage services to make them useful for everyone that directly or indirectly relies on them - everyone from tooling developers (minting APIs, marketplaces, wallets, block explorers, galleries...), to the artists and others who make the NFTs, to the collectors and users of NFTs.
We hear this call! As an NFT storage provider, we can’t just be providing the minimum. We need to provide NFT data quickly without services needing to run their own own caching layer. We need to make it easy for non-developers to upload 10K metadata and images for their drops. We need to support decentralized authorization primitives allowing services to enable users to upload on their behalf, and vice versa. And the list goes on!
Our goal as NFT.Storage is to provide a delightful user experience to raise the bar for what users expect out of the NFT and Web3 space. In this post, we detail a number of the key things we’ll be working on in Q1 2022, as well as what’s planned for the rest of the year. Our roadmap is always subject to change as the space continues to develop and we learn more, but we hope this gives some insight into how we plan on supporting our users and the entire ecosystem.
In Q1, we plan on landing the following features and tools.
Let’s face it - performance is key to make any web experience a good one. In the span of two decades years, we’ve gone from being OK with waiting 20 seconds for a static webpage to load to getting impatient when there’s a moment of buffering a 4K video. But NFT tools and services often face a choice of whether to sacrifice performance and use decentralized storage as their primary off-chain NFT storage, or go with a centralized storage solution as their primary storage medium. Well-funded players who care a lot about the Web3 ethos might use decentralized storage while running their own centralized caching, but this is too much trouble in practice for most.
It’s true that retrieval from decentralized storage networks can be less performant in practice - these networks are quickly improving but still young. But we believe you don’t have to make compromises with your storage service for the sake of performance! We are releasing an HTTP service called the NFT.Storage Gateway that aims to provide a lightning fast experience for retrieving NFTs that were stored with NFT.Storage. It functions like other IPFS HTTP gateways, but is optimized retrieving for content on NFT.Storage through intelligent caching of data stored with NFT.Storage (along with a CDN). And like any other IPFS gateway, you don’t need to trust our infrastructure to take advantage of decentralized storage, since you’re accessing data via its CID, a unique fingerprint for the data. Of course, the same CIDs are being made available over IPFS both from pinned nodes and from Filecoin - meaning you can always still grab the data in all the other usual ways.
We believe that unlocking fast retrieval of NFTs at the storage service layer will enable amazing user experiences for any tooling player, big or small, without them needing to make compromises around the way they’re storing their NFT data. We hope to release the NFT.Storage Gateway to the public in mid-February, and will continue to improve and optimize its performance after launch.
Currently, NFT.Storage requires a private token for users to upload to the service. This is a standard web pattern. However, because there are no scopes to these private tokens, users have to be careful about who has access to their token. This means that if you’re an application that wants their users to upload to NFT.Storage, you either have to run a backend that funnels user uploads to NFT.Storage, or get your users to make their own NFT.Storage account (which can be a clunky user flow). In the worst cases, we’ve seen folks put their private tokens in their application front-ends.
For a while we were thinking we’d just implement scoped tokens, but this is Web3, and we can do better! One of Web3’s superpowers is that identity is often viewed as a primitive across applications and end-users. After some research, we landed on implementing Fission’s UCAN decentralized identity primitive to allow applications to authorize their end-users to upload on their behalf. This should make it way easier for applications like minting services to have their users upload to NFT.Storage without them needing to make their own account.
But that’s not all we’re planning on doing with UCAN! There’s other cool things in store - for instance, we’re thinking about how UCANs can interact with mutable NFTs to grant permission on who can mutate an NFT. In a future post, we’ll share a live roadmap of what we’re hoping to be able to do with UCAN - both for our team, and for other teams who think certain features would be valuable and can want to contribute. You can read more details about UCAN here - think Google OAuth, but decentralized (so anyone with identity can grant permissions to anyone else).
We hope to release this first version of UCAN in late February, and will continue do more cool things with UCAN moving forward.
NFT.Storage is able to take uploads of up to 31GiB and persist them for the long haul on the IPFS and Filecoin networks. However, getting data this large onto the service isn’t always easy, as even technically savvy users have found out. In the most common upload flow, the user needs to convert their file or folder into a CAR file and upload the CAR file into chunks (which gives you the CID of your content before you upload, and allows for things like parallel or pausing / resuming uploads). This is done automatically for you if you use the Javascript client library, or if you use libraries like ipfs-car with carbites to upload via the API directly.
However, conversion into a CAR file can be memory intensive - usually at least 2x of the file size ends up in your memory at some point. This is also why folks have issues uploading large files or folders via the website, because browsers usually have stricter memory constraints than the computer they’re on!
One of the next frontiers of NFTs are large NFTs, with high res art, videos, and gaming NFTs starting to explode. We’re revisiting how we do large uploads to enable these use cases, like looking at alternative ways to generate CAR files that aren’t so memory-intensive. That way, folks can fully take advantage of NFT.Storage’s large data upload limits (which stem from Filecoin’s ability to store large files for cheap/free) and easily store files up to 31GiB.
In parallel, we’re also creating a no-code app that allows users to upload large directories and files to NFT.Storage without needing to rely on their browser or CLI, starting with a focus on enabling uploads for 10K NFT drops! We’re hoping this enables artists to take full advantage of content-addressed, decentralized storage.
We hope to release this no-code app in late February, and have an overall improved large upload system by the end of Q1.
We’ve mentioned this before, but something we’ve been doing for a while now is watching Ethereum’s mainnet and storing NFT metadata and assets we index from the chain on NFT.Storage - an effort we’ve been calling “niftysave.” Regardless of how NFTs were minted, we want all NFTs to be content addressed and safe in long-term storage.
As we store off-chain data from Ethereum NFTs into NFT.Storage, we will publish a simple IPLD data structure that maps NFT addresses to metadata and asset CIDs and continue to update it, so regardless of how an NFT was minted, it can be directly referencing the intended content. In addition, we use the data from this effort to make statements about the state of the health of NFTs (called “niftystats”) - like what percentage are content addressed, or how many are “lost” (with the NFT data no longer retrievable).
We hope to launch niftystats by late February, and make the mapping of NFTs to CIDs public by the end of Q1.
We have a lot more in store for 2022! Here are some more things to get excited about:
As someone in the NFT space, you see the rapid evolution of the industry first-hand. We’ve been listening closely to users’ needs to come up with the list above, but we also want to keep in touch as you continue to learn more and grow as well! Pop into the #nft-storage channel on IPFS Discord or drop an issue on Github to let us know what you’re excited about from this post, what you think is missing, and how things are changing for you over time. We’re can’t wait to see what’s next for you, and hope to be the partner you need in this journey.