Optimistic Rollup 是Ethereum Layer 2 的一个解法。”Rollup” 背后的逻辑就是舍弃在昂贵的Layer 1 上运行智能合约,我们可以选择在Layer 2 上运行,然后再把结果存在Layer 1 上。所以实际上可以执行一堆的交易,最后只记录一次的结果回链上。

好处当然是把吞吐量提高了,但问题是,我们到底要如何验证这个写回链上的结果是正确的

Optimistic Rollup的方法就是:要允许在链上重新跑过这些交易,一但证明某笔交易是错的,也可以获得奖励。更底层的来说, Optimistic Rollup透过智能合约实作了EVM,他们称作OVM,整个VM是用Solidity写的。

但这样只解决了简单的问题。

很多智能合约会使用到外部的状态(例如block.number)而这些值在Layer 2上是不存在的或是根本已经是不对的。

所以他们做了两件事:

禁止某些会有不确定效应的EVM 指令集 如果真的需要用到这些会有不确定效应的指令,则这些指令会被导到一个独立的智能合约,称作Execution Manager。

第二个问题是,要是Execution Manager 接受了错误的指令,要怎么停下来。一个外部的智能合约被呼叫时,可以撤销这个呼叫,但无法撤销原始调用它的程序。

所以直接的解法就是,要求所有调用Execution Manager 的呼叫都要遵照回传的指示暂停执行且撤销呼叫。

简单来说,不是所有的智能合约都可以直接在OVM上执行,需要另外一个转译器(Transpiler)来把它转成OVM支持的版本。

尽管还在测试网阶段,但我们接下来有望看到Synthetix & Uniswap 采用Optimistic Rollup。

Layer 2 的春天终于要来了吗