什么是压缩 NFT?
Solana 上的压缩 NFT 通过将数据存储在账本本身中,降低了铸造和管理大量 NFT 的成本。铸造压缩 NFT 比铸造传统 NFT 更具成本效益,这催生了一系列新的应用场景,也为吸引更多 Solana 活跃用户提供了新方式。
本文将说明什么是压缩 NFT、它们的工作原理,以及如何压缩你现有或新建的 NFT。
什么是压缩 NFT?
压缩 NFT 是指数据存储在 Merkle 树结构中的 Solana NFT,其中 Merkle 根存储在链上账户中,而 Merkle 叶子节点存储在 Solana 账本中(账本本身在链下,但受共识约束),而不是像传统 NFT 那样完全存储在链上。
与普通 NFT 一样,压缩 NFT 也在链上发行和确认,不过Solana RPC 提供商会被用于在链下存储和处理数据,以最大限度降低存储成本。
压缩 NFT 使用索引器(indexer)来管理交易数据,并促进 RPC 与链上智能合约之间的数据查询。现有的智能合约必须经过修改才能与压缩 NFT 交互。此外,压缩 NFT 也可以被解压缩,以便与未经修改的 Solana 程序配合使用。
压缩 NFT 由谁创建?
压缩 NFT 是 Solana Labs 的 Merkle 树程序(称为account-compression)与 Metaplex 基金会的压缩 NFT 程序(称为 Bubblegum)共同创建的成果。
Metaplex 创建了 Solana 的 NFT 标准,其创始团队是从 Solana Labs 独立出来的。自 2021 年推出以来,Metaplex 已促成超过 2200 万个 NFT 的铸造,产生了 33.6 亿美元的 NFT 交易额。Solana 上的 Merkle 树程序使 通过 Metaplex 创建的压缩 NFT 能够被编码进 Solana 区块链的账本中。
压缩 NFT 的常见应用场景有哪些?
**压缩 NFT 使企业和个人能够大规模铸造 NFT,而不会产生传统 NFT 那样高昂的相关成本。**可能用到压缩 NFT 的行业包括:游戏、音乐、活动、元宇宙以及企业级应用。
1. 游戏
压缩 NFT 有潜力成为面向数百万玩家的游戏内资产。由于 web3 游戏可能达到的规模,压缩 NFT 能够帮助 web3 游戏开发公司在发行数百万个游戏内 NFT 时节省成本。
2. 音乐与活动
每年售出的演唱会和活动门票多达数百万张,压缩 NFT 能够为票务公司节省成本,同时作为参与者的数字收藏品,兼具 web3 产品的安全性和真实性。
3. 元宇宙
随着元宇宙及类元宇宙游戏日益流行,压缩 NFT 使元宇宙开发公司能够为全球数百万用户将大量游戏内收藏品数字化。
4. 企业级系统
从跨供应链追踪商品到将公共记录数字化,压缩 NFT 能让大型机构以远低于当前 NFT 实现方式的成本,大批量铸造、存储和检索 NFT。
什么情况下应该使用压缩 NFT?
在大规模铸造 NFT 时应使用压缩 NFT,因为将数据存储在链下能大幅降低每个 Solana 账户为管理数据都必须支付的账户空间租金成本。
压缩 NFT 与未压缩 NFT 的对比
压缩 NFT 与未压缩 NFT 都在链上发行和验证,但主要区别在于 NFT 元数据的存储位置。压缩 NFT 将元数据存储在链下,而传统 Solana NFT 将数据存储在链上。
压缩 NFT 与 NFT 有何不同?
压缩 NFT 与传统 NFT 在四个关键方面存在差异:
1. NFT 元数据存储
压缩 NFT 将数据以链下方式存储在 Merkle 树中,并通过 Solana RPC 提供商进行访问。
2. 成本
由于数据存储在链下,压缩 NFT 的成本效益显著更高。
3. 数据所有权
当你想修改一个压缩 NFT 时,必须通过密码学方式证明你有权变更链下数据,这确保了链下数据存储的可信度。
4. 程序交互
现有的程序(即 Solana 智能合约)必须经过修改才能与压缩 NFT 交互,除非 NFT 本身被解压缩。
压缩 NFT 能节省多少费用?
铸造 100 万个传统 NFT 大约需要 12,000 SOL,而铸造相同数量的压缩 NFT 仅需 5 SOL,节省了 99.9% 的成本。
事实上,NFT 集合规模越大,压缩带来的铸造成本降幅就越大,如下图所示:
由于铸造传统 NFT 中最主要的支出是支付 Solana 上的存储空间费用,而压缩 NFT 消除了这一开销,因此剩余成本大部分只是简单的交易费用。
铸造一个万人规模的 Solana NFT 集合需要多少成本?
铸造 10,000 个压缩 NFT——这是新项目的标准 NFT 集合规模——大约需要 3.5 SOL。下表详细列出了铸造从 1 万到 10 亿个 NFT 不等数量的压缩 NFT 集合的成本:
压缩 NFT 是如何运作的?
以下是 NFT 被压缩的过程:
- 使用 Metaplex 的 Bubblegum 程序来验证与 NFT 关联的元数据
- Bubblegum 调用 account-compression,向 Merkle 树追加一个新的叶子节点
- account-compression 在链上更新 Merkle 树,以反映最新状态
- 对 Merkle 树的任何变更(例如新增 NFT)都会被写入 Solana 区块链
链下索引器会跟踪 Merkle 树的变更,并管理支撑应用和程序所需的信息与授权。
什么是压缩 NFT 的权限(authority)?
**权限是与 NFT 账户关联的属性,用于指定该账户能执行哪些操作。**每个 NFT 账户下都有另外三个账户:
- 一个 mint 账户
- 一个关联代币账户(associated token account)
- 一个钱包账户
这些从属账户各自具有不同的关联属性。
1. 树权限(Tree authority)
这一权限通常授予某个程序,该程序被授权通过 account-compression 程序向树中添加新的叶子节点,该程序同时负责处理加密哈希的编码。
2. 叶子权限(Leaf authority)
这是授予拥有某个叶子节点的钱包账户的属性。该钱包账户可用于替换、移除以及解压缩叶子节点。
压缩 NFT 存储在哪里?
压缩 NFT 元数据以链下方式存储在 Solana RPC 服务提供商所维护的 Merkle 树中,并由索引器负责监控这些数据。这比将相同数据存储在链上更具成本效益。实际上,数据本身位于链下,而体积小得多的数据证明——即 Merkle 树根——则存储在链上。
如何压缩 NFT
压缩 NFT 是一项相对简单的操作,但具体流程会因你压缩的是新 NFT 还是已有 NFT 而略有不同。
压缩新 NFT
以下是压缩新 NFT(尚未铸造的 NFT)的四个步骤:
- 使用 Metaplex 的 Bubblegum 软件创建一个 Gummyroll Merkle 树
- 调用 Bubblegum 的 mintNFT 指令
- 链下索引器从账本中检索 mintNFT 指令,并保存叶子节点的元数据。
- dapp 通过 RPC 节点调用 get_assets_for_owner 指令以返回该 NFT
压缩已有 NFT
以下是压缩已有 NFT(已经铸造过的 NFT)的三个步骤:
- 在 Bubblegum 程序上调用 transfer 指令,并附带 NFT 信息
- Bubblegum 程序对 Gummyroll 进行跨程序调用(cross-program invocation),以添加一个新的 Merkle 树根
- 链下索引器从区块链中检索该转移指令,并更新叶子节点的所有者属性。
第三步确保该叶子节点所代表的 NFT 所有权被转移给新的所有者。
要压缩已有 NFT,无需从零开始创建 Gummyroll 树,具体可参阅 Metaplex 关于压缩 NFT 的文档以获取更多信息。
NFT 解压缩是如何运作的?
解压缩过程会将某个 NFT 从链下 Merkle 树数据集中移除。以下是简单的流程说明:
一旦 Token Metadata Program 验证了 Merkle 树上对应该 NFT 的叶子节点的完整性,该程序就会创建以下账户:
- Mint 账户
- 关联代币账户(ATA)
- Token Metadata 账户
- Master Edition 账户
随后,Token Metadata Program 会更新 Merkle 树以移除该叶子节点。
相关概览
Solana2026年7月27日
Solana 节点:验证者节点、RPC 节点与自建节点
Solana 节点是什么,验证者节点、RPC 节点与辅助数据系统有何区别,以及何时应自建节点、何时应使用第三方服务。
Solana2026年7月22日
Solana 归档数据:如何查询完整的区块与交易历史
Solana 归档数据详解:节点为何修剪历史数据、哪些 RPC 方法需要归档访问权限,以及如何大规模查询完整的区块与交易历史。
Solana2026年5月28日
Solana Agent Kit 与 GOAT 与 ElizaOS:该选哪个框架?
对比 Solana Agent Kit、GOAT 与 ElizaOS:Solana 原生深度、多链广度还是完整的 agent 运行时。包含代码示例与决策框架。

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。