引言

最近一段时间,基于以太坊的 Layer2 产品可谓是层出不穷,市场表现极为火热。不知大家注意没有,每个产品推出时都会介绍 「其产品是基于某种主流 Layer2 方案,具有何种优势,可以给产品、某方面给用户带来更好体验」 等类似的宣传语句。有心的读者或许会深思,这些方案到底是什么方案呢?背后的原理究竟如何?是否存在劣势?今天,ZKSwap 团队就带领大家纵览 Layer2 全局,以技术为基础细分整个产品市场并深度剖析背后的技术原理。

Layer2 概览

相信之前有诸多文章已经介绍,根据数据的存储方式和交易有效性的证明方式的不同,Layer2 方案可以被划分为四大类,如下图所示:

Layer2 剖析:Arbitrum 如何改进 Optimistic?Layer2 方案划分

数据存在链上,即具有链上数据可用性的方案有:ZK-Rollup、Optimistic Rollup;
数据存在链下,即不具有链上数据可用性的方案有:Validium、Plasma;
用零知识证明来主动保证交易有效的方案有:ZK-Rollup、Validium;
用户需提交欺诈证明来主动验证交易有效的方案有:Optimistic、Plasma;

随着 Layer2 技术的不断发展,Plasma 和 Validium 方案在市场上逐渐的失去了声音。绝大部分产品都是基于其他两种方案上实现的,因为两种方案的优缺点比较明显,因此项目方会根据不同的考量来选择不同的方案,下面我们将通过一张表格来呈现整个 Layer2 上的情况:
Layer2 剖析:Arbitrum 如何改进 Optimistic?Layer2 产品划分

从表格中可以看出有有两个被标记的方案:

由 Offchain Labs 研发的 ARU 扩展方案,和 ORU 方案一样被归类于 Optimistic Rollup 的范畴,但与 ORU 主要的不同之处在于欺诈证明的交互过程,这将在后续的技术剖析环节给与分析;

本篇主要剖析 ORU 和 ARU 的挑战原理,以更好的呈现它们之间的主要差异。

Optimistic Rollup(ORU) -- Fraud Proof 欺诈证明

首先简单介绍 ORU 协议里的两个概念:

CTC(Canonical Transaction Chain):存储所有的交易信息,保证了数据可用性(更细节的描述可以参考链接 Optimistic Details)。

STC(State Commitment Chain):存储了一系列的状态根,和 CTC 里的交易顺序逐一对应(更细节的描述可以参考链接 Optimistic Details)。

两者的关系如下图所示:

Layer2 剖析:Arbitrum 如何改进 Optimistic?

S0 为初始状态根,图中绿线表示:交易 Tx1 执行后,状态根由 S0 => S1。这些操作都是由 sequencer 来执行,sequencer 在 ORU 协议里扮演者重要角色,主要负责三件事情:

1. 接受来自用户的交易;
2. 将这些交易 rollup,并添加到 CTC 上;
3. 计算每笔交易提交后的状态根并添加到 STC 上;

假如 sequencer 作恶,提交了错误的状态根(后续的状态根自然也是无效的),如下图所示,Verifier 如何验证 sequencer 作恶呢?

Layer2 剖析:Arbitrum 如何改进 Optimistic?

Verifier 的挑战过程主要分为三个步骤:

1. 宣称要挑战的交易,并且提供在此交易执行前的状态根;
2. 上传 L2 上所有和该交易相关的状态到 L1 (因为挑战的思想是在 L1 上重新执行 L2 上已经执行过的交易,并比较执行后的状态);
3. 在 L1 重新执行挑战的交易,计算新的状态根,并判断 sequencer 是否作恶;
如果 sequencer 确实作恶,那么将罚没其押金,并将其部分奖励给 verifier。

Optimistic 具有的缺陷是:

1. 由于不是主动保证交易的有效性,因此 sequencer 提交的每一次状态更新都要设置挑战期,大概在一周左右,时间太长;
2. 用户挑战的成本很高,具体包括:(1) 发送所有和挑战交易相关的数据到 L1;(2)在 L1 的 EVM 上执行该笔交易,并更新状态根;

优点: 兼容 EVM。

Arbitrum Rollup(ARU) -- Fraud Proof

ARU 协议的设计和 ORU 大体相似,主要的区分在挑战机制上。在 ORU 协议里,sequencer 和 verifier 之间只有一次交互,即 sequencer 提交一次状态转换,verifier 去完成后续的挑战。由于 sequencer 宣称就是“初始状态为 Si,执行完交易 Txi 后,状态根变为 Si+1”。因此,在 L1 上不得不完整的执行整个交易。

ARU 的协议对以上过程进行了优化,实际上,在 L1 上执行交易的过程,其实就是在虚拟机上执行某些指令的过程;ARU 协议认为,整个交易执行的过程中,状态更新的失败,必定是其中的某些指令执行的失败,因此,只需要证明 sequencer 在执行某条指令时出现异常,那就可以证明 sequencer 作恶。具体的过程如下图所示:

Layer2 剖析:Arbitrum 如何改进 Optimistic?

注:在 ARU 协议里,Asserter 对应 ORU 协议里的 sequencer,Challenger 对应 ORU 协议里的 verifier。

据上所知:

1. Asserter 和 Challenger 间进行了多次的交互,交互次数和 n 成对数关系;
2. 把验证整个交易的执行过程,简化成了单纯的验证一条指令,大大的节省了验证成本;
3. 同样兼容 EVM;

当然,ARU 协议仍然有很多细节还未在本篇文章里说明,本篇不打算过多介绍,内容已经很长,如果读者想了解 ARU 更多细节,请参考 offchainlabs 的官网。

写在最后

虽然以 Optimistic Rollup(ORU) 路线为主的 Layer2 扩容方案逐渐的被市场上更多的产品所接受,但是未来的 Layer2 扩容终极方案仍然是兼容 EVM 的 zkRollup(ZRU)。目前的 Layer2 的产品市场上,对于 EVM 的兼容性比安全性和效率更受关注,当然完美的方案是兼容 EVM 的 zk rollup;在此之前,Layer2 扩容方案应该会在一段时间内在兼容性和安全性之间权衡选择。这有利于 Layer2 扩容技术的发展,Offchain Labs 做了很好的榜样;当然,ZKSwap 团队也会持续研究探索,按照 ZKSwap 的路线图,将在今年发布兼容 EVM 的 ZK Rollup 版本,取得更好的可组合性和安全性,而不用像 optimistic 的解决方案,通过牺牲一定的安全性来实现与 EVM 的兼容。