
今天,我们非常高兴地正式向世界介绍 Cannon。 Cannon 是 Optimism 的下一代故障证明。 它最初由 geohot 实现,成为第一个可以运行 EVM 等效性的L2公共故障证明方案。 哦,它还可以实现理论上的最低 calldata gas 成本。
从构建Cannon第一天开始我们就规划了 Optimism: Bedrock——我们的下一代核心版本。Cannon将成为未来几年Optimism的基础。
今天,我们为实现 Cannon 迈出了重要一步,推出了高达 25 万美元的漏洞赏金! 详情可以在底部找到。
但是Cannon到底是什么?
Cannon……
……是EVM等效性
Cannon (github) 是世界上第一个EVM等效性的故障证明。Cannon 允许我们在 L2 上运行未更改的 EVM,而不用做出任何牺牲。
…… 重新启用geth EVM
与现有的rollups相比,Cannon 采用了一种全新的故障证明方法,实现了真正的EVM 等效性:它不是重新构建 EVM,而是利用现有的EVM基础设施构建(geth!)
特别是,minigeth--go-ethereum的最小修改子集(没有JSON-RPC,没有工作量证明)--被编译为MIPS,一种精简计算机指令集(RISC)。RISC被设计为尽可能简单,如果您对Optimism有所了解,你就会知道我们喜欢简单——当然很重要的一点是MIPS VM在链上代码不到400行!
…… 使用无状态魔法
与我们之前在L1上的整个交易中重新运行EVM的故障证明设计不同,Cannon只需要在链上执行单个minigeth MIPS指令。这与Truebit、Arbitrum和Cartesi等现有项目类似,但它引入了一个关键的新功能。
Minigeth将geth的状态数据库替换为一个新的原语[1],称为原像预言机。可以使用32字节散列查询原像预言机,并将该散列的原像返回到机器内存中。这听起来可能违反常识,但它确实有效,它的功能非常强大!
这种方法允许故障证明程序访问处于L1或L2状态的任何内容,其链上开销与该状态的大小无关。其他L2,例如Arbitrum的AVM,需要从头开始实现状态管理来实现这一点。但是geth使用的数据库已经将哈希映射到它们的原像,原像预言机在不牺牲EVM等效性和对代码的最小更改的情况下完成了这一点。
…… 最大限度地降低交易成本
今天所有的rollups都要将交易数据提交给智能合约,并且将调用数据的哈希存储在状态中。这种开销会增加成本,然后将其转嫁给用户。
这是必要的[2],因为在故障证明的挑战期内,需要访问争议区块的交易数据。然而,原像预言机为我们提供了一种访问交易数据的新方法:L1区块头本身。
因为交易不需要在链上处理,它们可以作为calldata发布到L1帐号,根本不需要额外的代码。
这会让L2交易产生的L1 gas降到最低。它还与其他节省技术相结合,例如调用数据压缩和blob事务,共同为用户节省大量gas fee。
……即将开始
(一旦你们都攻破它!)
在我们将Cannon部署到生产环境之前,还有很长的路要走。它将在Optimism的安全中发挥关键作用,值得大量审查和强化。
今天,我们正朝着保护Cannon迈出了下一步——我们将推出漏洞赏金!
快来破解Cannon!
我们现在在ImmuneFi上开放了漏洞赏金。条件很简单:如果你能破解Cannon,你将获得5万美元。更不用说因为你作为一名攻击成功的黑客而获得巨大的影响力!
如果要开始破解,请直接访问Cannon存储库或查看Immunefi的详细信息。我们还建议查看Cannon高级概述以及详细概述。
致谢!
我们想对geohot大声说谢谢,因为它开创了Cannon的先河,并在此过程中与我们进行了很多的交流。我们还要感谢Immunefi为我们提供漏洞赏金!
与往常一样,如果您有兴趣加入一群才华横溢的乐观主义者,他们致力于为以太坊构建可扩展且可持续的未来,我们很乐意听取您的意见!查看我们的招聘简章。

备注
[1] 当我们第一次开始共享Cannon时,我们发现Cartesi之前提出了“去哈希设备”作为未来工作的一个领域。然而,这被设计为一种读取外部区块链数据的工具——我们将这种方法应用于L2状态本身有独特的优势,还有它带来的EVM等效性的优势。
[2] 如备注[1]所述,Cartesi的“dehasher”被提议作为未来的工作,以提供一种读取其他区块链的办法。Arbitrum白皮书还提出将L1区块映射到AVM元组作为未来的工作,lightclients也提出了另一种实现方式。我们的贡献时通过保持EVM等效性的抽象统一实现最优的L1数据成本和L2状态访问成本。
原文链接:
https://medium.com/ethereum-optimism/cannon-cannon-cannon-introducing-cannon-4ce0d9245a03
