区块链互操作性(下):存储证明——为新的跨链用例提供动力

进阶Dec 17, 2023
本文探讨了存储证明及其在区块链交易历史验证中的应用,利用最小信任验证的概念来验证历史交易和用户活动,从而解锁大量跨链用例。本文还指出,这种基于零知识证明的方法可以有效解决一些L2区块链和中心化节点服务提供商遇到的数据存储问题。
区块链互操作性(下):存储证明——为新的跨链用例提供动力

在会操作性的上一篇文章中,我们探讨了共识证明这种新兴的信任最小化方式在促进区块链之间桥接方面的作用。

在本文中,我们将探讨存储证明,它采用信任最小化验证概念,并将其扩展到较旧的历史区块中的交易。以这种方式验证过往的交易和用户活动的能力可解锁大量的跨链用例。

上篇文章中,我们介绍了共识证明——一种跨区块链桥接资金的信任最小化方法。由于桥接用户通常希望看到交易在最新时刻立即发生,因此共识证明非常有用,因为他们在区块链运作时会不断检查区块链的最新状态。

这种信任最小化桥接的概念也可应用于另一个方向,即追溯到过去并使用零知识证明来验证旧区块中的交易和数据。这些“历史存储证明”支持不同范围的跨链用例,在本文中我们将介绍这些用例、它们如何工作以及在这个领域构建的参与者。

检索历史数据

历史区块链数据有多种用途。它能用于证明资产所有权、用户行为和交易历史记录,然后将这些输入到链上智能合约或应用程序中。截至撰写本文时,已有超过1800万个区块写入以太坊。智能合约只能访问最新的256个区块(或最近30分钟内的数据),因此“历史数据”指的是最后256个区块之外的任何数据。

如今,为了访问历史数据,协议通常会查询存档节点提供商,即 Infura、Alchemy 或其他索引器等第三方。这意味着信任并依赖他们及其数据。

Historical data

This data can, however, be retrieved in a more trust-minimized fashion, through the use of Storage Proofs.

历史数据

然而,可通过使用存储证明以更加信任最小化的方式来检索这些数据。

存储证明是零知识证明,允许验证存储在区块链上的历史数据。更具体地说,存储证明可用于证明过去特定区块中存在特定状态。此方法不需要对第三方或预言机的信任;相反,其信任内置于存储证明中

存储证明如何帮助验证某些数据是否存在于较旧的历史区块中呢?这需要验证两件事:

  • 第一步,检查特定区块是否是区块链规范历史的一部分,即该区块是源链历史的有效部分
  • 第二步,检查特定数据是否是该区块的一部分,即某条信息(例如特定交易)是该区块的一部分(这能通过 Merkle包含证明来证明)

在接收并验证证明之后,接收者(例如目标链上的智能合约)相信数据的有效性,并且可执行相应的指令集。这个概念可进一步扩展:可以使用经过验证的数据运行额外的链外计算,然后生成另一个零知识证明,以证明数据和计算。

简而言之,存储证明支持以信任最小化的方式检索历史链上数据。这很重要,因为正如我们在第一篇文章中概述的那样,我们看到 web3 在未来几年已变得为更加多链和多层的空间。多个 第1层协议、Rollup 和应用链的出现意味着用户的链上活动可能会分散到多个链上。这更加强调了对信任最小化互操作性解决方案的需求,该解决方案可维护跨多个域的用户资产、身份和交易历史记录的可组合性。这是存储证明能帮助解决的问题。

存储证明有哪些用例?

存储证明允许智能合约检查任何历史交易或数据作为先决条件。这让跨链应用程序设计变得更加灵活。

首先,存储证明可证明源区块链上的任何历史数据,例如

  1. 账户余额和代币所有权
  2. 用户交易活动或静态状态
  3. 指定时间段内资产交易的历史价格
  4. 跨链流动性池实时资产余额

然后,可将证明发送到目标链,以解锁跨链用例的范围:

  1. 使用户能够在成本较低的第2层协议上对治理提案进行投票
  2. 允许 NFT 持有者获得新的 NFT 铸币或新链上的社区福利
  3. 根据用户的历史记录以及与特定 dApp 的交互来奖励用户(例如通过空投)
  4. 根据用户的总体交易和信用记录提供自定义利率的贷款
  5. 触发休眠帐户的帐户恢复
  6. 计算期货掉期的历史 TWAP
  7. 根据多链流动性池计算更准确的AMM掉期价格

本质上,存储证明允许应用程序跨多个链查询和移植用户的链上活动和历史记录,以输入到另一个链上的智能合约或应用程序中。

存储证明用例

让我们通过一个详细的例子来了解存储证明是如何运作的。

存储证明的工作原理:详细示例

假设“X”,它是以太坊上带有代币的 DeFi 协议。一项治理提案即将提出,他们希望推动在成本较低的目标链上进行链上投票。用户只有在特定时间点(我们称之为“快照”)在以太坊上持有 X 代币时才能投票,例如区块 #17,000,000

目前投票在链上是如何完成的?

目前的方法是,查询存档节点以获取区块 #17,000,000 处合格代币持有者的完整清单。然后,DAO 管理员将该清单存储在目标链上的智能合约中,以确定谁可以投票。这种方法有一些局限性:

  1. 投票者清单可能非常长,并且每个快照都会发生变化,致使在链上存储和更新每个投票提案的成本变得很高;
  2. 对存档节点提供商及其提供的数据存在隐含的信任;
  3. 必须信任管理 DAO 的成员不会篡改选民名单

存储证明如何解决这个问题?

正如我们在第2篇文章中所解释的那样,高昂成本的计算可转移由链下零知识证明者进行。

zk 证明者将生成一个简洁的证明,并将其发送到目标链进行验证。对于以上 DAO 选民资格示例如下:

  1. 证明者生成一个零知识证明,证明区块 #17,000,000 是以太坊历史的一部分(如上第一步骤*)。
  2. 在证明区块的有效性之后,我们可使用 Merkle 包含证明证明用户在该区块最终确定时持有 DAO 代币(如上第二步*)

验证历史数据以启用跨链投票

然后,该证明被发送到目标链上的智能合约进行验证。如果验证成功,那么第2层协议上的智能合约允许用户投票。

这种方法解决了一些问题。它无需:

信任存档节点提供商;

  1. 让协议维护昂贵的链上选民名单;
  2. 供用户将资产转移至目的链

存储证明需要什么设置?

到目前为止,我们已抽象出了存储证明的一些复杂性。然而,使用它们还需要服务提供商进行精心的初始设置,以确保可在不信任提供商的情况下使用它们。在此过程中,有两件事会生成并存储在链上:

  1. 全链的零知识证明(“zk 承诺”):服务提供商将源链上的所有历史区块分组为连续的固定大小的“块”(使用 Merkle 树),并为每个区块生成零知识证明,用用于验证分组。然后递归地组合这些证明,直到获得最终的零知识证明,即对整个链的“zk 承诺”。这证明提供者已正确索引链的整个历史记录。

“zk承诺”对以太坊整个历史的阐释

  • Merkle Mountain Range:提供商还将源链的块哈希(块)分组的 Keccak Merkle 根存储在称为 Merkle Mountain Range (MMR) 的链上数据结构中。使用这种数据结构是因为它易于查询和更新,并且可让提供者有效证明给定的块存在于链的历史中。 MMR 使用 Keccak256 哈希、Poseidon 哈希或这两者创建。Poseidon 哈希对零知识更加友好,支持计算历史数据,之后数据和计算的有效性可通过零知识得到证明。

Merkel Mountain Range (MMR)插图

当新区块添加到源链时,服务提供商会定期(例如每小时或每天)更新“zk 承诺”和 MMR,以跟上链的步伐。这样做是为了使过去的区块始终链接到当前可从 EVM 访问的256个区块之一。这确保历史数据链接到以太坊当前可用的区块之一。

在下图中,我们详细介绍了如何完成设置:

综上所述,以下展示了在我们之前介绍的 DAO 投票示例的上下文中、在设置完成后如何使用存储证明:

  1. 服务提供商创建并存储对整个链(即以太坊历史)的“zk 承诺”以及目标链上的 MMR
  2. 提供商允许应用程序通过API查询链上或链下的历史数据
  3. 目标链上的投票 dApp 向提供商智能合约发送查询,以查明用户是否在以太坊上的区块 #17,000,000 上持有 DAO 代币

提供商会检查两件事:

  1. 查询的区块是以太坊规范历史的一部分(以上第一步);然后,提供者通过 Merkle Mountain Range 生成区块包含的零知识证明
  2. 用户在区块 #17,000,000 中持有 DAO 代币(以上第二步);然后,提供者生成另一个零知识证明,证明用户在区块内持有 DAO 代币
  3. 提供者将上面生成的证明聚合成一个零知识证明
  4. 然后,聚合的 ZK 证明被发送回目标链上的投票 dApp 智能合约,以验证ZK 证明,并在验证成功后允许用户投票。

该领域的团队建设

一些参与者正在构建使智能合约能够以信任最小化的方式访问历史链上数据。

目前,Axiom已在以太坊上运行,致力于在以太坊上提供智能合约,并通过基于 zk 的存储证明访问历史以太坊数据。团队还在增强基于历史数据的链下计算能力,并使用零知识来证明这些数据和计算的正确性。

Relic Protocol 提供的技术方法与 Axiom 类似,并且该协议在以太坊和 zkSync Era 上运行。 Relic 使用 Merkle 包含证明来证明数据包含(与 Axiom 在零知识中证明 Merkle 包含的方法相反)。

Herodotus 正在努力为第2层协议提供以太坊的历史数据。测试实现现已在 Starknet 和 zkSync Era 上提供。有了 OP 基金会的资助,我们认为,我们知晓了Herodotus团队下一步的发展方向。

Lagrange Labs实验室通过其最近的 ZK MapReduce (ZKMR) 创新引入了完全可更新的证明。它使用一种称为 Recproofs 的新向量承诺,将可更新性的概念扩展到数据计算中。

从事存储证明工作的团队

结语

在本文中,我们介绍了存储证明如何支持验证历史链上数据,而无需信任第三方。这使它们成为链上组合和跨链互操作性的宝贵工具。

随着总锁定价值(TVL)继续从以太坊迁移到第2层生态系统,我们预计更具表现力的应用程序将会出现,这些应用程序通过存储证明利用历史链上数据。

虽然零知识技术正变得更快、更便宜,但不断生成存储证明以跟上链状态多带来的成本仍是一个挑战。此类服务的盈利能力将取决于查询应用程序生成的查询量。

尽管有挑战,但由零知识技术支持的共识证明和存储证明所具有的重要性怎么强调也不为过。我们期待见证这些技术将如何用于构建信任最小化的多链未来。

声明:

  1. 本文转载自 [mirror],版权归原作者【Jacob, Hitesh, Ji Hao】所有。如对转载有异议,请联系Gate Learn团队(gatelearn@gate.io)。团队将尽快按照相关程序进行处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 本文章的其他语言版本由Gate Learn团队翻译。在未提及 Gate.io 的情况下不得复制、抄袭或发布所译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册