本文探讨了Solana上的NFT压缩技术,降低了NFT在区块链上的存储成本,并通过Merkle树确保数据完整性,使得大规模NFT铸造成为可能。
8分钟阅读 2023年3月24日
在加密世界中的一个最新进展是数字资产的出现——通常称为非同质化代币,简称NFT。NFT允许对数字资产(如艺术作品、游戏物品、票证等)进行抵抗审查的所有权,并启用活跃的点对点经济来处理这些资产。事实上,可以说NFT是加密领域找到产品市场契合(PMF)的第二个主要应用(继数字货币的概念之后)。
然而,NFT并非没有挑战。
在Solana上,一个主要的挑战是这些资产在链上的存储成本。虽然Solana受益于极低的交易费用,但存储费用另当别论。为了使数字资产在数字世界中真正普及,存储这些资产的成本必须尽可能普遍地可负担。这就是Solana上的NFT压缩的作用。
NFT压缩通过允许开发者和创作者以显著更低的成本铸造大量NFT,为下一代加密驱动的应用程序提供了动力。想象一下一个MMORPG,其中游戏物品是可交易的NFT,游戏经济与全球经济无缝集成。自然,这些游戏将包含数百万甚至数十亿个物品,在以Ethereum为基础的区块链上铸造这些物品的费用将昂贵无比。而NFT压缩在Solana上使这一切成为可能——现在。
要了解这一点有多强大,我们来看一个例子:Polygon(Ethereum的扩展解决方案)目前铸造一个NFT的费用大约为0.05美元。这意味着在Polygon上铸造大约十亿个NFT的成本会在五千万美元左右。
在Solana(带压缩)上,铸造一个NFT的费用约为0.0000005 SOL,因此在写作本文时,铸造十亿个NFT的费用大约为11,000美元。这大约是五千万美元或约三个数量级更便宜。这就是压缩的力量。
但压缩是如何工作的呢?让我们找出答案。
NFT压缩让开发者和创作者可以将大部分NFT数据存储在账本上(这比链上存储便宜得多),同时将该数据的数字指纹以Merkle树的形式存储在Solana区块链上。如果索引器数据以任何方式被篡改,那么该数据的数字指纹将与链上的指纹不匹配——从而保证数据的完整性。
在深入压缩之前,让我们先回顾一下NFT在Solana上的工作原理。对于那些已经熟悉Solana NFT的人,可以跳过到下一节。
Solana上的代币利用两种账户类型:_mint_账户和_token_账户。mint账户包含关于代币的全球信息,例如供应量。token账户将代币与另一个用户账户关联。
例如,如果用户A接收了1500个USDC,那么用户A的USDC token账户(从其主用户账户派生而来)将存储这些代币。此过程适用于所有代币。如果我想给用户A发送100个USDT,转账程序将首先派生用户A的USDT token账户,如果它不存在,则将其查找。
这就像在物理世界的主钱包中为每种不同的货币拥有许多不同的钱袋。你在一个袋子中存储欧元,在另一个袋子中存储美元,等等——但主钱包属于你,用户。
Solana上的NFT是单一供应的代币(例如,只有一份存在)。Metaplex还引入了一种称为Token Metadata Program的内容,将一个_metadata_账户附加到NFT上。元数据账户包含名称、符号、收藏以及当然还有NFT图像本身等信息。这本身是一个相当深奥的话题,所以我们就不再进一步探讨了。
压缩的目的是减少链上存储的数据量。这是通过将数据(例如,图像元数据)存储在Solana账本上的Merkle树中,并将根节点存储在链上来实现的。
索引器通过处理与此树相关的所有交易来维护Merkle树的当前状态。用户可以快速从索引器检索其数据。链上的根节点确保程序交互是有效且安全的,用户可以将索引器数据与链上的根节点交叉验证,以确保数据是最新且有效的。
好的——慢一点,Merkle树是什么?
Merkle树是一种数据结构,允许你快速有效地验证大量数据的完整性。它通过将数据分解成更小的部分,称为“叶子”,然后将这些叶子组合成越来越大的“节点”来实现这一点。
树中的每个节点代表其子节点的哈希。父节点再将其子节点的哈希组合成自己的唯一哈希。这个过程会重复,直到所有的叶子组合为树顶端的一个单一哈希,称为“根哈希”。根哈希可用于验证树中所有数据是否完整且未发生变化,而无需检查所有独立的叶子。
Solana的压缩技术由账户压缩程序提供支持。该程序允许开发者创建一个Merkle树账户来存储根哈希。然后,开发者可以添加新的叶子或替换现有的叶子。任何叶子的替换都需要“证明路径”,这是包含叶子节点和计算根哈希所需的所有节点的树的最小子集。压缩程序通过将证明与根哈希进行对比来验证数据的有效性。这是必要的,因为树的实际内容并没有存储在链上。
总之,压缩程序允许开发者创建Merkle树,并在树中添加/更新项目。由于每个操作都是通过Solana交易执行的,树的历史记录可以在Solana账本上找到。如果索引器或RPC提供商发生故障,或者开发者想要更换提供商,整个树可以通过重放树的历史记录来构建。
最后,树的根节点存储在链上以确保数据验证和安全性。将这一切结合在一起,系统消除了在链上存储状态的需要,从而降低了成本并有效“压缩”了数据。
开发者对压缩的一个普遍关切是:“如果我依赖的RPC提供商被攻破或关闭了,那我就没戏了?”答案是否定的!因为所有交易仍然存储在链上,任何人都可以重放这些交易以推导出链的当前状态。你可以将RPC提供商视为一个“缓存”,便于访问当前状态。
NFT压缩由一个名为Bubblegum的程序提供支持。Bubblegum使用压缩程序将每个NFT存储在Merkle树中,从而消除了mint、token和metadata账户的需要。这就是压缩NFT如此便宜的原因!
铸造一个压缩NFT简单得像向Merkle树追加一个新项目,每个追加项目将包括NFT名称、收藏、所有者等信息。除了铸造,Bubblegum还提供以下方法:
我们还添加了一些文档,以帮助你开始使用这些方法,在这里。
读取压缩NFT的最简单方法是通过数字资产标准(DAS)API,这是一个开源规范和系统,提供了一个统一的查询代币的界面。该系统由处理所有Bubblegum交易并存储Merkle树的索引器驱动。此外,API允许用户根据创建者、集合和所有者查询NFT。没错,你没有看错。DAS API不仅适用于压缩NFT,也适用于普通的Solana NFT!这意味着你可以在一次API调用中以闪电般的速度获得链上的铸造名单,或者查看用户或程序持有的所有NFT。
另外,我们已经为此API编写了文档,甚至提供了示例代码供你开始,在这里。
截至撰写本文时,压缩功能只推出了几周,已经有了一些令人惊叹的用例正在进行中。一些例子包括:
想与压缩NFT一起工作吗?你可以立即开始使用Helius构建!Helius支持NFT压缩,并在Devnet和Mainnet中提供DAS API。你可以在这里免费生成一个API密钥,无需输入电子邮件或信用卡信息——只需连接你的Solana钱包。还不知道如何铸造压缩NFT?请查看我们的开源压缩示例库。我们迫不及待想看看你构建的东西!
- 原文链接: helius.dev/blog/solana-n...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!