Layer2是为了解决Layer1扩容问题提出的一个方案。Layer2是一个独立的区块链,它将Layer1上的部分数据转移到Layer2上进行处理,然后将处理后的结果在提交给Layer1进行上链。这样就提高了Layer1的处理速度,降低了手续费并且还继承了Layer1的安全性和去中心化。
随着以太坊生态的繁荣,以太坊一层网络已经无法承受这么大的数据量。当出现一些非常火的项目,大家都赶着参与,由于矿工会优先打包手续费高的交易,所以会导致这段时间手续费飙升。如果你交易的手续费给的低的话,那就有可能很长一段时间都不会上链。
下面是ETH的Gas Fee统计:

既然以太坊拥堵了,那么能在以太坊上提升性能吗?那就要提到区块链不可能三角问题了,就是类似于分布式应用的CAP定理。不可能三角问题就是指一个Layer1项目中,不可能同时完全满足去中心化、安全性和扩展性。
去中心化:指的是节点的去中心化程度,节点越多,去中心化程度也就越高。
安全性:是指整个区块链网络的安全性,黑客攻击付出的成本越高,那么这个区块也就越安全。
可扩展性:交易处理的越快,成本越低,扩展性就越高。
区块链是去中心化,去中心化程度越高,就意味着节点越多,那么节点间的数据同步就会慢,导致可扩展性变低。这也就是为什么去中心应用要比Web2的中心化应用的处理速度慢的原因。
为了解决这个问题,现在有两种解决办法:
分片:在Layer1上进行改造,提高以太坊的处理速度
Layer2:用新的链来帮助以太坊提升处理速度
Layer2是公认主要的解决方案,分片只是辅助。这次主要讲解Layer2的方案。
Layer2现在有以下方案:
侧链
状态通道
Plasma
Validium
Rollup
其中Rollup是目前认为解决以太坊扩容问题最好的方案。
从严格意义上来说,侧链并不属于Layer2,因为侧链是完整单独的一条链,并不会将执行结果回传到Layer1上,而是完全在自己的链上执行。其安全性也是由自身的链来保证,不像其他Layer2方案,安全性和去中心化是依靠以太坊。
基本的工作原理就是利用双向锚定机制(2WP),首先如果我想在侧链上交易,需要先在主链上将100个ETH锁定,然后会将锁定信息发送给侧链,侧链收到消息后会在侧链上解锁比如100个WETH,这样我就在侧链有了对应数量的侧链币。在侧链经过一些交易后,我想回到主链,就需要将侧链币锁定,然后对应的主链上就会释放对应数量的ETH。

2WP又可以分为两种:
中心化:就是将主链上的币发送到一个中介平台或者联盟平台,平台收到资产后再到侧链上解锁对应的侧链币。
去中心:SPV是一个处理主链和侧链跨链安全性的方案。是将主链上的币发送到一个特殊地址,然后在锁定和解锁币时都设置了锁定期,必须要等待一段时间。在提高了安全性时,相比于中心化方案,速度肯定是逊色的。
优势和缺陷
优势:
通过将大量交易转移到侧链中,大幅度提升了吞吐量。
手续费更低。
兼容性高,支持智能合约。
缺陷:
相比于主链,去中心化低。
依赖于侧链自身的安全性。
状态通道就是将部分交易或者计算放到链下去执行,并不需要将中间的过程回传主链,只需要将最后的结果回传主链。就能避免中间过程占用大量资源和高手续费。
比如A和B两人想要进行多次的交易,起初都有50个ETH,如果不使用状态通道,那么每次交易都会消耗手续费。但是如果有了状态通道,可以通过一方打开状态通道,并且只需要在打开和关闭状态通道时付手续费。打开状态通道后,A先签名一笔交易声明转10个ETH给B,B拿到这个交易后也进行签名,也把签名后的数据发送给A。之后如果B想要给A转30个ETH,同样的先签名一笔交易声明转30个ETH给A。A拿到交易后也将签名后的数据发送给B。最后只需要将最终状态A有70个ETH,B有30个ETH提交给智能合约,然后付一笔关闭状态通道的手续费就可以了,不需要将中间的交易提交给合约。然后在等待一段时间后,确保两人没有异议,这次的状态通道就算成功关闭了。
之所以要等待一段时间,是防止其中有人作弊,比如最后B提交给合约自己有60个ETH。A就有时间可以提出异议,并将最新双方签名过的交易明细给智能合约。智能合约就能识别到B只有30个ETH并惩罚B。
优势和缺陷
优势:
具有很高的隐私性,因为只需要将结果上传到链,不需要暴露中间过程。
非常适合需要长时间多次交易的用户,能够省去中间的手续费成本。
缺陷:
不适合交易频次低的用户。
提币慢,因为需要等待一段时间确保状态通道正确关闭。
依赖双方的状态,如果中间有一方掉线了,那么另外一方就可以作弊提交最终状态,并且掉线的一方如果在关闭状态通道等待期间没有提出异议,那么就会导致财产损失。
存在流动性问题,在状态通道打开期间,资产是一直锁定在智能合约中的。
Plasma和侧链有非常多的相似之处,最大的区别就是Plasma利用了主链的安全性。Plasma将ETH称为“根链”,每个子链都由“根链”延伸而来,通常通过“根链”的智能合约来管理。
Plasma利用到了Merkle树,下面图片中就是一个Merkle树

Merkle树中,每一个节点的值都由它下面紧邻的两个节点决定,所以root节点的值就能确定一个Merkle树。Merkle中任何一个节点的值变化了,都会影响到root节点。如果root值变化了,可以从上往下对比每个节点的值,就能最终找到变化的节点。
Plasma子链中进行的交易,最后都会生成一个root节点值,只会将这个值提交到“根链”中。不会提交中间的交易信息。
优势和缺陷
优势:
提供高吞吐量和较低的每笔交易成本。
适合任意用户之间的交易(如果双方的交易都建立在 Plasma 链上,则这个交易几乎没有成本)。
减少主链负载
缺陷:
不支持智能合约。
需要依靠一个或者多个运营商来存储数据。
Roll-up是目前最主流的扩容方案,和Plasma一样,也是将部分交易放到链下执行,然后再将执行结果传回到主链上,但是不同之处在于
roll-up也会将交易数据提交给主链
roll-up会每次会将交易按照批次打包,每批去更新到主链上
roll-up会最大限度压缩这些数据
所以,Rollup 的实质是将一大笔实际产生的交易汇总成一笔主链上的交易(其中包含交易生成的root hash),这些交易由 Rollup 链来执行和计算,但会将数据提交给主链。这样既利用了主链的共识和安全性,同时提升了实际上的交易效率,降低了交易成本。
前面提到了roll-up也会将交易数据提交到主链,但是主链上一笔交易的大小是有限制的,为了能够提交更多的数据,roll-up会对交易数据进行压缩。
下面是一个压缩的例子

Nonce:在 rollup 中可以完全省略 nonce。因为完全可以从 pre-state 中恢复 nonce。
GasPrice:可以在每批中设置一个固定的费用水平,或者甚至将 gas 支付完全移到汇总协议之外,并让交易者通过渠道向批次创建者支付费用。
Gas:可以在 batch 层面设置 gas 限制,选择一些特定的值,
To:可以通过默克尔树上的索引来替换 20 字节的地址(例如,如果地址是添加到树中的第 4527 个地址,我们只需使用索引「4527」来引用它。就可以限制到 4 个字节
Value:钱数把单位改一下,或者用其他技术法来存储。
Signature:使用 BLS 聚合签名,将多个签名整合为一个。然后可以一次性地针对整个消息批次「batch」验证签名。因为每个区块中可验证的聚合的签名数量上限是 100,所以即使包含 100 笔签名的 大批次(batch)也能聚合成一笔签名。
通过上述的步骤,可以将一笔交易112个字节压缩到只有12个字节。
roll-up提交了数据到主链上,还需要验证数据的安全性,从而有两种解决办法:Optimistic Rollup和ZK Rollup
Optimistic Rollup
顾名思义,是乐观的认为提交的数据是合法的,允许在一段时间内(挑战期)让任何人进行验证

为了威慑提交者不作恶,提交者往往需要质押资金,当他的提交被验证为错误时,一部分质押资金将会被扣除作为惩罚。同时,提交了相应欺诈证明的验证者会得到被扣除的押金,以此来激励监测和提交欺诈证明的行为。
验证交易的过程也叫做欺诈性证明,欺诈性证明也分为两种方式:
单轮交互型:将交易都放到主链上执行一次,得到一个root hash,再和提交的hash进行比较来判断是否合法。缺点是手续费会高一点。Optimistic利用了单轮交互型。
多轮交互型:会将整个默克尔树进行二等分,让验证者选择要选择验证哪一个部分,一直循环直到找到需要验证的交易,让后放到链上执行,在比较执行后的结果。缺点是验证期会长一点。Arbitrum 利用了多轮交互型的欺诈证明。
ZK Rollup
ZK Rollup利用到了零知识证明,ZK Rollup要求提交者提交Batch是多携带一个“有效性证明”,任何人可以通过“有效性证明”验证交易的合法性。
Optimistic Rollup 和 ZK Rollup 的区别:
速度:ZK Rollup要领先与Optimistic Rollup,它可以在几分钟内就从Layer1跨链到Layer2,而不像Optimistic Rollup需要等待几天的挑战期。
兼容性:Optimistic支持EVM智能合约,但是ZK Rollup方案也在积极的研发解决方案。
安全性:ZK Rollup的安全性更好。
成本:因为零知识证明需要大量的计算,所以ZK Rollup消耗的成本更高。
Rollup 的优势和缺陷
优势:
更加安全。
保证了数据可用性。
缺陷:
Optimistic Rollup 方案的提币速度慢。
ZK Rollup 由于开发难度更大,目前其尚未兼容 EVM。

