本文深入探讨了Optimistic Rollup中的欺诈证明机制,对比了Optimism和Arbitrum两种主流方案。
Rollups 通过将执行转移到不同的域来提供区块链扩展。交易数据被放在主链上,但交易不在那里执行。相反,它们在 rollup 网络上执行,并定期将当前 rollup 状态的承诺发布回主链。这意味着主网节点不再需要执行交易,从而减少了它们的负载。
但是,如何才能让主链相信已提交的 rollup 状态是正确的? Rollups 分为两种不同的类别,它们以不同的方式解决了这个问题:
Optimistic rollups 需要验证者检查状态转换,如果发现欺诈行为,则提交欺诈证明
在这篇文章中,我们将只关注 optimistic rollups,以及保证它们安全的欺诈证明。我们将看看它们目前是如何被两个流行的 optimistic rollups — Arbitrum 和 Optimism — 使用的,以及当前的欺诈证明研究方向是什么。
有关 Rollups 如何工作的更多详细信息,我可以推荐这篇 博客文章。
当前的欺诈证明有两种形式:
非交互式 欺诈证明允许一方在没有其他任何一方参与的情况下证明断言的错误。他们通过执行两个断言的承诺之间的所有状态转换来表明结果承诺与断言的承诺不同。非交互式欺诈证明的优点是易于推理和设计。但是,除非使用 zk-proof,否则两个断言之间的转换必须足够小,以便可以在链上执行,这与以太坊当前的能力相结合,对可以通过这种欺诈证明有效验证的转换施加了严格的限制。
交互式 欺诈证明需要两个或多个参与方协同工作以表明断言是有效还是无效。在实践中,目前的设计涉及一个辩护者(提出断言的当事方)和一个挑战者。挑战者要求辩护者将其断言二等分为子断言,挑战者随后可以选择他们不同意的子断言。他们继续要求对子断言进行二等分,依此类推,直到他们达到代表足够小的操作以在链上执行的断言。交互式欺诈证明引入了各方之间合作的复杂性。其中涉及的激励措施使它们在设计上更难以保证安全。但是,关于执行的唯一限制是单个操作必须可以在链上执行,这意味着 rollup 中的交易和区块不受任何 L1 限制的约束。
那么,当前的一些 optimistic rollups 采用了哪些欺诈证明?
非交互式欺诈证明是最具吸引力的起点,事实上,这是 Optimism 在其第一个版本中采取的方向。但是,对于 V2,他们正在转向使用交互式证明。要了解原因,让我们仔细看看非交互式欺诈证明的局限性。
非交互式欺诈证明需要执行两个断言之间的完整状态转换。Optimism 选择交易级别作为状态转换的粒度,希望使用户能够在他们的 rollup 上执行正常的以太坊交易。
但是,以太坊本身并不原生支持在主网以太坊上重新执行 rollup 上发生的以太坊交易。这是因为交易可以访问链的底层状态和帐户,这在 rollup 和主网之间有所不同。
为了使 Optimism 能够在主网上重新执行其交易,他们需要用合成的操作码替换访问状态和帐户的操作码,这些操作码会调用预先填充了相关状态的特定合约。总共 18 个操作码 以这种方式被替换,另外 6 个被完全删除。使用函数调用替换了这些操作码的字节码被称为在 Optimistic Virtual Machine (OVM) 中运行。Optimism fork了 Solidity 编译器 以允许开发人员为 OVM 编译他们的合约。
Optimism 中合约的生命周期
从 EVM 翻译到 OVM 字节码的合约有两个主要限制:
这两个限制都会影响合约开发人员和用户,需要开发人员付出大量努力来重写旨在在以太坊主网上运行的合约。鉴于合约开发是一个昂贵、耗时且安全密集的过程,这些限制对 Optimism V1 的采用构成了重大障碍,也是他们转向交互式欺诈证明的主要原因。
目前在生产中使用交互式欺诈证明的 rollup 是 Arbitrum。他们的协议允许辩护者和挑战者相互二分断言,直到他们找到一个他们不同意的步骤,然后在链上执行它。Arbitrum 选择的单个步骤的大小是单个指令的大小。执行虚拟机的一条指令需要提供对虚拟机内部状态的访问。这包括堆栈和内存,以及状态和全局变量。必须编写一个可以在以太坊上运行并执行单个指令的虚拟机解释器。
由于他们需要编写一个虚拟机解释器,Arbitrum 选择编写一个新的解释器,该解释器针对证明单个步骤的执行 进行了优化,以适应他们的用例,而不是为 EVM 编写解释器。他们进行的一个优化是更改 VM 内存的结构以使其不可变,因此始终可以在恒定时间内访问它,而不是像当前的 EVM 结构所要求的那样以对数方式访问它。他们将这种 rollup 优化的虚拟机称为 AVM(Arbitrum 虚拟机)。
Arbitrum 中合约的生命周期
AVM 合约和交易没有与 OVM 合约和交易相同的限制,因为交易永远不会完全重新执行,如果 Arbitrum 节点选择允许,它们甚至可以超过以太坊主网的限制。编写一个新的 VM 还有其他优势。由于任何用 AVM 代码编写的内容都可以在以太坊上得到证明,因此 Arbitrum 开发人员可以包含新的操作码,只要它们可以由 EVM 操作码支持即可。这使他们可以轻松地将其他节点行为(例如从其 Inbox 合约中读取交易)纳入可以证明正确的操作集中。Arbitrum 可以对他们希望证明的任何节点行为使用相同类型的欺诈证明。
编写新 VM 的一个主要缺点是它可能并不总是与以太坊兼容,并且在可能兼容的情况下,可能需要付出额外的努力才能实现它。
上述两种方法都与 EVM 背道而驰,这对 Arbitrum、Optimism 及其用户提出了工程挑战。为 EVM 编写合约的开发人员会期望他们的合约在 AVM 和 OVM 上运行,他们会期望现有工具能够工作,并且 JSON-RPC 与以太坊一致。为了实现这一点,rollup 可能需要填充节点 JSON-RPC 端点以保持行为一致,这在某些情况下是可能的,但在其他情况下则不然。
Arbitrum 实现奇偶校验的一个例子是接受 EVM 交易。Arbitrum 编写了一个 EVM 到 AVM 的编译器,它本身在 AVM 上运行。这意味着以 EVM 字节码签名和提交的交易可以作为其执行的一部分以可证明的方式进行编译。
到目前为止,两种 rollup 都未能实现完全奇偶校验的一个例子是 gas 语义:Optimism 替换了一些可能需要更多 gas 的操作码,而 Arbitrum 调整了 gas 成本以反映 AVM 上的成本。
Optimism 对欺诈证明的选择对其用户造成了重大限制,并构成了采用的障碍。他们现在转向交互式欺诈证明以消除这些限制。
但是,与 Arbitrum 的当前版本不同,他们不想设计一个新的虚拟机,而是试图找到一种可以在链上有效证明的 EVM 表示形式。这样做是为了保持 100% 兼容 EVM 和以太坊。然后,他们可能只需对现有的以太坊客户端代码库进行最小的更改,并使它们作为 rollup 客户端运行,从而继承已投入其中的安全性和辛勤工作。这也应该意味着他们无需任何额外努力即可与所有现有的 JSON-RPC 端点以及依赖于它们的工具实现兼容性。
Arbitrum 似乎也意识到了这种方法的价值,并且在他们的 最新博客文章 中,他们概述了一种将他们推向该方向的方法。
有多种方法可以解决这个问题:
Macula 中合约的生命周期
Cannon 中合约的生命周期
使用单个步骤 zk 的合约的生命周期
这些方法中的每一种都将提供对用户没有采用性限制的欺诈证明,并允许 rollup 节点运行以太坊的现有实现,从而继承其安全性、可维护性和与以太坊主网的兼容性。
但是它们都需要更复杂的交互式欺诈证明样式。那么是否可以使用非交互式欺诈证明来实现上述属性?
实际上,是的!目前有两种已知的方法可以做到这一点:
完整状态转换的零知识证明。 在短(区块时间)时间内生成完整交易的 zk 证明之前,仍有许多挑战 需要克服。但是,如果零知识证明被用作欺诈证明,则不需要有效地生成证明。目前,欺诈证明提供了一个较长的挑战期(约 1 周),以便挑战者有时间验证当前链,生成欺诈证明并将其提交给以太坊。即使生成欺诈证明需要很长时间(例如 1-2 天),也可以延长这个挑战期,而对整个协议的影响很小。与交互式欺诈证明一样,这种欺诈证明可以超过 L1 的限制。Sumo、Consensys 目前正在研究这种方法。
具有完整状态转换 zk 的合约的生命周期
裸机欺诈证明。 Optimism 最初的目标是在 EVM 上执行 EVM 代码,但他们无法做到,因为主网 EVM 无法访问 rollup 状态。但是,是否可以设计一种系统,使这成为可能?
这是 Oasis Labs 采用的方法。他们的区块链将执行分为快速路径和慢速路径。共识组的子委员会针对状态根执行交易。然后将生成的状态根存储在由完整共识组验证的基础链上。如果子委员会的任何成员不同意生成的状态根,他们可以请求完整共识组重新执行任何有争议的状态转换。在子委员会中需要有一个诚实的验证者才能继承基础链的安全性 — 与 optimistic rollups 相同的安全性。
这种方法与以太坊的 无状态客户端 概念非常契合。在这种范例中,共识节点仅存储链的状态根。然后,交易附带它们访问的状态,以及证明该状态是状态根一部分的见证。无状态客户端接受附带状态的交易,并针对其存储的状态根执行它们以生成新的状态根。如果他们不是针对其存储的状态根执行收到的交易,而是针对提供的状态根执行它们,那么他们将能够为其他以太坊兼容链重新执行交易。可以将此功能添加为新交易类型,其行为如下:
通过无状态客户端上的这种新交易类型,以太坊将能够完全重新执行其他以太坊兼容链的状态转换。它可以为以太坊兼容的 optimistic rollups 提供一个简单的非交互式欺诈证明。这种欺诈证明直接在 EVM 上运行,而不是在 EVM 中托管的虚拟化环境中运行 — 裸机欺诈证明。
使用裸机欺诈证明的合约的生命周期
Optimistic rollups 需要欺诈证明才能保持安全。我们研究了两个流行的 rollups,并了解了他们对欺诈证明的选择如何导致对其用户和合约开发人员的限制 (Optimism),或者没有保持与以太坊的完全兼容 (Arbitrum)。这两个 rollups 都在朝着与以太坊的完全兼容发展,没有任何新的限制,并且正在使用交互式欺诈证明来实现这一点。然而,交互式欺诈证明的构造更复杂,而且目前的研究途径是寻找有效的非交互式欺诈证明,这些证明不会施加额外的限制,并且仍然可以与以太坊保持兼容。
感谢 Patrick McCorry、Dawn Song、Bennet Yee 和 Nicholas Liochon 的反馈和意见。
- 原文链接: medium.com/@cpbuckland88...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!