新消息:Helius 收购 Light Protocol
Solana NFT 压缩
博客/基础知识

探索 Solana 上的 NFT 压缩

联合创始人兼 CEOX 上的 Mert MumtazLinkedIn 上的 Mert Mumtaz
阅读需 8 分钟

加密世界最近的一项重要进展是数字资产的诞生,它们通常被称为非同质化代币,简称 NFT。NFT 让人们能够以抗审查的方式拥有数字资产(例如艺术品、游戏道具、门票等),同时也催生了围绕这些资产的活跃点对点经济。事实上,可以说 NFT 是继数字货币之后,第二个在加密领域找到产品市场契合度(PMF)的重要应用。  

不过,NFT 也面临一些挑战。

对 Solana 而言,一项主要挑战是这些资产的链上存储成本。尽管 Solana 的交易费非常低,但存储费却并非如此。要让数字资产真正普及于数字世界,其存储成本就必须尽可能让大众都能负担得起。这正是 Solana NFT 压缩的用武之地。

NFT 压缩让开发者和创作者能够以显著更低的成本铸造大量 NFT,从而推动下一代加密应用的发展。想象一下,在一款大型多人在线角色扮演游戏(MMORPG)中,游戏道具是可交易的 NFT,游戏经济也与全球其他经济体系无缝整合。这类游戏自然会包含数百万甚至数十亿件道具,如果在 Ethereum 等区块链上铸造,成本将高得惊人。而 NFT 压缩让这一切现在就能在 Solana 上实现。

为了说明它有多强大,我们来看一个例子:Polygon(Ethereum 的扩容解决方案)目前铸造一个 NFT 的费用约为 0.05 美元。这意味着,在 Polygon 上铸造约 10 亿个 NFT 将花费约 5000 万美元。

在 Solana 上使用压缩后,每个 NFT 的成本约为 0.0000005 SOL。按撰写本文时的价格计算,10 亿个 NFT 约需 11,000 美元。两者相差约 5000 万美元,成本低了约 三个 数量级。这就是压缩的力量。

但压缩是如何工作的?让我们一探究竟。

Solana NFT 背景知识(可选)

在深入了解压缩之前,我们先回顾一下 NFT 在 Solana 上的工作方式。如果你已经熟悉 Solana NFT,可以直接跳到下一节。

Solana 上的代币使用两类账户:mint 账户和 token 账户。mint 账户包含代币的全局信息,例如供应量。token 账户则将代币与另一个用户账户关联起来。

例如,如果用户 A 收到 1500 USDC,那么用户 A 的 USDC token 账户(由其主用户账户派生)将存储这些代币。此流程适用于所有代币。如果我想向用户 A 发送 100 USDT,Transfer Program 会先派生用户 A 的 USDT token 账户(如果该账户不存在),如果存在则直接查找该账户。

这就像在现实世界中,你的主钱包里为每种货币准备了不同的小袋子。一个袋子存欧元,另一个存美元,依此类推,但主钱包属于你,也就是用户。

Solana 上的 NFT 是供应量为一的代币(即只有一个)。Metaplex 还推出了 Token Metadata Program,为 NFT 附加一个 metadata 账户。metadata 账户包含名称、符号、集合,当然也包括 NFT 图像本身等信息。这个话题本身相当深入,因此这里不再继续展开。

压缩背景知识

压缩的目标是减少链上存储的数据量。具体方法是将数据(例如图像元数据)存储在 Solana 账本的 Merkle 树中,并将根存储在链上。

索引器通过处理所有涉及 Merkle 树的交易来维护其当前状态。用户可以从索引器快速检索数据。链上根可确保程序交互有效且安全,用户也可以将索引器数据与链上根交叉核对,确保数据为最新且有效。

等等,先慢一点。什么是 Merkle 树?

Merkle 树是一种数据结构,可让你快速高效地验证大量数据的完整性。它会将数据拆分成称为“叶子”的较小部分,然后将这些叶子逐步组合成更大的“节点”。

树中的每个节点都代表其子节点的哈希。父节点会组合其子节点的哈希,生成自己唯一的哈希。这个过程会不断重复,直到所有叶子合并成树顶端的单个哈希,即“根哈希”。无需检查每个叶子,即可使用根哈希验证树中的全部数据是否完整且未被更改。

Solana 压缩由账户压缩程序提供支持。该程序允许开发者创建用于存储根哈希的 Merkle 树账户。然后,开发者可以添加新叶子或替换现有叶子。替换任何叶子都需要一条“证明路径”,也就是树中包含该叶子以及计算根哈希所需全部节点的最小子集。压缩程序会对照根哈希检查证明,以验证数据是否有效。由于树的实际内容并未存储在链上,这一步不可或缺。

总而言之,压缩程序允许开发者创建 Merkle 树,并添加或更新树中的项目。由于每项操作都通过 Solana 交易执行,因此可以在 Solana 账本中找到这棵树的历史记录。如果索引器或 RPC 提供商停止运行,或者开发者希望更换提供商,可以通过重放这棵树的历史记录来重建整棵树。

最后,树的根存储在链上,用于数据验证和安全保障。综合来看,该系统无需在链上存储状态,既降低了成本,也有效地“压缩”了数据。

NFT 压缩

NFT 压缩由名为 Bubblegum 的程序提供支持。Bubblegum 使用压缩程序将每个 NFT 存储在 Merkle 树中,无需 mint、token 和 metadata 账户。这正是压缩 NFT 如此便宜的原因!

铸造压缩 NFT 只需向 Merkle 树追加一个新项目。每个追加的项目都包含 NFT 名称、集合、所有者等信息。除了铸造之外,Bubblegum 还提供以下方法:

  • Transfer
  • Burn
  • Delegate, CancelDelegate
  • Burn
  • Redeem, CancelRedeem
  • Decompress
  • VerifyCreator, SetAndVerifyCreator
  • VerifyCollection, SetAndVerifyCollection

我们还编写了相关文档,帮助你开始使用这些方法,详见此处。

读取压缩 NFT

读取压缩 NFT 最简单的方法是使用 Digital Asset Standard (DAS) API。这是一套开源规范和系统,为查询代币提供统一接口。该系统由索引器提供支持,索引器会处理所有 Bubblegum 交易并存储 Merkle 树。此外,API 还允许用户按创作者、集合和所有者查询 NFT。没错,你没有看错。DAS API 不仅适用于压缩 NFT,也适用于普通的 Solana NFT!这意味着,你只需一次 API 调用,就能以极快的速度获取链上铸造列表,或查看某个用户或程序持有的所有 NFT。

同样,我们也为此 API 编写了文档,并提供了示例代码来帮助你入门,详见此处。

压缩的应用场景

撰写本文时,压缩技术才推出几周,但已经有一些出色的应用场景正在开发中。例如:

  • Dialect 正在使用 NFT 压缩制作聊天内贴纸包
  • Helium 正在使用 NFT 压缩表示 Helium Hotspot
  • Crossmint 正在使用 NFT 压缩向数十万人进行空投,并提供可供你试用的铸造 API
  • Drip Haus 正在使用 NFT 压缩开展大规模空投
  • Render 正在考虑迁移到 Solana,以利用 NFT 压缩将 GPU 渲染的完整场景图代币化

开始构建数字资产的未来

准备好使用压缩 NFT 了吗?你今天就可以使用 Helius 开始构建!Helius 支持 NFT 压缩,并在 Devnet 和 Mainnet 上提供 DAS API。你可以在此处免费生成 API 密钥,无需输入电子邮件或信用卡信息,只需连接你的 Solana 钱包。还不知道如何铸造压缩 NFT?查看我们的开源 Compression Examples 仓库。我们迫不及待想看到你的作品!

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新

放大图片