Optimism 中文力量

2025年06月23日更新 11 人订阅
专栏简介 Superscan:超级链生态系统的终极区块浏览器 Retro Funding 5: OP Stack Optimism 第 6 季 超超600 ETH奖励,Onchain Summer 正在进行 Optimism 中文周刊 #24 什么是欺诈证明 OP Labs | 无需许可的故障证明上线,OP Stack 进入第 1 阶段 OP Labs |故障证明系统已适用于 OP Stack OP Labs|基线权力下放 统一的超级链:互操作性 OP Labs|故障证明深入研究的第二部分:Cannon 从上层的视角看看 OP Chain 的架构和工作流程 OP Labs|游戏开始了:为 OP Stack 的故障证明系统设计模块化争议游戏 索尼进军区块链领域 — Soneium 加入超级链 解密超级链 —— 如何与 Optimism 集体共享收益 Optimism 治理体系概述 当 OP Stack 进化成 OP “超级链”概念 OP Labs|从 EIP 到以太坊主网:4844 的集体胜利 OP Labs | 开源且功能完备的欺诈证明为 OP Sepolia 测试网带来无需许可的验证 Retro Funding: 从大范围到小范围的轮次转变 Retro Funding 6 : 治理 从以太坊或 OP 主网铸造 NFT 以太坊 L2 治理机制的比较分析 OP Labs | 对 OP Stack 故障证明系统中的诚实行为和参与度进行激励 活跃投票者的链上行为指标是什么? Optimism 徽章持有者链上活动分析 欢迎 Unichain 加入超级链 欢迎 Ink 加入超级链 OP 超级链的崛起 我们共同的 Optimism Optimism Retro Funding 投票机制对恶意行为的抵抗能力 构建以太坊的未来:超级链和原生互操作性 Retro Funding 2025 Super Accounts: 加速超级链上的有意义的贡献 Optimism 与 Uniswap 共同提出的 ERC-7802 是什么? 迈向跨链的未来:打破链间壁垒 以太坊互操作性论坛 :团结一致迎接互操作性的未来 Optimism 第 7 季指南 Optimism:2024 年回顾 OP 残酷共学第一周学习回顾 Optimism 第 7 季资助现已开放 跨超级链的协作分析 Optimism Retro Funding:Dev-tooling Optimism Retro Funding:Onchain Builders 任务详情 新产品介绍:Superchain.Eco 欢迎 Celo 加入 Superchain 生态系统 Superchain 互操作性资产正式落地:USDT0 率先实现全链部署 Superseed 主网现已上线 Superchain.Eco 上的机会信息流介绍 SuperStacks:Superchain 上的全新奖励方式 Superchain 残酷共学成果展:从Rollup原理到 OP 测试链搭建实战 Celo Public Goods Superseed 的 SUPR 现已上线 PeerDAS 与 2025 年的 48 Blob 目标 Superchain|如何赚取 SuperStacks XP 超级账户 1.2:活动、金库及贡献成就徽章 Lisk Surge 在 2025 年,Superchain 的有效衡量指标有哪些? 在 2025 年,Superchain 的有效衡量指标有哪些? 在 2025 年,Superchain 的有效衡量指标有哪些? 在 2025 年,Superchain 的有效衡量指标有哪些? 在 2025 年,Superchain 的有效衡量指标有哪些? 在2025年,Superchain的有效衡量指标有哪些? Optimism 第八季治理:新阶段 Optimism 追加200万赏金至协议升级,助力Superchain互操作 使用 Relayer.sol 进行端到端的多链测试

OP Labs|故障证明深入研究的第二部分:Cannon

OPLabs与Coinbase的故障证明(FaultProof)深入研究系列的第二部分,是对Cannon的概述。Cannon作为争议游戏(DisputeGame)的一部分,是OPStack的第一个故障证明虚拟机(FPVM)。故障证明深入研究系列是Coinbase的区块

OP Labs 与 Coinbase 的故障证明(Fault Proof)深入研究系列的第二部分,是对 Cannon 的概述。Cannon 作为争议游戏(Dispute Game)的一部分,是 OP Stack 的第一个故障证明虚拟机(FPVM)。 Fault Proof Deep-Dive Part 2: Cannon 故障证明深入研究系列是 Coinbase 的区块链安全团队( BlockSec )与 OP Labs 之间的合作项目,旨在提供有关故障证明所有主要组件的详细信息。我们希望鼓励其他人,通过这些信息去学习更多关于故障证明的架构和技术细节。一起迈向由 Op Stack 构建的 Layer 2 区块链网络的去中心化未来。

在这篇博文中,我们将介绍 Cannon 的链下故障证明虚拟机 (FPVM)部署情况。需要注意的是, Cannon 是由链上与链下的故障证明虚拟机(FPVM)共同组成的。但是,文中我们仅通过链下部署(的虚拟机)来描述二者。

什么是 Cannon?

上篇博文[2]中,我们已经介绍了 MIPS.sol,即链上的故障证明虚拟机( FPVM )。Cannon 是链下版本的 MIPS.sol,由 Golang(一种静态型,编译型高级编程语言)编写。然而,与 MIPS.sol 不同的是,链下部署的 Cannon 在争议游戏中负责了更多步骤。此外,Cannon 是 OP Stack 里唯一用于争议游戏(争议游戏属于故障证明的组件)的故障证明虚拟机(FPVM)。

故障证明的控制流程

让我们再次回顾一下故障证明的流程,以了解 Canoon 的所在位置。

上图截取自 Clabby 讲解的视频《故障证明演示》[3],我们可以看到 Cannon 与 OP-Challenger 和 OP-Program 之间的交互情况。OP-Challenger 是负责发起挑战并与争议游戏进行交互的组件,OP-Program 则负责将 Layer 1(即 Layer 1 网络,是底层区块链的别称。币安智能链、以太坊、比特币和 Solana 都属于 Layer-1 协议,也称之为 Layer 1)的内容进行计算然后在 Layer 2(即 Layer 2 网络,指基于 Layer 1 的链下网络、系统或技术,目的是为了扩展 Layer 1)输出。然而,上图对 OP-Challenger,Cannon 和 OP-Program 之间的交互进行了简化。

在一个活跃的争议游戏(Dispute Game)过程中,二分游戏(the bisection game)将从 Layer 2 输出根的状态转换至状态见证哈希(state witness hashes)。Cannon 的职责是生成对故障证明虚拟机(FPVM)中 MIPS 指令计算结果负责的状态见证哈希。只有当争议游戏进行到该点时,Cannon 才会运行。二分游戏的这一部分被称为执行轨迹。到目前为止,OP-Challenger 一直在向 OP-Node (OP Stack 中最重要的模块)请求状态输出根,并尚未使用 OP-Program 或 Cannon。然而,一旦到了运行 Cannon 进行争议游戏的时候,已经编译好的 OP-Program 将被加载到 Cannon 的虚拟机(virtual machine,VM)中,然后开始执行 MIPS 指令。

在二分游戏的执行追踪阶段,Cannon 将要运行多个 MIPS 指令,并且在最开始就要向 OP-Challenger 发送状态见证哈希。最终,一个统一的 MIPS 指令将成为当前争议中各方分歧的根源。目前,Cannon 将生成一个见证证明,其中包含执行 MIPS.sol 合约中所有 MIPS 指令所需的信息。接下来,将使用最终的 MIPS 指令状态来解决故障争议游戏。

Cannon 组件概述

Cannon 具备比链上故障证明虚拟机(MIPS.sol)更多的功能,这都归功于它由多个 Golang 编写的文件组成。然而这是必要的,因为 Cannon 在争议游戏中要比 MIPS.sol 肩负更多职能。这些 Golang 文件按照它们实现的 Cannon 核心组件进行分组,其中包括:可执行和可链接文件格式(the Executable and Linkable Format ,ELF)加载器、内存和状态管理、MIPS EVM(后面会做详尽说明)以及见证证明(witness proof )生成。

可执行和可链接格式(ELF)加载器

OP-Program 是被编译成 ELF 文件的代码,该文件包含可在 Cannon 内运行的 MIPS 指令。为了将 ELF 文件中的内容加载到 Cannon 中运行,需要将其加载到 MIPS EVM 中。这个过程包含遍历(指在编程中通过循环逐个访问集合中的元素或执行一系列操作)ELF 文件头以确定需要加载到 32 位内存空间的所有程序,为程序计数器( PC )和下一条要执行指令的地址( NextPC )的确定初始值,在内存中实例化栈、堆和数据段指针,以及移除任何不兼容的函数。修补不兼容的函数时,只需将函数内的前几条指令覆盖为返回到原始指针的指令,然后加上若干个空操作( NOP,no-operation )即可。对加载到 MIPS EVM 中的二进制文件进行打补丁很重要,因为 FPVM 无法执行多系统调用,也不支持并发等功能。

内存和状态管理

Cannon 储存并维持了 MIPS EVM 所需的整个 32 位内存地址空间。存储在链下内存的数据大小不受限制,但对于 MIPS.sol 来说,存储整个 32 位内存地址空间是不可行的。因此,Cannon 将内存存储在一个二进制 Merkle Tree数 据结构中。对于 MIPS EVM 来说,该数据结构是通过使用  GetMemory()、ReadMemoryRange() 和 SetMemory() 函数抽象出来的。当需要生成见证证明时, Cannon 将为 MIPS.sol 生成多达两个内存默克尔(Merkle)证明,以便在执行 MIPS 指令时使用。

MIPS EVM

在 Cannon 内部,存在一个名为 MIPS EVM 的组件,它实现了 32 位、大端模式的 MIPS III 指令集架构( Instruction Set Architecture,ISA )。与 MIPS.sol 不同,MIPS EVM 能够执行多种 MIPS 指令,并负责跟踪内存访问,这将用于编码第二份内存证明。然而,无论是链下还是在链上虚拟机实现都必须在给定指令、内存和寄存器状态下产生完全相同的结果。这对于确保预期的 MIPS EVM 后状态与由 MIPS.sol 实际生成的后状态相同至关重要,后者将用于解决争议游戏。

见证证明生成

一旦确定了 MIPS 指令在故障争议游戏中引起争议,Cannon 将生成见证证明,以便在链上的 MIPS.sol 上执行相同的指令。见证证明中包含编码信息,包括虚拟机执行状态、运行该指令地址的内存证明,以及用于加载、存储或某些系统调用指令的额外内存证明。此外,如果 MIPS 指令需要预映射,则 Cannon 还会与 OP-Challenger 进行通信,并传递预映射密钥和偏移量,以便将其发布到链上并存储在 PreimageOracle.sol 上。

Cannon 的文档

这是我们对 Cannon 的深入讨论。除了这篇博文外,Coinbase 还创建了详细的文档,提供了有关 Cannon 各个组件的更多细节。请访问 故障证明虚拟机 - Cannon | Optimism Docs[4]  查看相关内容,如果您对 Optimism 的 Cannon 官方技术规范感兴趣,请访问 Cannon技术规范[5]查看。

找到我们

OP 中文力量是由 GCC、LXDAO、PlanckerDAO,登链社区和 TraDAO 共同发起的 Optimism 中文开发者社区,是一个传播 Optimism 技术和公共物品理念的组织,旨在成为链接华语社区和 Optimism 生态的桥梁,促进 Optimism 生态和华语社区内的双向交流,促进公共物品的繁荣。

OP 中文力量是 GCC 中文力量计划旗下专注 OP 生态的中文社区,由 GCC 捐助孵化成立。

Twitter :https://x.com/Optimismzh

Notion:<https://www.notion.so/lxdao/Optimism-99a78f831195451a9f16724342c0c4ed>

Telegram:<https://t.me/optimism_cn>

Mirror: <https://mirror.xyz/optimismcn.eth>

支持社区

1722817708_AmCcJWHa.jpg

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论