用途
本技能用于指导开发者使用 Solana 压缩 NFT(cNFT)进行开发,核心目标是在大规模场景下以低成本创建、转移和管理 NFT。压缩 NFT 通过状态压缩技术,将原本每个 NFT 独立账户的租金成本,替换为一棵 Merkle 树的租金成本,从而在集合规模越大时节省越显著。
主要能力
- 经济性评估:提供常规 NFT 与压缩 NFT 的成本对比参考。资料给出的近似数据为:1,000 枚约 2 SOL 对比约 0.5 SOL(节省 75%);10,000 枚约 20 SOL 对比约 1 SOL(节省 95%);100,000 枚约 200 SOL 对比约 2 SOL(节省 99%);1,000,000 枚约 2000 SOL 对比约 5 SOL(节省 99.75%)。树成本为一次性预付,之后铸造近乎免费。
- Merkle 树配置:树的最大深度(maxDepth)、最大缓冲区大小(maxBufferSize)和 canopy 深度(canopyDepth)在创建时确定且不可更改。资料给出三档常见配置:小型(maxDepth 14,容量 16,384,约 0.5 SOL)、中型(maxDepth 20,容量 1,048,576,约 1.5 SOL)、大型(maxDepth 30,容量约 10 亿,约 5+ SOL)。
- 树创建:使用
@metaplex-foundation/mpl-bubblegum的createTree与 UMI 创建 Merkle 树,可设置public: false使仅树权限方可铸造。 - 铸造:使用
mintV1铸造单个 cNFT,并提供批量铸造函数(默认每批 5 笔交易)。 - 转移:使用
transfer与getAssetWithProof,转移需要索引器提供 Merkle 证明。 - 查询:通过 DAS(Digital Asset Standard)API 按所有者、集合或属性检索 cNFT,示例使用 Helius RPC 的
getAssetsByOwner、getAssetsByGroup、searchAssets等方法。 - 集合管理:先创建普通 NFT 作为集合,再使用
mintToCollectionV1将 cNFT 铸造到集合中。 - 辅助工具:提供树尺寸推荐函数、cNFT 发布检查清单、元数据 JSON 模板,以及常见故障模式与调试方法。
使用方式
资料以代码示例形式给出完整流程:先评估集合规模与铸造模式,计算并创建 Merkle 树,创建集合 NFT,上传元数据到 Arweave/IPFS,然后批量铸造,最后通过索引器验证与查询。转移和销毁操作前需从索引器获取最新 Merkle 证明。
适用场景
- 创建大型 NFT 集合(数千至数百万枚)。
- 需要显著降低单枚 NFT 铸造成本的场景。
- 按需铸造平台、连续铸造等模式。
限制与注意事项
- 树的最大深度与缓冲区大小在创建时固定,需谨慎选择。
- 每次转移或销毁都需要索引器提供 Merkle 证明。
- 索引器是必需的:没有 Helius、Triton 或自建索引器,无法查询或操作 cNFT。
- 并非所有市场都支持 cNFT,选择压缩方案前需确认上架平台的支持情况。
- 解压缩(将 cNFT 转为普通 NFT)可行但成本高昂,且违背压缩初衷。
- 常见故障包括:树创建因租金不足失败、树满或缓冲区超限导致铸造失败、索引器未同步导致查不到已铸造的 cNFT、证明过期导致转移失败、钱包不支持 cNFT 导致不显示。
质量验证标准
资料给出的完成标准包括:树以合适配置创建、测试铸造成功、铸造的 cNFT 可通过 DAS API 查询、使用最新证明可完成转移、集合在市场正确显示、错误处理覆盖常见故障。