Layer 2

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 Plasma: Scalable Autonomous Smart Contracts https://vitalik.ca/general/2021/01/05/rollup.html https://www.plasma.io/plasma.pdf https://offchainlabs.com/arbitrum.pdf https://nms.kcl.ac.uk/patrick.m