本文探讨了Optimism Collective如何在L2架构中实现社会去中心化,通过OP Stack的模块化设计和开放规范,引入proof多样性和client多样性来增强安全性。文章深入分析了L2架构的各个层面,包括共识层、执行层和证明层,并详细介绍了Fault Proof VM的结构和功能,以及如何通过解耦VM和程序来实现与ZK validity-proofs的兼容,鼓励外部贡献。
为了创建一个最强大和最安全的互操作 L2 链网络,Optimism Collective 正在多个不同的轨道上追求去中心化。
OP Stack 即将推出的 fault proof system 将是技术去中心化的一大步,OP Stack 的开源和模块化设计,为 L2 生态系统前所未有的社会去中心化奠定了基础。
在这篇博文中,我们将探讨社会去中心化的原则,L2 架构如何使 Layer 2 扩展此原则,以包括 proof diversity 以及 client diversity,以及 Optimism Collective 如何构建其 fault proof system 以利用此架构。
Ethereum 协议通过使广泛的贡献者能够通过在解决方案中创建可选性来构建强大的网络,从而受益于社会去中心化。对于节点软件,这意味着 client diversity:client 实现越多,单点故障对验证器网络的影响就越小。
L1 中的核心开发者将这种贡献模式描述为“集市”;嘈杂且看似混乱,但极具生产力和活力。通过对协议开发采取彻底开放的方法,最广泛的贡献者可以改进协议。
Optimism Collective 具有独特的优势,可以实施和迭代 Ethereum 接近社会去中心化的方式。OP Stack 实现了社会去中心化,具有开放规范和 MIT 许可的开源软件,并且 Optimism Collective 通过创建 Superchain 对其进行迭代。
L1 Ethereum 具有开放规范,以及将共识层和执行层分离的模块化客户端架构。OP-Stack 为 L2 实现了相同的架构:
共识由 op-node 和 Magi 支持,这两个客户端遵循 L1 并派生执行输入。
执行由 op-geth、op-erigon 和 op-reth 支持。
// L2 架构在此堆栈中添加了一个新层:证明层。
// 这是将 L2 输出安全地桥接回 L1 的层。
// 就像拥有多个客户端是确保 L1 和 L2 共识和执行安全的最佳实践一样,L2 证明层的多重证明方法可确保最佳安全性。
L2 架构在此堆栈中添加了一个新层:证明层。这是将 L2 输出安全地桥接回 L1 的层。就像拥有多个客户端是确保 L1 和 L2 共识和执行安全的最佳实践一样,L2 证明层的多重证明方法可确保最佳安全性。
类似于 client-diverse 验证器集达成共识,链上证明的 quorum 可以表明 L2 状态声明已以不同方式验证,这大大降低了 bug 导致完全失败的可能性。
有三种常见的证明类型:attestations,fault proofs(也称为 fraud proofs)和 ZK validity proofs。后两者共享一个共同的模式。它们以同步形式表达 L2 状态转换,并在给定 L1 数据和 L2 pre-state 作为输入时证明其执行。
证明系统可以进一步分解为孤立的组件:
“程序”定义了同步 L2 状态转换。
“VM”运行并证明该程序。
“pre-image oracle”提供 L1 数据和 L2 pre-state 作为输入。
/*
当前,许多 ZK 证明仍然将这些组件紧密耦合在一起,从而创建了一个在单个 L1 交易数据上运行的 ZK-EVM。
但是,OP Stack 将它们分离,以隔离复杂性并实现 client diversity,从而使整体更加强大。
*/
当前,许多 ZK 证明仍然将这些组件紧密耦合在一起,从而创建了一个在单个 L1 交易数据上运行的 ZK-EVM。但是,OP Stack 将它们分离,以隔离复杂性并实现 client diversity,从而使整体更加强大。
交互式 fault proofs 将二分游戏添加到 VM 跟踪中,以验证链上证明,而基于 VM 的 ZK 证明则对执行进行算术化处理,并在 validity proof 中将其折叠。(请参阅 Risc0 和 O(1)-Labs 正在设计的、基于 VM 的 ZK 证明,以响应 Optimism 的 ZK RFPs)。
该程序将实际的状态转换定义为“客户端”,并将输入获取(L1 数据和 L2 pre-state)定义为“服务器”。该程序在没有 VM 的情况下独立运行 server/client,与常规区块链节点非常相似,并共享许多代码。例如,Go op-program 客户端是通过从 op-node 导入派生并从 op-geth 导入 EVM 来构建的,并且服务器从 L1 和 L2 ethereum RPC 获取其数据。
Fault Proof VM (FPVM) 是 OP Stack 的 fault proof stack 中的模块之一。
除了提供正确的接口(最值得注意的是,与 pre-image oracle 的接口)之外,VM 不实现任何特定于 Ethereum 或 L2 的内容。在 FPVM 中运行的 Fault Proof Program (FPP)(客户端)是表达 L2 状态转换的部分。
通过这种分离,VM 保持超小:Ethereum 协议的更改(例如 EVM op-code 的添加)不会影响 VM。相反,当协议更改时,可以简单地更新 FPP 以从节点软件导入新的状态转换组件。类似于在同一游戏机上玩新版本的游戏,可以更新 L1 证明系统以证明不同的程序。
VM 的任务是较低级别的指令执行。需要模拟 FPP。VM 的要求很低:该程序是同步的,并且所有输入都通过相同的 pre-image oracle 加载,但是所有这些仍然必须在 L1 EVM 链上得到证明!
为此,一次仅证明一条指令。二分游戏会将证明完整执行跟踪的任务缩小到仅一条指令。
对于每个 FPVM,证明指令的方式可能有所不同,但是通常看起来类似于 Cannon,后者通过以下方式证明指令:
为了执行指令,VM 模拟类似于线程上下文的指令周期:从内存中读取指令,对其进行解释,并且寄存器文件和内存可能会发生一些变化。
为了支持 pre-image oracle 和基本的程序运行时需求(例如内存分配),执行还支持 linux 系统调用的子集。读/写系统调用允许与 pre-image oracle 进行交互:程序写入哈希作为 pre-image 的请求,然后一次以小块形式读取该值。
// Cannon,第一个 FPVM,以这种方式实现 MIPS VM。请参阅文档和 cannon-specs,以获取有关 VM 的更多信息。FPVM 和 FP 程序的接口是标准化的,并在规范中进行了记录。
Cannon,第一个 FPVM,以这种方式实现 MIPS VM。请参阅docs和cannon-specs以获取有关 VM 的更多信息。FPVM 和 FP 程序的接口是标准化的,并在specs中进行了记录。
Fault proofs 不是唯一的状态转换证明类型。ZK validity-proofs 由于具有快速桥接的潜力而成为一种有吸引力的选择(由于 ZK validity-proofs 没有链上挑战游戏,因此没有争议窗口)。为了支持高级 Ethereum 堆栈并托管不同的客户端实现,我们仍然需要分离 VM 和程序。
这是 ZK RFP 项目正在采用的方法,以证明一个最小的 RISC-V(由 Risc0 提供)或 MIPS(由 O(1) Labs 提供)VM,该 VM 可以托管与 fault proofs 中使用的相同的程序。
支持 ZK-VM 确实需要进行一些调整以使 pre-image oracle 以非交互方式加载数据,但是通过概括 VM,ZK 证明对于 OP Stack 更改而言更具前瞻性。
OP Stack 欢迎其他 VM 和程序选项,以及从 attestation 到 ZK 的其他独立证明系统。像 client diversity 一样,proof diversity 是一项集体努力!
当前正在进行的对 OP Stack 证明层的补充包括:
由 protolambda 开发的用 Go 编写的 RISC-V FPVM “Asterisc” 正在开发中。
基于 Magi 和 op-reth 的 rust FP 程序正在由 Base 和 OP Labs 的贡献者构建。
基于 zeth(ZK-reth 分支)的 rust ZK 程序正在由 Risc0 构建。
// 随着 Cannon、op-program、对分游戏、上述内容以及开源社区无限的创造力的发展,将会有许多额外的机会通过测试实现和参与漏洞赏金来为堆栈做出贡献!任何有兴趣的人都应该将 Optimism 的 Immunefi Bug Bounty 页面添加为书签,以获取与 OP Stack 的 Fault Proof System 相关的新的赏金。👀
随着 Cannon、op-program、对分游戏、上述内容以及开源社区无限的创造力的发展,将会有许多额外的机会通过测试实现和参与漏洞赏金来为堆栈做出贡献!任何有兴趣的人都应该将 Optimism 的 Immunefi Bug Bounty 页面添加为书签,以获取与 OP Stack 的 Fault Proof System 相关的新的赏金。👀
- 原文链接: optimism.io/blog/social-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!