淡马锡 Web3 基金 Superscrypt:存储证明将解锁大量跨链新用例
原文标题:Blockchain Interoperability Part III: Storage Proofs, Powering new cross-chain use cases
作者:Jacob,Superscrypt
编译: bayemon.eth, ChainCatcher
在关于互操作性第二部分中,我们探讨了共识证明作为一种新兴的信任最小化方式,如何促进区块链之间的桥接。
在本文中,我们将探讨存储证明(Storage Proofs),它采用了信任最小化验证概念,并将其扩展到区块历史交易记录中。通过这种存储证明验证历史交易和用户活动,能够解锁大量跨链用例。
在第二部分中,我们介绍了共识证明(Consensus Proofs),这是一种跨区块链桥接资金的信任最小化方法。由于桥接用户通常希望交易能在无延迟的情况下即时完成,因此共识证明非常有效。因为它可以在区块链持续同步的过程中不断检查区块链的最新状态。
这种“信任最小化桥接”的概念也可以反向应用,即追溯历史,使用零知识证明来验证旧区块中的交易和数据。这些 "历史存储证明 "可以实现一系列不同的跨链用例,在本文中,我们将介绍存储证明的定义,原理以及用例。
检索历史数据
区块链历史数据有多种用途。它可以证明资产所有权、记录用户行为和交易历史,然后将其输入链上智能合约或应用程序。截至目前,写入以太坊的区块已超过 1800 万个。然而,智能合约只能访问最新的 256 个区块(或最近约 30 分钟内的数据),因此 "历史数据 "指的是最后 256 个区块之外的其他信息。
如今,要访问历史数据,协议通常会查询存档节点提供商,即如 Infura、Alchemy 或其他索引器在内的其他第三方。这意味着要信任和依赖它们及其数据。
历史数据
不过,可以通过使用存储证明,以相对更低的信任水平完成数据检索。
存储证明是零知识证明,可以验证存储在区块链上的历史数据。更具体地说,"存储证明 "可用于证明过去某个区块存在特定状态。其特点是不需要信任第三方或甲骨文,而是将信任内置于存储证明中。
存储证明如何帮助验证某些数据存在于较早的历史区块中?这涉及到两步验证:
- 步骤1:检查特定区块是否确实存在于链上历史记录中,例如,区块是源链历史的有效组成部分
- 步骤2:检查特定数据是否是区块的一部分,即特定交易等信息是否是该区块的一部分(这部分验证可以通过Merkle 包含证明完成)
接收方(如目的链上的智能合约)并完成证明后,就会对数据有效性产生信任,从而执行相应的指令集。这个概念还可以进一步扩展:可以使用经过验证的数据运行额外的链外计算,然后生成另一个零知识证明,以证明数据和计算。
简而言之,存储证明允许以信任最小化的方式检索历史链上数据。这一点非常重要,因为正如我们在第一部分中所概述的,我们认为在未来几年中,Web3 将变得更加多链和多层。多种Layer1与rollup 和应用链的出现意味着用户的链上活动可能在多条链上同事进行。这就更加强调了对信任最小化互操作性解决方案的需求,这种解决方案可以在多个域中保持用户资产、身份和交易历史的可组合性。这正是存储证明可以帮助解决的问题。
存储证明用例
存储证明允许智能合约作为先决条件检查任何历史交易或数据。这为跨链应用设计提供了极大的灵活性。
首先,存储证明可以证明源区块链上的任何历史数据,例如:
- 账户余额和代币所有权
- 用户交易活动
- 指定时间内资产交易的历史价格
- 不同链上流动性池中的实时资产余额
其次,存储证明可以被发送至目标链上,从而解锁各种跨链用例:
- 使用户能够选择较低成本的 L2 对治理提案进行投票
- 允许 NFT 持有者在新链上获得铸造NFT与获取社区利益
- 根据用户与特定 dApp 的历史和互动情况奖励用户(如空投)。
- 根据用户的综合交易和信用记录提供利率贷款
- 对休眠账户进行恢复
- 针对未来交易计算历史 TWAP
- 根据多条链上的流动性池计算更准确的 AMM 交易价格
从本质上讲,存储证明允许应用程序在多个链上查询和移植用户的链上活动和历史记录,以便为另一个链上的智能合约或应用程序提供信息。
存储证明 - 用例
以下,我们通过一个更详细的例子解释存储证明的工作机制。
存储证明机制用例详解
假设"X"是一个在以太坊上使用代币的 DeFi 协议。X将发布一项治理提案,项目方希望在成本更低的链上发布以促进用户投票。用户只有在特定时间点(即快照,例如区块 #17,000,000)在以太坊上持有 X 代币,才能进行投票。
当前是如何实现的?
当前的方法是查询存档节点,以获取区块 #17,000,000 中满足要求的代币持有者完整名单。随后,DAO 管理员将该名单存储在目标链上的智能合约中,以确定最终合乎标准的投票名单。然而,这种方法有一些局限性:
- 投票者名单可能非常庞大,而且每次快照都会发生变化,这使得每次投票提案的链上存储和更新成本很高;
- 对归档节点提供商及其提供的数据存在隐含信任;
- 必须确保管理 DAO 的成员不会篡改投票名单
存储证明如何实现
正如我们在第二部分中解释的那样,昂贵的计算可以交给给链外零知识证明器。
zk 校验器将生成简洁的证明,并发送给目标链进行验证。以上述 DAO 投票资格为例:
- 证明者生成零知识证明,证明 #17,000,000 区块是以太坊历史的一部分(上文步骤 1.)。
- 在证明了区块的有效性后,我们可以使用Merkle 包含证明(Merkle inclusion proofs)证明用户在该区块最终完成时持有 DAO 代币(上文步骤 2.)。
历史数据证明使跨链投票成为可能
随后,证明被发送到目标链上的智能合约进行验证。如果验证成功,L2 上的智能合约就会赋予用户投票权。
使用存储证明有几点优势,因其存在使得验证过程并不需要:
- 信任归档节点提供商;
- 协议无需维护昂贵的链上选民名单
- 让用户将其资产转移到目标链上
存储证明需要的设置
到目前为止,我们已经抽象出了存储证明的一些复杂性。但是,使用存储证明需要服务提供商进行缜密的初始设置,以确保可以在不信任提供商的情况下使用存储证明。作为这一过程的一部分,有两样东西会在链上生成和存储:
- 整个链的零知识证明("zk 承诺"):服务提供商将源链上的所有历史区块通过Merkle Tree 分为为连续且大小固定的 "块",并为每个块生成零知识证明,以验证分组。然后将这些证明递归合并,直到获得最终的零知识证明,这是对整个链的 "zk 承诺"。这证明提供者已正确索引了整个链的历史。
基于以太坊历史信息生成的 zk 承诺
- Merkle Mountain Range 数据结构:供应商还将源码链的区块哈希值(块)分组的 Keccak Merkle 根存储在名为 Merkle Mountain Range (MMR) 的链上数据结构中。使用这种数据结构是因为它易于查询和更新,并能让提供商高效地证明给定区块存在于链的历史中。MMR 使用 Keccak256 哈希值、Poseidon 哈希值或两种哈希值创建。Poseidon哈希值对零知识更友好,允许在历史数据上进行计算,然后通过零知识证明数据和计算的有效性。
Merkle Mountain Range(MMR)
随着新区块增加,服务提供商会定期(如每小时或每天)更新 "zk 承诺 "和 MMR,并与源链同步。这样做的目的是保持历史区块始终与当前可从 EVM 访问的 256 个区块相关联。这确保了历史数据与以太坊当前可用的区块之间的关联性。
在下图中,我们详细介绍了如何实现这一设置:
综上所述,下文阐述了设置完成后存储证明在我们前面介绍的 DAO 投票示例中的具体方法:
- 服务供应商创建并存储整个链上的 "zk 承诺"(即以太坊交易历史)和目标链上的 MMR
- 服务供应商提供应用程序接口查询链上或链外的历史数据
- 目标链上的投票 dApp 向供应商智能合约发送查询,确认用户是否在以太坊上的 #17,000,000 区块持有 DAO 代币
- 此外,对于供应商而言则需要检验:
- 查询的区块是以太坊历史记录的一部分(上文步骤 1);随后提通过MMR生成区块包含的零知识证明
- 用户在 #17,000,000 区块中持有 DAO 代币(上述步骤 2.);然后供应商生成另一个零知识证明,证明用户在该区块内持有 DAO 代币
- 供应商者将上述生成的证明汇总为一个单一的零知识证明
- 然后将汇总的零知识证明发回目标链上的投票 dApp 智能合约,由其进行验证,验证成功后允许用户投票。
致力于该领域的项目团队
有几家公司正在构建以信任最小化的方式访问链上历史数据的智能合约。
Axiom,目前已在以太坊上线,旨在通过基于 zk 的存储证明(Storage Proofs),为以太坊上的智能合约提供访问以太坊历史数据的途径。该团队还在增强在历史数据基础上进行链外计算的能力,并在零知识中证明这些数据和计算的正确性。
Relic Protocol 采用与 Axiom 类似的技术方法,并已在以太坊和 zkSync Era 上运行。Relic 使用 Merkle 包含证明来证明数据包含(与 Axiom 在零知识中证明 Merkle 包含的方法不同)。
Herodotus 正在努力为 L2 提供以太坊历史数据。目前,测试网已在 Starknet 和 zkSync Era 上线。有了 OP 基金会的资助,Herodotus 团队的下一个目标已经非常清晰了。
Lagrange Labs 通过最近的 ZK MapReduce(ZKMR)创新引入了完全可更新的证明。它使用了一种名为 Recproofs 的新向量承诺,将可更新性的概念扩展到了数据计算。
结论
在本部分中,我们介绍了存储证明如何在无需信任第三方的情况下验证链上历史数据。这使其成为链上组成和跨链互操作性的重要工具。
随着总价值锁定继续从以太坊迁移到第二层生态系统,我们预计通过存储证明利用链上历史数据的更具表现力的应用程序将会兴起。
虽然零知识证明的验证速度越来越快、成本越来越便宜,但不断生成存储证明以跟上链上状态的成本仍然是一个挑战。此类服务的盈利能力将取决于查询应用所产生的查询量。
尽管存在挑战,但由零知识技术驱动的共识证明和存储证明的重要性怎么强调都不为过。我们很期待看到这些技术将如何用于构建一个更加信任最小化的多链未来。