---
title: Optimism Cannon 把仲裁证明推进成更通用的机制
date: '2022-04-20 15:42:31'
draft: false
summary: Cannon 的意义不只在服务 OP Stack，而在于把可证明执行模型推广到更一般的虚拟机场景。
slug: optimism-cannon-and-generalized-fraud-proofs
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/Lpk6RqNyg
tags:
- layer2
- optimism
- fraud-proof
topics:
- blockchain
type: post
---

早上的技术分享会上，团队伙伴分享了 Optimism 的 Cannon 的实现。

如果说 Arbitrum 的 AVM 给 Layer2 的仲裁机制带来了新思路，那么 Cannon 则将这种新思路推广到了更通用的场景。

分层扩容的思路里，Layer1 类似法院，商业活动主要发生在 Layer2。大多数情况下，法院并不需要知道商业活动的细节，除非产生了争议。而产生争议的协议需要在法院重新执行一遍进行裁判。但如果这个协议非常复杂，依赖的数据非常多，控辩双方各拉了几车厢的资料到了法院，法官一看傻眼了，没法处理。

而 AVM 的思路也很简单。这时候法官可以要求，这些文件你们双方先互相对一下，没有争议的部分就不用拿过来了，把第一个有争议的条款和证据拿过来就裁判这一个条款就行，通过链下交互来缩小仲裁范围。这在法院场景可能不合适，但计算机场景是合适的，某一步计算出错，后面的计算就没有意义。

技术上怎么做呢？我们知道整个链的世界状态我们可以通过一个状态树来表达，σt+1 时的状态等于虚拟机在 σt 时的世界状态的基础上执行交易 T 的结果，可以用公式 σt+1 ≡ Υ(σt, T) 表达。

那么智能合约执行过程中的内存世界状态，也可以用类似的公式来表达。σt+1 时的内存状态等于虚拟机在 σt 时的内存状态的基础上执行 T 指令的结果。这样链上的仲裁合约只需要校验某条产生争议的指令的执行结果即可。

AVM 是基于自定义的一套 VM 来实现这套机制。而 Cannon 则将 EVM 直接编译到 MIPS 指令集上，在智能合约中运行一个 MIPS 指令的虚拟机来校验。这种方式可以直接推广到其他的智能合约虚拟机上，比如 MoveVM。

或者其他场景，比如去中心化计算。理论上任何可以编译到 MIPS 虚拟机上的程序，都可以通过这种方式来仲裁。另外还有一种演进的可能是，如果换用其他的指令集呢，比如 WASM？

区块链的核心技术是关于证明的技术，证明状态未被篡改，证明计算结果正确。我们通过改造存储机制，构造状态树来实现状态的证明。而关于计算的证明，我们有零知识证明以及上面这种交互式仲裁证明。

这些领域的技术都还在快速演进，给编程语言以及虚拟机相关的技术都会带来巨大的变化。如果对编程语言，编译器，虚拟机，零知识证明等领域感兴趣，请可以和我联系，交流技术或者推荐工作均可。

<!-- WEIBO_MEDIA_START -->
## 原微博中的媒体

![](./weibo-4760355056387008-1.jpg)
<!-- WEIBO_MEDIA_END -->
