原文作者:鹿目圆
Vitalik 在最近的一篇文章中讨论了Layer 3的概念。那么,什么是Layer 3?
我们先简单回顾一下Layer 1和Layer 2。
早期的公链,尤其是以太坊,其生态发展受制于网络性能,每秒可处理的交易笔数(TPS)比较小,网络时常发生拥堵,且交易GAS费比较昂贵,无法支撑高性能的应用在其上发展。为了提升网络的可扩展性,各种扩容方案相继被提出。
扩容的路线主要有两种:
一种是在原有的区块链本身,也就是Layer 1上进行扩容,让区块链自身拥有更高的交易容量和处理速度。这种方案的主要问题是:如果通过更大的区块来进行扩容,那区块会变得更难验证,同时网络也会变得更加中心化。
第二种是在区块链上附加一层,即常说的Layer 2扩容。这种方式不是将所有的活动(比如计算、存储、共识)直接放进原链中(单片式的layer 1区块链),而是通过模块化的执行层,也就是一些链下的Layer 2协议来处理一系列的交易。链上的智能合约只进行两项工作:处理存款和取款,以及验证所有链下发生的行为是符合规则的。
在讨论Layer 2扩容的过程中,逐渐出现了一个新的概念--Layer 3。
Layer 3基于这样一种理念:
如果可以在Layer 1之上添加Layer 2协议来帮助处理交易从而提升安全性和可扩展性,那么是不是也可以在Layer 2上面增加额外的Layer 3协议来继续增加安全性和可扩展性?
这个想法听上去不错,但是在实际执行上面临着诸多问题,使得这种扩容方案无法直接简单地进行堆迭。
通过堆迭更多层来持续扩容可行吗?
Rollup是一种扩容技术,主要是为了解决区块链运行时的扩展的两大瓶颈:计算和数据。
其中计算瓶颈可以由欺诈证明或者SNARK来解决,这依赖于一小部分人来处理区块,其他人只需要进行很小的计算量,来验证这些处理结果的正确性。
这些方案,尤其是SNARK,几乎可以无限制扩容,可以通过在SNARK上再进行SNARK来把很多计算量缩小到一个证明里。
但是数据则不同。Rollup使用一系列的技巧来缩小一个交易需要上链的数据量,一个简单的货币转账的大小被从100字节压缩到16字节,一个保护隐私的ZK-SNARK交易可以从600字节被压缩到80字节。
但是Rollup仍然需要维持链上数据的可用性。也就是说链上数据对用户来说需要可获得并且可验证,这样用户就可以独立地计算和验证Rollup的状态,并且在现有验证者离线的时候可以作为验证者加入。
数据只能做一次压缩,不能用同样的压缩逻辑把压缩过的数据再压缩一次。
所以,Rollup上的Rollup(多层堆迭)这种方案实际上并不能在可扩展性方面带来更多的收益。
但是,Layer 3模型可以用作其他用途。
如果不适宜用来做通用扩容,那么用Layer 3做什么比较合理?
Polynya在文章《分形扩容》中介绍了一个可行的Web3网络是什么样的。文章中提到,试图把所有内容塞进一个服务器,在一个服务器中进行并行化,远不如把并行的概念带到下一个层,也就是新增加一个Layer 3来进行并行处理,这样可以把内容扩展到多台服务器上。通过分形的方式来进行并行与特定扩容,这就是我们需要layer 3的地方。任何计算密集型的应用程序,都会需要为应用定制的rollups。这样做有以下几个好处:
优化了零虚拟机开销的应用程序
无MEV,或MEV有限,即可以通过简单的解决方案来减轻有害的MEV
为特定目的选择微调硬件(通用链总会有一些不适合某个应用程序的瓶颈)。
解决交易质量不可能三角--可以支付少量的交易费用,但仍然可以通过有针对性的防DDoS方案来规避垃圾邮件。
Starkware也提出了他们的Layer 3的方案。它采用的递归的理念可以甚至可以被用到更多层级上来实现分形层级解决方案。在他们的方案中展示了这种生态的示例,如下图所示。
它的layer 3包括了:
拥有Validium的数据可用性的StarkNet,主要给一些对价格特别敏感的应用来使用。
专门针对APP的拥有更好的应用处理性能的StarkNet系统,例如应用了特殊设计的存储结构。
服务于类似 dYdX 、Sorare、Immutable 和 DeversiFi 的StarkEx 系统,这些系统具有 Validium 或 Rollup 数据可用性,可以为 StarkNet 带来可扩展性优势。
隐私 StarkNet 实例(在此示例中也作为 L4)可以实现隐私保护交易而不会将它们包含在公共 StarkNet 中。
Starkware在文章中提到了三种关于Layer 3的愿景,Vitalik 在他的文章中也对这三种模式表示了认可:
自定义功能。即layer 2用于扩容,layer 3用于特定的功能,例如隐私。在这个愿景中,没有尝试提供“可扩展性的平方”,而是在堆栈中有一层专门来帮助应用程序扩展,然后其他层则为不同用例提供定制功能。
自定义扩展性。即layer 2用于通用扩容, layer 3用于定制扩容。定制扩容可能有不同的形式:不使用EVM来进行计算的特殊的应用、用数据格式优化来为特定应用进行数据压缩的Rollup等。
自定义安全性。即layer 2用于无需信任的扩容(rollups),layer 3用于弱信任扩容(validiums)。Validium是SNARKs用于验证计算的系统,但是把数据可用性放在了链外可信任的第三方或委员会处。Vitalik认为,Validiums被严重低估了:对于大多数“企业区块链”应用程序来说,运行validium证明者并定期将哈希提交上链的中心化服务器就可以满足需要。虽然Validium的安全性不如rollup(因为是中心化的),但是它们的费用便宜许多。
Layer 3的成本
Rollup和validium需要在确认时间和固定成本之间做权衡。但Layer 3可以解决这些。
Rollup中的每笔交易的费用都很低:根据应用的不同,大概是16-60字节的数据。
但是Rollup也有一笔很高的固定成本,来源于每次需要将一批交易提交到layer 1链上时:如果是optimistic rollup需要21000 layer 1 gas每批次,如果是ZK rollup则会超过400,000 gas,如果是量子安全的STARK则需要百万以上的gas。
当然,rollup也可以简单地选择等到有1000 万 gas 价值的交易时再来提交整批交易,但这会造成非常长的批次间隔,迫使用户等待更长的时间以获得高安全性的确认。
因此,它们需要在不同方案中权衡:较长的批次间隔和最佳成本,或者较短的批次间隔和增长的成本。
Vitalik在文章中展示了一个批次成本为 600000 gas 的ZK rollup、每笔交易成本为 368 gas的完全优化的 ERC20 转账(23 字节)的情况。假设此rollup处于早期采用阶段,TPS为5。计算得出每笔交易与批次间隔的gas:
如果在拥有大量定制化Validium和针对APP的定制环境的情形下,它们可能不需要用到5tps。事实上,layer 3确实能解决这个问题。ZK rollup 中的 ZK rollup只有大约 8,000 gas 的layer 1 成本(500 字节用于证明)。这将上表更改为:
Layer 3有什么优势?
Layer 3的优势有以下几点:
更好的可扩展性:来源于利用递归证明的倍数效应。
构建layer3的应用程序设计人员获得了更好的控制性。
隐私:例如,零知识证明应用于开放Layer 2 上的隐私保护交易。
更便宜/更简单的 layer 2-layer 3 互操作性:目前在 layer 1 和 layer 2 之间的出入金流程非常昂贵。相比之下,由于 layer 2 的成本效益,这些流程在应用于 layer 3 时不仅极具吸引力,而且易于实施。虽然在 layer 2 和 layer 3 之间移动资产的延迟可能比部署在同一 layer 2 上的应用程序之 间的延迟要长,但成本和吞吐量是成正比的。
更便宜/更简单的 layer 3-layer 3 互操作性:独立的 layer 3 将通过 layer 2 而不是 layer 1 进行互操作。layer 2 显然比它的 layer 1 便宜。在没有 layer 3 的情况下,这些都将在 layer 2 上运行,也就必须通过相当昂贵的 layer 1 进行互操作。
layer 3 作为 layer 2 的“金丝雀”网络:新的创新可以在 layer 3 上进行测试,然后在 layer 2 或 layer 3 上向公众提供(很像 Kusama 在 Polkadot 中扮演的角色)。
Layer 3的实现方式
Starkware在他们的方案中介绍了layer 3的具体实现方式。
一个经典的layer 2结构包括了以下几个组成部分:
跟踪layer 1上的layer 2状态根的智能合约(例如以太坊上的StarkNet智能合约)
一个Verifier智能合约来证明状态转换证明的有效性
layer 1上的用来管理layer 2上进出的代币的存取款的桥合约
layer 2上用来作为layer 1上代币交易对手方的代币合约,如ERC20, ERC721
而一个分形的layer 3结构则如下图所示。只要在layer 2上放置状态跟踪和Verifier智能合约,layer 3就可以利用有效性证明在layer 2上安全地运行。当 layer 2 也使用提交给 layer 1 的有效性证明时,这将成为一个非常优雅的递归结构,layer 3 证明的压缩优势可以使layer 2 证明的压缩优势成倍增加。
Layer3--Dapp开发者的选择
对于 dApp 的开发者来说,在基础设施上可以有以下几种选择:
1、自己开发一个 Rollup(ZK Rollups 或者Optimistic Rollups)
优势是你可以继承以太坊的生态(用户),还有它的安全性,但是对于一个 dApp 团队来说,Rollup 的开发费用显然过高。
2、选择Cosmos 、Polkadot 或者是 Avalanche
开发的费用会更低(例如 dydx 就选择了 Cosmos),但是你将失去以太坊的生态(用户),以及安全性。
3、自己开发一个Layer 1 区块链
这带来的开发费用和难度很高,但是却能拥有最高的控制权。
我们对比一下三种情况:
难度/费用:Alt-layer 1> Rollup > Cosmos
安全性:Rollup > Cosmos > Alt-layer 1
生态/用户:Rollup > Cosmos > Alt-layer 1
控制权:Alt-layer 1> Cosmos > Rollup
作为一个 dApp的开发者,如果想继承以太坊上的安全性和流量,那就不能重新开发一条链,那只能选择 rollup 。但是自己开发一个 layer 2 rollup 又非常贵,那么合适的解决方案就变成了利用 layer 3 SDK 开发一个自己的应用专用的 Rollup(application-specific rollup),即 Layer 3。
结语
Layer 2可以降低每笔交易的 gas 成本、提高链上的可扩展性。同时,Layer 2保留了去中心化、通用逻辑和可组合性的好处。通过递归结构的设计,Layer 3也可能继承Layer 2的这些优点。
目前一个比较普遍的观点是:一些应用需要特定的定制化服务,而这些服务,将由Layer 3来提供。
Layer 3 可能会为以太坊或者说是区块链,开辟一个新的空间,就像 Rollup那样。但是目前还有很多的技术细节需要去解决,这还需要时间。
自2020年以来,应用层的创新几乎没有出现。过去关于区块链应用未爆发的原因,多数说法是现有的公链的性能不足以支撑高计算量高并发的应用,这种思路还停留在单片区块链的时代。但是随着layer 3方案的成熟,预计将会出现一批新的应用,这些应用只有在分形扩容的情况下才真正有可能实现。链上游戏或类似依赖大量计算的项目,可能会成为第一批部署自己的layer 3的项目。