13. 空投策略与压缩 NFT (cNFT)

空投策略与压缩 NFT

在 Solana 上,给 10 万用户发送 NFT 空投是一个常见的需求。但如果使用标准 NFT,这将是一笔巨款。 本章我们将探讨如何通过技术手段,将空投成本降低 1000 倍以上。


1. 空投方式对比

方式原理成本 (10k 用户)优点缺点
标准空投 (Standard)为每个用户创建一个 Mint 账户和 Token 账户。~150 SOL ($20,000+)兼容性最好,完全链上。极贵。大部分钱都用来付账户租金了。
Claim 模式发个网页,让用户自己点 "Claim" (Mint)。0 SOL (用户付费)项目方省钱。转化率低。用户需要有 SOL 并且愿意签名。
压缩空投 (cNFT)使用 Merkle Tree 技术,将 100 万个 NFT 存入一个账户。~5 SOL ($700)极度便宜,适合大规模分发。需要支持压缩标准的钱包/市场;依赖 RPC 索引。

2. 压缩 NFT (Compressed NFT / cNFT)

Solana 的 State Compression (状态压缩) 技术是区块链扩容的黑科技。 Metaplex 的 Bubblegum 程序利用这一技术实现了 cNFT。

原理:把数据"哈希"上链

  • 传统 NFT:每个 NFT 都是一个独立的 Account,占用 165+ 字节的链上存储空间。
  • 压缩 NFT
    1. 创建一个巨大的 Merkle Tree 账户(例如能存 100 万个叶子)。
    2. 每个 NFT 只是树上的一个 叶子节点 (Leaf),包含元数据的哈希值。
    3. 链上只存储树的 根哈希 (Root) 和部分路径数据 (Canopy)。
    4. 具体的元数据日志存储在 Solana 的 Ledger (历史记录) 中,由 Indexer (索引器) 负责读取和提供查询。

结果:你只需要为一个 Tree 账户付租金,就可以在里面存入数百万个 NFT。


3. 实现 cNFT 空投

要发送 cNFT,你需要使用 @metaplex-foundation/mpl-bubblegum 库。

步骤 1: 创建 Merkle Tree

你需要根据预估的空投数量选择树的大小 (maxDepth)。

  • Depth 14: ~16k NFTs
  • Depth 20: ~1M NFTs (租金约 5 SOL)
typescript
import { createTree } from '@metaplex-foundation/mpl-bubblegum'; async function setupTree(umi) { const merkleTree = generateSigner(umi); // 创建一棵能存 100万 (2^20) 个 NFT 的树 await createTree(umi, { merkleTree, maxDepth: 20, maxBufferSize: 64, }).sendAndConfirm(umi); return merkleTree.publicKey; }

步骤 2: 铸造 cNFT

这只是一个简单的指令,将数据哈希后追加到树上。没有创建新账户,因此无需支付租金。

typescript
import { mintV1 } from '@metaplex-foundation/mpl-bubblegum'; async function airdropCnft(umi, treeAddress, userAddress) { await mintV1(umi, { leafOwner: userAddress, merkleTree: treeAddress, metadata: { name: "Super cNFT", uri: "https://...", sellerFeeBasisPoints: 0, collection: { key: collectionMint, verified: false }, creators: [...], }, }).sendAndConfirm(umi); }

4. 权衡与选择

什么时候用 cNFT?

  • 游戏道具 (数量巨大,单价低)。
  • 活动门票 / POAP (大规模分发)。
  • DePIN 设备证书 (百万级设备)。

什么时候用标准 NFT?

  • 高价值艺术品 (1/1 Art)。
  • 主要用于 DeFi 抵押 (目前很多借贷协议还不支持 cNFT)。

随着生态的发展,越来越多的钱包和市场已经原生支持 cNFT,它正在成为 Solana 大规模应用的首选标准。

TSPlayground
EDITOR ACTIVE
Initializing TS Environment...

空投模拟器

Total Cost
0.00000 SOL
Performance Metrics
Items Minted
0
Rent / Item
~0.015 SOL
Solana Blockchain
Creating Independent Accounts...