# Layer 2

By [journeywest.eth](https://paragraph.com/@journeywest-eth) · 2022-02-16

---

[https://zhuanlan.zhihu.com/p/401607743](https://zhuanlan.zhihu.com/p/401607743)

[https://zhuanlan.zhihu.com/p/401607743](https://zhuanlan.zhihu.com/p/401607743)

[https://zhuanlan.zhihu.com/p/401607743](https://zhuanlan.zhihu.com/p/401607743)

Layer2解析及项目

文章会介绍Layer2各个方案的基本思想，优劣对比，以及目前主流的项目，而其中有些项目我认为是可以提前埋伏的机会。

目前有两大类方案对区块链系统进行扩容。一个是基于原链进行扩容，最为大家熟知的就是分片（Sharding），另一类就是目前比较火热的Layer2扩容。

Layer2就其本质上来讲，就是让大量的交易在链下进行，并只在需要最终确认或者在出现争议的时候提交到链上进行仲裁。所以Layer2扩容方案又被称为链下扩容方案。

Layer2的方案总的来分状态通道（State Channel)，等离子体（Plasma），Rollup三种。其中Rollup又分为ZK Rollup（简称ZKR）和Optimistic Rollup(简称OR)，也是当下比较主流的扩容方案。

以下所说的是各个方案的基本原理，实际上很多项目在应用时都会有各种具体的方法去优化，解决方案本身的一些劣势。 状态通道 状态通道的思想其实和比特币中的闪电网络类似，只不过这里的“状态”其实是广义的概念而不单单是你的账户余额，而用于支付的通道是状态通道的一种特殊形式。这里用一个便于理解的例子来解释一下它是如何工作的：

假设A和B要进行一系列连续的交易，B持续为A进行某种服务而A需要一段时间给B支付一定的费用，这时他们只需要共同参与到合约中，将自己的状态锁定到链上，然后在链下进行一系列的操作。待双方完成交易后，将最终的状态改变提交到链上，更新最终的状态。 当然这是正常状况，实际上链下的每一个操作都会伴随一个状态数的更新，状态数就可以代表最新的状态。假设A想赖账，提前退出，这时会进入一个“争议期”，链上判断B的状态数高于A，合约会对恶意乙方做出相应的惩罚（比如扣除保证金）。 不足： 1、由于参与者必须能够在任意时间向区块链上提供当前通道的状态，这就要求参与者必须一直在线。当然也可以托管第三方。 2、灵活性不足。虽然支持多方参与，但是参与方一旦固定，其余节点不能灵活的参与。 项目： Celer Network、FunFair、Perun、Lighting Network 、Counterfactual、Raiden

Plasma Plasma的概念最初由V神提出，通过加密验证技术（Merkle Tree）和智能合约将以太坊主链上的交易放到链下（侧链）去执行，从而得到更快的交易速度和更低的手续费。 主链上有多个合约，每个合约都延伸出一条子链，而子链也可以延伸子链，可以理解为一个法院的层级结构，主链作为最高法院具有裁决的作用，如下图所示：

用户将资金存入对应plasma合约上，将资金从根链转移到相应的子链上。当用户想要退出时，发起withdraw交易，并且进入一个退出时间（挑战期）， 任何人都可以提交欺诈证明来挑战该用户的资产声明，证明该用户的资产有效性。

若Plasma子链中的用户发现运营者提交了伪造的信息给根链，那么他们可以提交相关的欺诈证明数据给根链，以证明运营者提供的数据是伪造的。一旦证明成功，Plasma子链的区块将回滚到伪造之前的状态，同时，运营者也将受到惩罚。

优势： 1、与状态通道相比，Plasma更加灵活，可以允许成员的动态变化； 2、理论上可以无限扩容，各个侧链都有自己独特的工作方式，不同的共识算法。 劣势： 1、赎回（withdraw）不是立即确认的； 2、只有一个哈希值传到主链（链上没有原始数据），而挑战期需要原始数据，一旦链下出现问题，主链无从验证，这就导致了最关键的数据可用性的问题，这个问题就迫使用户一方需要保存部分数据并且在线，否则错过挑战期，即使有错也没法更改。 而这也是Rollup的方案去解决的问题。 项目： Skale、OMG、MATIC、LOOM、Livepeer

Rollup rollup就是“卷起来”的意思，之前一个转账一笔交易，现在就是数百比转账“卷”成一个交易。解决了Plasma的一个最关节的问题——数据可用性。将每一笔交易的原始数据（CALLDATA）存储在以太坊上，而在链下进行执行。

上图的右侧就是一些链上账户的状态值所构成的Merkel Tree，交易的发生会导致这棵树的结构发生变化（从旧状态到新状态），这个变化在链下进行，链上虽然没有这些信息，但是可以根据原始的信息进行重新构造。ZKR和OR的区别就是如何验证旧状态到新状态的变化。 OR 顾名思义，乐观意味着链下操作者返回的结果被默认为正确的，而不需要每一次都要检查。如果有人发现状态的变化有误，则向主链发布一个证明来证明变化的错误，链上合约进行验证并回滚错误的状态变化。也就是说，只有出现争议的时候，才通过链上的合约进行裁决，然后惩罚恶意的验证者。 项目： Arbitrum、Optimism、Idex、Synthetix、Catersi

ZKR 链下的操作者根据状态更新的变化生成一个零知识证明（SNARK），然后交给链上的合约进行判断。链上只要验证该证明，就能确保涉及到的交易被正确地执行，这个验证是高效而且容易的。而对于无效的交易或者状态变更，操作者是不能生成这样的证据。 项目： ZKsync, Loopring，zkswap

OR与ZKR的对比：

1.  OR采用欺诈性证明（fraud proof）， ZK采用有效性证明（validity proof）；
    
2.  OR支持EVM，ZK底层基于混淆电路，OR更容易将现有以太坊的生态完全移植；
    
3.  OR需要一段时间的挑战期，ZKR是立即确认；
    
4.  OR的性能要低于ZKR；
    
5.  OR的安全性依赖于罚金，ZKR的安全是以数学为基础，更加符合中本聪最开始的想法：通过技术手段解决中心化所带来的问题。
    

这么看来，ZKR似乎各个方面都要比OR好，为什么大家不都去选择ZKR？ZK Rollup在完全适配以太坊生态应该还有一段路要走，而Optimistic Rollup正好为L1到L2提供了一个过度期，为那些还不能适配ZKR的dapp提供一个初具规模的生态，让ZKR更好的去适配大规模的以太坊上的各个生态。

参考文献 [https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/#resources](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/#resources) Plasma: Scalable Autonomous Smart Contracts [https://vitalik.ca/general/2021/01/05/rollup.html](https://vitalik.ca/general/2021/01/05/rollup.html) [https://www.plasma.io/plasma.pdf](https://www.plasma.io/plasma.pdf) [https://offchainlabs.com/arbitrum.pdf](https://offchainlabs.com/arbitrum.pdf) [https://nms.kcl.ac.uk/patrick.m](https://nms.kcl.ac.uk/patrick.m)

---

*Originally published on [journeywest.eth](https://paragraph.com/@journeywest-eth/layer-2)*
