Layer 2指基于底层区块链(注:通常也称为“Layer 1网络”)的链下网络、系统或技术,目的是为了扩展底层区块链网络。Layer 2网络可以提升任何底层区块链的吞吐量以及其他性能。
Layer 2网络、系统或技术的核心价值是能够利用底层区块链的安全性。其交易数据必须以某种形式被底层区块链网络验证并确认。按照这个标准来看,侧链就不属于Layer 2,因为侧链通常会部署自己的共识机制和验证节点,因此拥有独立于底层区块链的安全机制。
一些区块链为了保障去中心化水平和安全性而牺牲了可扩展性,这类区块链可以利用Layer 2来提高交易吞吐量,并降低交易成本。Layer 2是解决可扩展性问题的方案之一,无需牺牲去中心化水平或安全性就能快速执行交易并实现可扩展性。
对Layer 2的需求
区块链技术诞生于2008年。自那以来,上千名研究者和开发者一直致力于解决区块链可扩展性的瓶颈,以满足不断增长的应用需求。这些瓶颈导致交易成本居高不下,执行速度慢,并成为了区块链技术主流化的绊脚石。
以太坊联合创始人Vitalik Buterin首次提出了“区块链不可能三角”的概念,认为区块链无法同时兼顾可扩展性、安全性和去中心化三个维度。开发者不得不在这三者之间进行取舍。如今的区块链网络最多只能同时满足其中两个维度。
Layer 2是一种新兴技术,其主张区块链之所以会在可扩展性方面存在限制,是因为区块链需要完成的任务过多。当前区块链有三个核心功能,即:执行交易、数据可用性以及达成共识。
- 执行交易——处理并完成交易。衡量指标是区块链每秒可以完成的计算次数(其中包含交易数量)。
- 数据可用性——网络中的节点和验证者需要储存交易、状态以及其他数据。衡量指标是标准存储单位,比如MB和GB等。
- 达成共识——节点和验证者需要针对网络状态和交易排序达成共识。衡量指标是去中心化水平和终局速度,或所有节点针对某一状态变更达成一致意见所需的时间。
注:本文将聚焦交易执行层。若想全面了解区块链的扩容方案,请阅读这篇关于区块链可扩展性的博客文章。
L2解决方案的运行机制
注:大多数Layer 2解决方案仍处于早期阶段,其中许多要素还有待验证。
Layer 2解决方案大致可以分为两个部分:一个是负责处理交易的网络;另一个是部署在底层区块链上的智能合约,负责解决任何分歧,并将Layer 2网络达成的共识传输到底层区块链进行验证。
Layer 2网络上可以快速执行交易并开展计算。不同网络会通过完全不同的方式提升交易吞吐量。但这些Layer 2网络有一个共同点,那就是在结算时都会向底层区块链提交某种可验证的加密证明,以证明状态变更的真实性。有些Layer 2会提前创建证明并提交至底层区块链,而另一些则是之后再创建追溯性的证明。
另外,不同Layer 2网络在底层区块链上的智能合约实现方式也有所不同,但智能合约的核心功能是一样的, 即:
- 保存并释放资金,转账至Layer 2;
- 收到Layer 2提交的证明,进行验证,解决分歧,并最终确认交易。
为了更好地理解这两种机制,我们可以探讨目前的两种Layer 2实现方案,即:支付通道和rollups。
支付通道
两个或以上用户可以预先向通道中充值资金,然后在链下进行通证转账。
Alice和Bob分别在智能合约中锁定一笔资金,创建支付通道,并通过加密签名技术约定双方可以使用多少资金。比如,双方各锁定50美元,因此支付通道里的资金总额为100美元。那么他们很可能会协议每一方可以使用50美元。
一旦建立了支付通道,Alice和Bob都可以通过签名消息在链下进行交易,无需向底层区块链提交交易。Alice可以向Bob付款,Bob也可以向Alice付款,无需任何成本也不存在延时。在这个双向支付通道中,Alice和Bob的交易不会发送到底层区块链。只有当双方都决定关闭通道时,最终交易结果才会被发送至链上进行结算。
因此,最终Bob和Alice只需要在创建和关闭支付通道时支付两笔链上交易费即可。当支付通道开通时,几百万美元的转账可以在不到一秒的时间内完成,而且无需任何成本。这就是解决区块链扩容问题的经典案例。
支付通道可以实现零成本的高速交易。
Rollups
Optimistic rollups和zk-rollups可以在链下执行智能合约状态变更,并在链上进行验证,以此提升区块链的吞吐量并降低成本。Rollups可以通过以下三种方式实现扩容:
- Rollups在链下执行交易,底层区块链只需计算轻量化的交易证明,验证网络活动并储存原始交易数据。
- Rollups将交易数据打包,并提交至区块链,链上gas费可以分摊到各个交易中。
- Rollups最少只需要一个诚实的验证节点,就可以向底层区块链证明交易的有效性,因此对验证节点的数量要求较低,而对节点硬件要求较高,同时不会对安全性有很大影响。
链下执行
rollups的一个关键特质就是在链下执行交易。这意味着Layer 2网络可以代替底层区块链处理与其他用户或智能合约的交易。由于验证节点数量较少且硬件更强大,这将大幅提升Layer 2网络相较于底层区块链的交易吞吐量。
底层区块链只需要计算提交至智能合约的证明,就可以验证Layer 2网络中的活动(注:如果是optimistic rollups的话,只有当分歧出现时才需要验证),并将未执行的原始交易数据作为calldata储存起来。简而言之,区块链不再需要执行那么多计算任务,也不需要储存那么多Layer 2上的交易数据,因此可以降低每笔交易的成本。
打包交易
另外一种降低成本的方式就是将交易打包。你可以把这想象成是送礼物。在区块链上,每笔交易都是一个单独的礼物,被放在不同的盒子里。这样一来运费就会非常高,因为每寄出一个礼物就需要支付一笔运费。而rollups则是将许多礼物放到一个大盒子里,只需付一次运费即可,每个礼物可以分摊运费。
如果要用更技术性的语言来解释,那就是rollups将原始交易数据打包成calldata。Rollup交易的验证方式与链上交易不同,交易数据被打包只是为了将数据储存在底层区块链上,验证节点或rollup参与者如果有需要的话随时可以重建Layer 2网络的状态。然而,核心逻辑仍然没有改变,即:主链上的一个打包交易中储存了多笔rollup交易。
这样可以有效降低交易成本,并为区块链扩容扫清障碍。而将数据压缩还可以进一步降低交易执行成本。
Zk-rollups和optimistic rollups使用同样的方式打包交易。
减少验证节点数量
正如上文所述,Layer 2可以利用底层区块链的安全保障和去中心化水平,我们下文中会详细阐述。但这里的核心概念是,Layer 2必须向底层区块链提交某种证明,以证明其发起的状态变更是有效的。
因此,rollups就可以减少Layer 2网络中负责执行交易的验证节点数量。验证节点可以是获得许可的实体,这些节点通常拥有更强大的硬件,以更快的速度和更低的成本来计算交易。之所以能做到这一点,是因为验证节点不负责达成共识,共识是由底层区块链达成的,底层区块链上的智能合约需要验证Layer 2提交的证明。
证明对于Layer 2的安全性至关重要
“证明”对于Layer 2来说至关重要,因为Layer 2需要通过提交证明来利用底层区块链的安全保障。在现实世界中,证明可以是多种形式的,比如武器上的指纹或者监控录像都可以是证明。
加密证明也差不多,只是内容比法庭上的证据更客观。利用加密技术来证明某事,可以保障其客观性、可验证性以及防篡改性。如果证明有效,那就可以百分之百保证真实性。比如上文提到的支付通道,对交易附上加密签名就可以为智能合约提供确定性的权威事实,解决任何分歧。
每个Layer 2网络都需要提供某种加密证明,以解决底层区块链上的分歧。如今最主流的两种证明方式是错误性证明(fault proof)以及有效性证明(validity proof,也称“零知识证明”)。这两种证明方式是optimistic rollups和zk-rollups的底层技术。
支付通道签名消息
假设在关闭支付通道时,Bob或Alice发起恶意攻击,并试图取走不属于自己的资金。他们中任何一个人都可以向智能合约发送一个之前版本的支付通道“账本”。
支付通道的关键是每笔交易都必须附上加密签名。这可以为底层区块链上的智能合约提供证明,以解决分歧。比如,如果Alice提交了过期的账本副本,拿走了不属于她的那部分钱,那么Bob就可以对结算交易发起挑战,并提交最新的账本副本。然后,智能合约就可以判定正确的金额。而且Alice还会因为不诚实的行为被罚款。
由于底层区块链智能合约会进行裁决,因此支付通道也是一种Layer 2方案。一个简单的评判方法就是看有没有“证明”。支付通道创建后,Bob和Alice都必须对他们发起的每一笔交易附上签名,并储存一份对方的签名。
这就是支付通道中交易的证明。但光有证明还不够,还需要执行事实,这很像法官在得到证据和陪审团审议结果后做出裁决的过程。同样地,智能合约也会执行判决结果,将正确的金额打到各方在底层区块链上的钱包中,以进行结算。
这就是上文中提到的“利用底层区块链的去中心化水平和安全保障”。支付通道将大部分计算和执行都放到链下处理,但在最后结算时,还是会利用底层区块链强大的共识层来作出最终裁决。
Optimistic Rollups的错误性证明
错误性证明其实很简单。采用这种证明方式的Layer 2网络会默认所有交易都是有效的。然而,网络会设置一个挑战期,任何参与者都可以发起挑战,并向智能合约提交证明,表明交易数据或状态变更是错误的。当错误性证明发布后,rollup交易会部分或全部在链上重新计算一遍,最终的状态变更会跟原来的结果进行比较。如果重新计算的结果不一样,原来的结果将被认为是无效的,并被撤回。
这就是目前optimistic rollups采用的机制。“optimistic”中文意思是“乐观的”,其代表了一种乐观的哲学视角,即:智能合约“乐观地”默认所有交易都是有效的,除非有人提出异议(疑罪从无)。回到刚刚说的那个不诚实验证节点的例子。任何网络参与者只需要在挑战期内向智能合约提交有效的错误性证明即可,一旦证明无误,验证节点的行为就会作废。
Optimistic rollups采用了错误性证明来保证终局的交易可以正确地反应Layer 2网络中的交易活动。
zk-rollup的有效性证明
有效性证明则是另一种截然不同的哲学视角,默认所有计算结果都是存疑的,必须先被证明才能接受。
简而言之,有效性证明的作用是证明某件事是正确的。对于zk-rollup来说,证明的就是Layer 2网络中的交易和计算。因此,底层区块链上的智能合约可以验证Layer 2网络提交的有效性证明,以批准状态变更。对于验证节点来说,功能完备的zk-rollup将不允许任何错误的交易在底层区块链上结算,因为每一批交易都必须附上相应的有效性证明。
有效性证明可以主动证明Layer 2网络交易的有效性
区块链扩容方案
支付通道、rollups和Layer 2都属于区块链扩容方案,都具有长远潜力,可以为Web3应用发展提供助力,并提升用户体验。
Layer 1和Layer 2等大多数Web3技术栈都才刚刚起步,还需要不断发展。这些技术目前还没有达到爆发点,仍需要经历一系列实战检验来证明自己。然而,无数开发者和研究者都在通过不懈努力扩展区块链生态并开发DAG和Layer 2方案,以推动Web3实现主流应用。