Research/Solana

Compressed NFTs for Loyalty Programs: How Solana Makes Million-Member Rewards Affordable

How Solana's state compression reduces NFT minting costs by 99.9%, enabling brands to deploy million-scale loyalty and membership programs on-chain.

bcMaoOct 16, 2026

Loyalty programs have always been a scale problem. Starbucks runs a rewards program with over 30 million members. Amazon Prime has more than 200 million subscribers globally. When brands explore putting membership credentials on-chain, the first question is always cost: minting an NFT for every member using a standard token standard is financially impractical at that scale. On Ethereum, minting one million ERC-721 tokens in gas alone can cost tens of thousands of dollars. Even on Solana, one million standard NFTs require roughly 24,000 SOL in rent deposits.

Solana's state compression changes this equation by orders of magnitude. Using concurrent Merkle trees that store NFT data off-chain while keeping cryptographic proofs on-chain, compressed NFTs (cNFTs) reduce the cost of minting one million tokens to as little as 5 to 14 SOL: roughly $500 to $1,500 depending on configuration. That 99.9% cost reduction is what makes million-member on-chain loyalty programs feasible for the first time.

How State Compression Reduces NFT Costs

Standard NFTs on Solana store their full metadata in on-chain accounts. Every validator holds a complete copy of every account, and the creator pays rent-exempt deposits to keep that data alive: roughly 0.002 SOL per token account. At one million NFTs, that rent alone exceeds $200,000.

Compressed NFTs invert the storage model. Instead of storing full metadata in validator memory, each NFT's data is hashed and inserted as a leaf in an on-chain Merkle tree. Only the tree's root hash lives in validator state. The raw metadata is written to Solana's transaction log (the permanent ledger), making it recoverable by replaying history but removing it from the expensive per-validator storage layer.

Concurrent Merkle Trees

A naive Merkle tree has a concurrency problem: any leaf change updates the root hash, which invalidates every other pending proof in the same block. Solana solves this with concurrent Merkle trees, which maintain an on-chain changelog buffer of recent root updates. When a transaction arrives with a slightly stale proof, the validator uses the changelog to "fast-forward" the proof to the current root without rejecting it. The buffer size determines how many concurrent updates the tree can handle per slot.

Three parameters define a compressed NFT tree at creation, and they cannot be changed afterward:

  • Max depth: determines capacity (2^depth leaves, so depth 20 supports roughly 1,048,576 NFTs)
  • Max buffer size: the changelog capacity, determining how many concurrent updates the tree supports per slot
  • Canopy depth: how many proof nodes are cached on-chain, reducing the proof data that transactions must include
Common misconception: "Concurrent" does not mean parallel execution. Validators still process tree updates sequentially. The term refers to proof handling: multiple transactions can reference slightly stale roots and still validate, because the changelog lets each proof be reconciled against the current state.

Where the Data Lives

The full NFT metadata (name, image URI, attributes) is emitted to transaction logs via Solana's Noop program. Indexers like Helius parse these log events and build off-chain databases that applications query through the Digital Asset Standard (DAS) API. The entire tree can be reconstructed by replaying the tree's transaction history from the ledger: no external data source is required for recovery.

For loyalty programs, this architecture means that a member's NFT is verifiable on-chain (via Merkle proofs) but does not impose per-member storage costs on every validator in the network. The practical effect is that the per-NFT cost drops from the rent for a full account to the transaction fee for a single Merkle leaf insertion.

Cost Comparison: Standard vs Compressed NFTs

The economics of compressed NFTs depend on tree configuration. A deeper canopy caches more proof nodes on-chain, which improves composability but increases the one-time tree creation cost. Here is how the costs break down for a loyalty program targeting one million members, based on Metaplex Bubblegum v2 documentation:

MethodTree/Setup CostPer-NFT CostTotal for 1M NFTs
Standard Solana NFTN/A~0.024 SOL (rent)~24,000 SOL (~$2.5M)
cNFT (depth 20, canopy 3)~0.31 SOL~0.000005 SOL (tx fee)~5.3 SOL (~$550)
cNFT (depth 20, canopy 13)~8.5 SOL~0.000005 SOL (tx fee)~13.5 SOL (~$1,400)
cNFT (depth 24, canopy 15)~26.1 SOL~0.000005 SOL (tx fee)~26.2 SOL (~$2,700)
Ethereum ERC-721Contract deployment~$0.03+ gas~$30,000+

Dollar estimates assume SOL at roughly $100. The canopy-3 option is the cheapest but requires transactions to include 17 proof accounts, which limits composability. The canopy-13 option is the most commonly recommended balance of cost and usability. For more detail on state compression economics, see our deep dive on Solana state compression costs.

Key takeaway: The cost reduction from standard to compressed NFTs is not 50% or 80%. It is 99.9%+. The tree creation cost (rent for the Merkle tree account) is a one-time expense that dominates the total, while per-NFT minting cost drops to a fraction of a cent.

Real-World Deployments

Several projects have demonstrated compressed NFTs at scale, providing evidence that the technology works beyond test environments.

DRiP Haus: Creator Loyalty at Scale

DRiP Haus is a Solana-based platform that distributes free digital collectibles weekly from a curated roster of artists, musicians, and creators. Subscribers receive compressed NFTs at no cost: the economic model works because state compression makes mass distribution affordable. By late 2023, the Solana Foundation reported that over 68 million compressed NFTs had been minted across the ecosystem, with DRiP as one of the largest adopters. Ecosystem-wide, the Bubblegum program routinely processes over 3 million cNFT mints per week.

DRiP's model resembles a loyalty program: subscribers earn engagement rewards ("droplets") by interacting with creator content, and higher engagement unlocks rarer collectible tiers (common, rare, legendary). Most creators on the platform have 20,000 to 50,000 subscribers, with the most popular reaching nearly 250,000. This distribution scale would be cost-prohibitive without compression.

Boba Guys: Retail Loyalty on Solana

Boba Guys, a San Francisco-based tea chain, launched its "Passport" blockchain loyalty program on Solana in 2023. The program features gamified rewards including loot boxes, loyalty tiers, and digital collectibles earned through store visits. According to a Solana Foundation case study, 15,000 users joined in the first 80 days, with pilot data showing a 67% increase in monthly visits and a 65% increase in monthly spending among program members: an 800% return on investment. The program credits Solana's low transaction costs for making per-visit rewards economically viable at retail scale.

Crossmint: NFT Infrastructure for Brands

Crossmint provides API infrastructure for brands to mint and distribute compressed NFTs without requiring blockchain expertise. Its minting API processed over 300,000 compressed NFTs in a single afternoon during testing, demonstrating the throughput needed for large campaign launches. Crossmint has worked with brands including Etihad Airways on tokenized loyalty credentials, abstracting away wallet creation and blockchain complexity behind standard API calls.

Why Traditional Loyalty Programs Are Broken

The appeal of on-chain loyalty is not just novelty. Traditional loyalty programs have structural problems that blockchain-based alternatives can address:

  • Fragmentation: rewards are siloed per brand, and members cannot combine or transfer value across programs
  • Devaluation: brands routinely devalue outstanding points to manage balance-sheet liabilities
  • Expiration: points expire, destroying value that members earned
  • Opacity: members have no verifiable proof of their status or history
  • Lock-in: switching costs are high because rewards are non-portable

On-chain loyalty credentials address these issues by giving members a verifiable, portable, and (optionally) transferable digital asset. Compressed NFTs can represent membership tiers, achievement badges, purchase receipts, or redeemable vouchers. Because they exist on a public ledger, third parties can build on top of them: token-gating discounts, composing rewards across brands, or allowing secondary markets for transferable membership tiers.

Membership Tiers and Payment Discounts

One of the most practical applications of compressed NFTs in loyalty is tiered membership that unlocks payment benefits. A brand can mint cNFTs representing Bronze, Silver, Gold, and Platinum tiers. Each tier's metadata encodes the member's status and history. When a member makes a purchase, the payment flow checks for a matching cNFT in the wallet and applies the corresponding discount.

This pattern works because cNFTs are verifiable on-chain through Merkle proofs. A payment processor or point-of-sale system can query the DAS API to confirm a wallet holds a Gold-tier membership cNFT, then apply a 10% discount automatically. The verification happens in milliseconds, and the cNFT itself costs fractions of a cent to issue.

Bubblegum v2 adds native support for soulbound (non-transferable) cNFTs through freeze and lock mechanics. For loyalty programs where tier status should not be tradeable, this prevents members from selling their status on secondary markets while still giving them a verifiable credential they control.

Comparing Approaches Across Chains

Solana's compressed NFTs are not the only approach to on-chain loyalty. Ethereum and Polygon have their own models, each with different tradeoffs.

FeatureSolana cNFTsEthereum SBTsPolygon NFTs
Cost per 1M tokens~$500 to $1,400~$30,000+ (mainnet)~$1,000 to $5,000
TransferabilityConfigurable (transferable or soulbound)Non-transferable by designTransferable by default
Data storageOff-chain (Merkle tree proofs on-chain)On-chain or off-chain (IPFS)On-chain or off-chain
ComposabilityRequires DAS API; growing ecosystemFull EVM composabilityFull EVM composability
Finality~400ms (slot time)~12 min (2 epochs)~2 sec (PoS), ~30 min to Ethereum
Notable loyalty programsDRiP, Boba Guys, Etihad (via Crossmint)Community credentials, DAOsStarbucks Odyssey (shut down March 2024)

Lessons from Starbucks Odyssey

The highest-profile on-chain loyalty experiment to date ended in failure. Starbucks launched its Odyssey program on Polygon in late 2022, offering NFT "stamps" as extensions to its existing rewards program. Members could earn stamps by completing challenges and buy limited-edition collectibles. The program shut down on March 31, 2024, after its limited-edition collections failed to sell out and engagement lagged expectations.

The Odyssey failure was not primarily a cost problem: Polygon's fees are low enough for mass minting. The issues were product-level: the NFT experience felt disconnected from the core rewards program, the value proposition for non-crypto-native members was unclear, and the collectible model did not map well to habitual purchases. For future on-chain loyalty programs, the lesson is that low minting costs are necessary but not sufficient. The program must deliver utility that members actually value.

Ethereum Soulbound Tokens

Soulbound tokens (SBTs), proposed by Vitalik Buterin in 2022, are non-transferable tokens designed for identity and credentials. They are a natural fit for loyalty status (a Gold membership should not be sellable), but they lack the cost optimization of compressed NFTs. Each SBT on Ethereum mainnet is a full ERC-721 contract interaction, with gas costs that scale linearly with membership size. For programs with fewer than 10,000 members, the cost difference may be acceptable. At one million members, it is a deal-breaker.

ZK Compression: The Next Generation

Solana's compression technology continues to evolve. ZK Compression, originally developed by Light Protocol and now maintained by Helius after its acquisition, extends compression beyond NFTs to general-purpose accounts. Where Bubblegum compresses NFTs specifically, ZK Compression uses zero-knowledge validity proofs to compress any Solana account type: token accounts, program-derived addresses, and arbitrary state.

For loyalty programs, ZK Compression enables compressed token accounts that function like standard SPL tokens but cost roughly 5,000x less to create. A loyalty point system using compressed token accounts could distribute fungible reward points to one million members for about $50 in total storage costs, compared to over $260,000 for standard SPL token accounts. This opens up designs where members hold both a compressed NFT (representing membership tier) and compressed token accounts (holding redeemable loyalty points).

Implementation Considerations

Deploying a cNFT loyalty program is not as simple as calling a mint function one million times. Several architectural decisions affect cost, performance, and user experience.

Tree Configuration

Choosing the right tree depth and canopy is the most consequential decision. A depth-20 tree supports roughly one million cNFTs but cannot be expanded later. If membership grows beyond capacity, a new tree must be created and existing members' NFTs cannot be migrated into it. Over- provisioning with a depth-24 tree (16 million capacity) costs more upfront but avoids this ceiling. The canopy depth determines composability: a shallow canopy (3) keeps costs low but requires transactions to include up to 17 proof accounts, which can be prohibitive for programs that need other accounts in the same transaction.

Indexing Dependency

Because cNFT metadata lives off-chain, applications depend on indexers (Helius, Triton, or self-hosted) to serve data through the DAS API. If an indexer goes down, applications cannot read cNFT metadata or verify ownership until they switch providers or rebuild from ledger history. This is a liveness dependency, not a security one: the on-chain Merkle root remains the source of truth, and the full tree can always be reconstructed from transaction history.

Wallet Abstraction

Most loyalty program members are not crypto users. They do not have Solana wallets, do not understand seed phrases, and should never need to. Successful deployments use embedded wallets (via providers like Crossmint or Privy) that create and manage wallets behind the scenes, using email or social login. The member sees a loyalty badge in their app; the blockchain infrastructure is invisible.

How Spark Approaches Compression Differently

Solana's state compression optimizes for low-cost digital asset issuance by moving data off validator memory and into Merkle tree proofs. Spark, a Bitcoin Layer 2, uses a different kind of compression: statechains keep Bitcoin transactions entirely off-chain, transferring ownership through cryptographic key rotation rather than on-chain state changes. The goal is similar (reduce costs while preserving guarantees) but the mechanism is fundamentally different.

Where Solana compresses the cost of storing data, Spark compresses the cost of transferring value. A Spark transfer moves Bitcoin between users without broadcasting any on-chain transaction, keeping fees near zero while maintaining self-custody. For payment applications, this is complementary to Solana's approach: a loyalty program might use cNFTs on Solana for membership credentials while using Spark for low-cost Bitcoin or USDB stablecoin payments at checkout. Developers building on Spark can explore the Spark SDK documentation to integrate Bitcoin payment rails alongside loyalty infrastructure.

Building a cNFT Loyalty Program: A Practical Roadmap

For teams evaluating compressed NFTs for loyalty, the following steps outline the critical decisions:

  1. Define the credential model: will cNFTs represent membership tiers, achievement badges, redeemable vouchers, or purchase receipts? Each has different metadata requirements and transferability rules
  2. Choose tree configuration: estimate peak membership, add a 4x buffer, and select the depth accordingly (depth 20 for up to ~1M, depth 24 for up to ~16M)
  3. Select a minting provider: Crossmint, Metaplex Bubblegum directly, or Helius's compression APIs each offer different levels of abstraction
  4. Implement wallet abstraction: use embedded wallets so members never interact with seed phrases or transaction signing
  5. Build verification into payment flows: integrate DAS API queries into checkout to apply tier-based discounts automatically
  6. Plan for composability: consider whether third-party brands should be able to read and reward your members' status, and configure canopy depth accordingly

For a deeper look at how state compression works under the hood, see our technical analysis of Solana state compression costs for payment applications. For foundational concepts, the state compression glossary entry covers the core mechanics.

Conclusion

Compressed NFTs solve the cost problem that has prevented on-chain loyalty programs from reaching mainstream scale. Minting one million membership credentials for under $1,500 puts blockchain-based rewards within reach of any brand that can justify the engineering investment. The technology is proven: DRiP has distributed tens of millions of cNFTs, Boba Guys has demonstrated retail ROI, and infrastructure providers like Crossmint have reduced integration complexity to API calls.

The remaining challenges are not technical but product-level. As Starbucks's Odyssey demonstrated, low minting costs alone do not guarantee engagement. The programs that succeed will be those that deliver tangible utility: verifiable status, composable rewards, and payment discounts that make membership worth holding. With compressed NFTs removing the cost barrier, the question shifts from "can we afford to put loyalty on-chain?" to "can we design a program worth joining?"

This article is for educational purposes only. It does not constitute financial or investment advice. Bitcoin and Layer 2 protocols involve technical and financial risk. Always do your own research and understand the tradeoffs before using any protocol.