# The Onchain Spectrum: NFT Storage on Ethereum, Bitcoin, and Solana Source: https://www.bankless.com/the-onchain-spectrum-nft?ref=bankless.ghost.io ## Summary This Bankless primer maps how NFT art and metadata are stored on Ethereum, Bitcoin, and Solana, and argues that storage choice should be judged case by case. It warns that IPFS-based NFTs can lose their art if used improperly, and cites nearly 30,000 NFTs from the shuttered KnownOrigins marketplace that rely on an outdated Infura link in their IPFS implementations. On Ethereum, the article describes offchain storage, onchain state, calldata and blobs, with blob storage available in full for 18 days before archiving begins. The subcategory names are the author's own. ## Article IPFS is a peer-to-peer network for sharing data. It's a popular choice for underpinning NFT metadata, and if used properly it offers strong redundancy and availability assurances. But what happens when it's used improperly? In the worst case scenario, the associated art becomes unavailable, and the NFTs become mere tokens. We've seen this before with platforms like Ascribe, Digital Objects, Editional, and even FTX. More recently, this week NFT sleuths discovered that nearly 30,000 NFTs from eBay's shuttered KnownOrigins marketplace—including iconic XCOPY works—rely on an outdated Infura link in their IPFS implementations, jeopardizing the availability of their art going forward. Enjoying this article? Subscribe to Bankless or sign in via X That said, there is no right or wrong storage approach per se—it's more about determining sufficiency on a case-by-case basis. Yet as an NFT adventurer yourself, it's incredibly important to understand the basics of storage so you can navigate the nuances here and make informed collecting decisions. Toward that end, let's walk through a quick refresher of the onchain spectrum as it stands today on Ethereum, Bitcoin, and Solana. Some of the subcategory names below are my own, and I may have missed some things, but this primer can be your cheatsheet to start from. Ethereum's NFT Spectrum via cryptopunks.app Offchain — Beyond the token itself, the art and metadata live in an external solution like a private server or IPFS. Here IPFS is most preferable because with some work the data can be pinned indefinitely or copied extensively for redundancy. In contrast, private servers have proven to be a ticking time bomb when it comes to availability. Subcategories: Semi-Offchain (Some metadata onchain, some offchain), Chain-to-Chain (Metadata stored on an external Layer 1, like Arweave) Onchain State — The tokens and data live entirely within an Ethereum smart contract. It’s relatively expensive, but this approach allows for high durability guarantees, programmable expressiveness, runtime art (i.e. dynamic + fully onchain art like Terraforms), etc. Subcategories: Hybrid Onchain (When an offchain collection is retroactively brought onchain in a separate smart contract), Hashed Onchain (Storing composite images with a hash in a smart contract, e.g. CryptoPunks), Layer 2 State (The tokens and data live in an L2 smart contract without external dependencies) Onchain Calldata — This approach encodes media directly within Ethereum transaction calldata. The technique is notably inexpensive, but it lacks programmable expressiveness, and media stored like this might get pruned in Ethereum’s Purge phase. Subcategories: Optional Calldata (e.g. 0xmons, where holders can choose calldata or full contract storage), L2 Calldata (Like on L1, this approach entails storing media in an L2’s transaction calldata) Onchain Blobs — NFTs stored here exist in a new primitive, blobspace. This approach is really inexpensive, but it lacks expressiveness, and full storage is only for 18 days before archiving kicks in. Witnessed Data — A hybrid offchain-onchain system a la Witness Protocol that hashes unrevealed data in checkpoints to Ethereum, Arbitrum, etc., e.g. a game that doesn’t need to immediately publish all its asset data onchain. Bitcoin's NFT Spectrum via Right Click Save Solana's NFT Spectrum via Mad Lads Offchain — The “Metadata Account” segment of Solana's popular Progammable NFT (pNFT) standard has a URI section for supporting external storage via private server, IPFS, etc. Some Solana projects rely on Arweave instead, so the Chain-to-Chain approach is also seen here. Onchain State — The tokens and data live entirely within Solana accounts; for instance, one technique here is storing images as SVG strings inside Solana addresses, making them readily retrievable. Subcategories: Compressed NFTs (Also known as cNFTs, these NFTs make use of the Merkle Trees data structure to efficiently store condensed versions of NFT data onchain), ZK Compression (A new primitive introduced in June 2024 that allows state to be stored in compressed accounts) Onchain Calldata — When assets are stored at the level of a Solana transaction, e.g. Solana Inscriptions. We’ve also seen hybrid approaches here, like using calldata storage in combination with external solutions like Arweave. More about NFT storage 👉 Comparing IPFS, Filecoin, and Arweave ## Comments **mishaderidder.eth**: “eBay recently announced plans to shut down its KnownOrigin NFT marketplace, and now nearly 30,000 KO NFTs are facing an existential metadata problem. It's an unfortunate reminder, but it's true: storage can make or break NFTs.” If your NFT data is not onchain or on Arweave but on IPFS I recommend to run your own IPFS node and pin the data. It’s easy and you’re in control. https://docs.ipfs.tech/install/ If your NFT data is centralized recommend to decentralize them asap! **naomiii.eth**: Back in the day i was running an IPFS node for that reason. Should probably go back and do it again. Good reminder :D