# CANNON介绍

By [0xJack](https://paragraph.com/@0xjack) · 2022-05-27

---

![](https://storage.googleapis.com/papyrus_images/e7d44d2187f6140d4da358f4a1ce96e03dce2713b2c7a8fd6783936beda6392d.png)

今天，我们非常高兴地正式向世界介绍 [Cannon](https://github.com/ethereum-optimism/cannon/)。 Cannon 是 Optimism 的下一代故障证明。 它最初由 [geohot](https://github.com/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字节散列查询原像预言机，并将该散列的原像返回到机器内存中。这听起来可能违反常识，但它确实有效，它的功能非常强大！

[https://twitter.com/ben\_chain/status/1488275962387042304?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1488275964429672448%7Ctwgr%5E%7Ctwcon%5Es2\_&ref\_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Da19fcc184b9711e1b4764040d3dc5c07schema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fben\_chain%2Fstatus%2F1488275964429672448image%3Dhttps3A%2F%2Fi.embed.ly%2F1%2Fimage3Furl3Dhttps253A252F252Fabs.twimg.com252Ferrors252Flogo46x38.png26key3Da19fcc184b9711e1b4764040d3dc5c07](https://twitter.com/ben_chain/status/1488275962387042304?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1488275964429672448%7Ctwgr%5E%7Ctwcon%5Es2_&ref_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Da19fcc184b9711e1b4764040d3dc5c07schema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fben_chain%2Fstatus%2F1488275964429672448image%3Dhttps3A%2F%2Fi.embed.ly%2F1%2Fimage3Furl3Dhttps253A252F252Fabs.twimg.com252Ferrors252Flogo46x38.png26key3Da19fcc184b9711e1b4764040d3dc5c07)

这种方法允许故障证明程序访问处于L1或L2状态的任何内容，其链上开销与该状态的大小无关。其他L2，例如Arbitrum的AVM，需要从头开始实现状态管理来实现这一点。但是geth使用的数据库已经将哈希映射到它们的原像，原像预言机在不牺牲EVM等效性和对代码的最小更改的情况下完成了这一点。

**…… 最大限度地降低交易成本**

今天所有的rollups都要将交易数据提交给智能合约，并且将调用数据的哈希存储在状态中。这种开销会增加成本，然后将其转嫁给用户。

这是必要的\[2\]，因为在故障证明的挑战期内，需要访问争议区块的交易数据。然而，原像预言机为我们提供了一种访问交易数据的新方法：L1区块头本身。

[https://twitter.com/ben\_chain/status/1488275966744928261?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1488275966744928261%7Ctwgr%5E%7Ctwcon%5Es1\_&ref\_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Da19fcc184b9711e1b4764040d3dc5c07schema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fben\_chain%2Fstatus%2F1488275966744928261image%3Dhttps3A%2F%2Fi.embed.ly%2F1%2Fimage3Furl3Dhttps253A252F252Fabs.twimg.com252Ferrors252Flogo46x38.png26key3Da19fcc184b9711e1b4764040d3dc5c07](https://twitter.com/ben_chain/status/1488275966744928261?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1488275966744928261%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Da19fcc184b9711e1b4764040d3dc5c07schema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fben_chain%2Fstatus%2F1488275966744928261image%3Dhttps3A%2F%2Fi.embed.ly%2F1%2Fimage3Furl3Dhttps253A252F252Fabs.twimg.com252Ferrors252Flogo46x38.png26key3Da19fcc184b9711e1b4764040d3dc5c07)

因为交易不需要在链上处理，它们可以作为calldata发布到L1帐号，根本不需要额外的代码。

这会让L2交易产生的L1 gas降到最低。它还与其他节省技术相结合，例如调用数据压缩和blob事务，共同为用户节省大量gas fee。

**……即将开始**

（一旦你们都攻破它！）

在我们将Cannon部署到生产环境之前，还有很长的路要走。它将在Optimism的安全中发挥关键作用，值得大量审查和强化。

今天，我们正朝着保护Cannon迈出了下一步——我们将推出漏洞赏金！

**快来破解Cannon！**

我们现在在ImmuneFi上开放了漏洞赏金。条件很简单：如果你能破解Cannon，你将获得5万美元。更不用说因为你作为一名攻击成功的黑客而获得巨大的影响力！

如果要开始破解，请直接访问[Cannon存储库](https://github.com/ethereum-optimism/cannon)或查看[Immunefi的详细信息](https://immunefi.com/bounty/optimismcannon/)。我们还建议查看[Cannon高级概述](https://github.com/ethereum-optimism/optimistic-specs/wiki/Cannon-High-Level-Overview)以及[详细概述](https://github.com/ethereum-optimism/optimistic-specs/wiki/Cannon-Overview)。

**致谢！**

我们想对geohot大声说谢谢，因为它开创了Cannon的先河，并在此过程中与我们进行了很多的交流。我们还要感谢Immunefi为我们提供漏洞赏金！

与往常一样，如果您有兴趣加入一群才华横溢的乐观主义者，他们致力于为以太坊构建可扩展且可持续的未来，我们很乐意听取您的意见！查看我们的[招聘简章](https://boards.greenhouse.io/optimism)。

![](https://storage.googleapis.com/papyrus_images/569bef4219516eeab8722afc909005d23156e93de5b83c52489e22617c7d20e0.png)

**备注**

\[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](https://medium.com/ethereum-optimism/cannon-cannon-cannon-introducing-cannon-4ce0d9245a03)

---

*Originally published on [0xJack](https://paragraph.com/@0xjack/cannon)*
