www.bankless.com Open in urlscan Pro
2606:4700:20::ac43:4afe  Public Scan

Submitted URL: https://bankless.ghost.io/r/8210d3fe?m=7849e17e-6358-456d-8a19-98052196e5ba
Effective URL: https://www.bankless.com/the-onchain-spectrum-nft?ref=bankless.ghost.io
Submission: On August 16 via manual from IN — Scanned from DE

Form analysis 5 forms found in the DOM

Name: join

<form name="join">
  <input type="email" name="email" class="form-control" placeholder="Email address" style="margin-bottom:0;">
  <input type="hidden" name="firstname">
  <br>
  <button type="submit" class="cta wow pulse animated" data-wow-delay="7s" style="visibility: visible; animation-delay: 7s; animation-name: pulse;"> Join for free </button>
  <input type="hidden" name="conversionPostID" value="5248">
  <input type="hidden" name="recaptchaResponse" class="recaptchaTokenInput" value="">
</form>

Name: footerSignUp

<form name="footerSignUp">
  <input type="email" name="email" class="form-control" placeholder="Email address">
  <p class="termsVerbageGlobal">
    <label>
      <input type="checkbox" name="terms" value="1" style="margin-right:3px;"> By joining, I agree to the Bankless <a href="https://www.bankless.com/terms" target="_blank">Terms</a> and
      <a href="https://www.bankless.com/privacy" target="_blank">Privacy</a> statements </label>
  </p>
  <button type="submit"> Join for free </button>
  <input type="hidden" name="conversionPostID" value="5248">
  <input type="hidden" name="recaptchaResponse" class="recaptchaTokenInput" value="">
</form>

Name: freeSignUpModal

<form name="freeSignUpModal">
  <input type="email" class="form-control" name="email" placeholder="Email address" style="margin-bottom:-10px;">
  <input type="hidden" name="firstname">
  <p class="terms" style="margin-top: 33px;
    margin-bottom: 21px;">
    <label>
      <input type="checkbox" name="terms" value="1" style="position:relative;top:1px;margin-right:3px;"> By joining, I agree to the Bankless <a href="https://www.bankless.com/terms" target="_blank">Terms</a> and
      <a href="https://www.bankless.com/privacy" target="_blank">Privacy</a> statements </label>
  </p>
  <button type="submit" class="submit"> Join for free </button>
  <input type="hidden" name="conversionPostID" value="5248">
  <input type="hidden" name="recaptchaResponse" class="recaptchaTokenInput" value="">
</form>

Name: signIn

<form name="signIn">
  <input type="email" class="form-control" name="email" placeholder="Email">
  <input type="password" class="form-control passwordSignIn" name="password" placeholder="Password" style="display:none;">
  <input type="hidden" name="reload" value="true">
  <input type="hidden" name="useMagic" id="loginMagicValue" value="true">
  <button type="submit" class="submit loginSubmitBtn"> Email sign in details </button>
  <p class="terms">
    <span class="usePasswordLink" style="display:none;">
      <a href="javascript:;" onclick="usePasswordSignIn();" style="text-decoration:none !important;">
Use password instead
</a>
    </span>
    <span class="useEmailLink" onclick="useLinkSignIn();" style="display:none;">
      <a href="javascript:;" style="text-decoration:none !important;">
Login with an email link
</a>
    </span>
    <span class="forgotPasswordLink" style="display:none;">
      <a href="https://www.bankless.com/account/sign-in/reset">
Forgot password?
</a>
    </span>
  </p>
  <input type="hidden" name="recaptchaResponse" class="recaptchaTokenInput" value="">
</form>

Name: signUpStandard

<form name="signUpStandard">
  <input type="email" class="form-control" name="email" placeholder="Email">
  <p class="terms" style="margin-top: -10px;
    margin-bottom: 21px;">
    <label>
      <input type="checkbox" name="terms" value="1" style="position:relative;top:1px;margin-right:3px;"> By joining, I agree to the Bankless <a href="https://www.bankless.com/terms" target="_blank">Terms</a> and
      <a href="https://www.bankless.com/privacy" target="_blank">Privacy</a> statements </label>
  </p>
  <button type="submit" class="submit signUpSubmitBtn"> Email sign up details </button>
  <input type="hidden" name="recaptchaResponse" class="recaptchaTokenInput" value="">
</form>

Text Content

Join for free
 * Home
 * Listen
 * Read
 * Tools
   Claimables
   Airdrop Hunter
   Token Hub
   Perks

 * Learn about citizenship
 * Sign In

Dark mode
Join for free Sign in
 * Dashboard
 * Media
 * Episodes
 * Articles
 * Guides
 * Tools Upgrade
 * Claimables
 * Airdrop Hunter New
 * Token Hub
 * Perks
 * Join for Free
 * Sign In

F
Results for ""


 * 

 * 

 * 


Article


THE ONCHAIN SPECTRUM: NFT STORAGE ON ETHEREUM, BITCOIN, AND SOLANA

Where are your NFTs stored? To answer that, you have to understand the onchain
spectrum.
William M. Peaster Aug 15, 2024 • 4 min read
3
0


Friend & Sponsor
Mantle - Mass adoption of token-governed tech


Quick navigation

 * Ethereum's NFT Spectrum
 * Bitcoin's NFT Spectrum
 * Solana's NFT Spectrum
 * More about NFT storage

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.

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
 * Counterparty — The metaprotocol renowned for being home to the Rare Pepes, it
   uses OP_RETURN transactions to embed token data and other information into
   Bitcoin transactions. 
 * Inscriptions — Introduced by the Ordinals protocol, inscriptions use the
   witness data section of Bitcoin transactions (expanded by the Taproot
   upgrade) to store media data. They offer strong permanence guarantees and low
   storage costs, but they lack the native expressiveness of smart contracts
   (though recursive inscriptions offer dynamism possibilities). 
 * Stamps — An approach that involves making NFTs on Bitcoin by encoding
   metadata in multi-signature unspent transaction outputs (UTXOs). This method
   makes Stamps unpruneable and essentially permanent, though they’re more
   expensive to create than inscriptions. 
 * Bitcoin L2s — Admittedly there isn’t much live here yet, but with OP_CAT on
   the horizon and projects like StarkWare eyeing Bitcoin scaling solutions,
   this should prove increasingly fertile ground for Bitcoin NFTs going
   forward. 


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


3
0

Join for free Sign in


Overview

 * Ethereum's NFT Spectrum
 * Bitcoin's NFT Spectrum
 * Solana's NFT Spectrum
 * More about NFT storage

Friend & Sponsor
Mantle - Mass adoption of token-governed tech

LEVEL UP ON CRYPTO, DAILY

Join the world’s most popular crypto community with daily alpha, news, &
analysis, all free.


Join for free

Written by William M. Peaster

602 Articles • View all      

William M. Peaster, Senior Writer, has been with Bankless since January 2021.
Immersed in Ethereum since 2017, he writes the Metaversal newsletter on the
onchain frontier, covering everything from AI projects to crypto games, as the
team’s lead NFT analyst. With a background in creative writing, he writes
fiction and publishes art on Ethereum in his free time. He lives in Washington.

CONTINUE YOUR JOURNEY

News SEC Approves Leveraged MicroStrategy ETF MSTX seeks to deliver 175% of
MSTR’s daily returns to investors by u... Today • 1 0
Analysis Bitcoin Gets Wrapped in Drama Justin Sun's role in a joint venture
governing WBTC has Crypto Twitter... Today • 1 0
News Schumer Calls for Regulatory Action at Crypto4Harris Town Hall Senate
Majority Leader Chuck Schumer was among the loudest Democrats c... Today • 1 0
No Responses






Get connected

Get the daily crypto brief

By joining, I agree to the Bankless Terms and Privacy statements

Join for free

Not financial or tax advice. Bankless is not a bank, a credit union, or any
other type of financial institution. No content on this website is financial,
accounting, legal or tax advice. Bankless content is strictly educational and is
not investment advice or a solicitation to buy or sell any assets or to make any
financial decisions. This newsletter is not tax advice. Talk to your accountant.
Do your own research.

Disclosure. From time-to-time we may add links in this newsletter to this
website to products we use. We may receive commission if you make a purchase
through one of these links. Additionally, the Bankless team holds crypto assets.
See our investment conflict of interest disclosures here. Bankless, LLC is doing
business in California as Bonkless, LLC.

This site is protected by reCAPTCHA.

Go Bankless
Become a Citizen About us Causes Merch Jobs Terms Privacy Advertise With Us
Disclosures
Tools
Citizen Discord Airdrop Hunter Claimables Token Hub Perks Status Help & Support
Bankless API
Media
Bankless Podcast Articles Guides Daily Crypto Brief Metaversal Changelog

Not financial or tax advice. Bankless content is strictly educational and is not
investment advice or a solicitation to buy or sell any assets or to make any
financial decisions. This newsletter is not tax advice. Talk to your accountant.
Do your own research.

Disclosure. From time-to-time we may add links in this newsletter to products we
use. We may receive commission if you make a purchase through one of these
links. Additionally, the Bankless team hold crypto assets. See our investment
disclosures here.

This site is protected by reCAPTCHA.

© 2024 Bankless, LLC
Level up on crypto, daily

Join the world's most popular crypto community with daily alpha, news &
analysis, all free.

By joining, I agree to the Bankless Terms and Privacy statements

Join for free


Sign up with Google Sign up with Discord

Already a member? Sign in.

Dismiss
Sign in to Bankless


Email sign in details

Use password instead Login with an email link Forgot password?

or
Sign in with Google Sign in with Discord Connect Wallet

New to Bankless? Join
By continuing, you agree to the Bankless Terms and Privacy statements

Sign up to Bankless



By joining, I agree to the Bankless Terms and Privacy statements

Email sign up details


Sign up with Google Sign up with Discord

Already have an account? Sign In

By continuing to use Bankless.com, you accept the use of cookies and our Privacy
Policy
Accept Reject