Layer3深入解读: 扩容游戏的终极战场?
原文:《》
作者:Yihan Xu@Foresight Ventures
一、从Layer1到Layer3
Layer1是底层区块链。Ethereum、Bitcoin、Solana等公链都是Layer1区块链,它们是区块链网络的基础,各种Layer2都搭建在这些公链之上。
Layer2指以太坊扩容方案。各条Layer2链都是单独的区块链,在保证安全性的基础上提升交易速度和TPS。比如Zksync、Starkware、Arbitrum、Optimism都是不同的Layer2解决方案。
那什么是Layer3?
简单来说Layer3希望在Layer2的基础上完成更加定制化的设计,解决目前Layer2无法实现/实现起来比较困难的功能(包括定制化扩容、privacy等),从而进一步降低成本,提升效率。
但Layer3的想法还在非常早期阶段,现在下定论显然有失偏颇。Layer3的最终形态需要基于开发者探索、实战检验和实际需求。
现在有很多大佬已经提出了相关的设计思路,通过StarkWare提出的多层网络结构图(Layer3的其中一种构建思路),我会做进一步的分析和总结,帮助大家理清思路。
二、StarkWare的多层网络
以太坊多层网络的实践设想最早由StarkWare团队在文章"Fractal Scaling: From L2 to L3"中提出。在这种设计中,现在的Layer2是一种general purpose的扩容,在此之上,Layer3做定制化的扩容。下面我会对图中提到的方案逐个分析(从左到右)。
1.StarkEx Volition(rollup+validium)—> 低成本扩容
在Layer2的方案中我们已经熟悉了Validiums,一种通过SNARK算法对计算结果进行验证,数据不上传Layer1而是依赖于validator托管的扩容方案。由于数据存在链下而非直接发布到Layer1,Validium降低了gas成本并提供了更好的privacy(数据并不向public公开)。但是从去中心化和安全性的角度看,Data Availability依赖于第三方委员会,因此Validiums使用并不广泛。
StarkEx Volition为Dapp提供了一种混合模式,可以选择将数据放到链上以保证安全性(StarkEx Rollup)或者放到链下以获取更低的成本(StarkEx Validium)。现阶段StarkEx仍然是Layer2的扩容方案,但是在StarkWare后续的架构设计中,StarkEx完全可以作为一种打开Layer3大门的通道,在StarkNet通用扩容的基础上进一步为特定的dapp降低成本。
2.App-specific StarkNet —> 定制化扩容
我们知道Layer2的电路设计是为了服务所有Dapp,这意味着工程师设计电路的首要考虑是兼容性。因此现在的电路设计一定程度上牺牲了效率,并没有针对特定的Dapps进行优化。这对于强交互性的Dapp来说是一种的瓶颈,比如注重游戏体验和实时玩家交互的web3游戏。App-specific StarkNet可以为帮助对性能要求较高的Dapp定制化地进行设计以达到更高的performance。
我认为在这个场景下Layer2解决用户编程和可组合性的问题,而Layer3定制化地针对项目方提供更高的性能。比如一个Dapp不需要和其他Dapp共享电路资源,并获得定制化的电路设计,或是由Layer3提供更高效的存储结构会数据压缩服务。
3.StarkNet(Validiums)—> 低成本扩容
类似于StarkEx Volition,在Layer3中将Validiums作为一种低成本的扩容方案,让一些对价格敏感的Dapp获得更低的成本。
4.Privacy StarkNet —> 定制化功能
对隐私功能的实现,某种程度上也可以看作app-specific design。虽然ZK-rollup对privacy友好,但出于去中心化和安全性的考虑,用户的交易数据仍需要在压缩后通过calldata发布到Layer1作为history log,让所有用户都可以成为prover进行验证。因此以扩容为目的的rollup并不能实现privacy。Layer3的能很方便的解决了这一痛点,对于一些强隐私需求的用户,定制化地在rollup甚至rollup of rollup的基础上实现隐私功能。
三、Again,什么是Layer3?
看完以上分析,Layer3应该已经不那么抽象了,下面总结一下这种Layer3的设计到底想解决什么问题,帮助大家进一步建立对Layer3认知。
1.Vitalik的设想
- L2 is for scaling, L3 is for customized functionality.
- L2 is for general-purpose scaling, L3 is for customized scaling
- L2 is for trustless scaling (rollups), L3 is for weakly-trusted scaling (validiums)
2.进一步解读
- Layer2作为general purpose的扩容解决方案,那么对于Layer3的设计可以放下单纯的扩容,去定制化地做一些Layer2无法轻易实现的功能,比如privacy;
- Layer2中ZK-rollup设计考虑了通用和兼容性,为整个生态提供一种通用的扩容解决方案。因此在ZK(E)VM的设计上或多或少牺牲了ZK-friendly。那么Layer3可以针对不同应用做进一步扩容。举个例子,在ZK场景下,一些应用可以通过更加定制化的电路设计来获得更好的performance;
- Layer2中ZK-rollup在扩容的同时需要保证Data Availability,在cost上做了妥协。因此,Layer3可以用于低成本扩容,为不同开发者提供更多扩容方案,比如Validium就是一个很好的选择。
第二点和第三点中Layer3都是在做进一步扩容,有什么区别?
- 我认为两者是截然不同的,并且解决了现在Layer2不同的痛点。第二点中的定制化扩容旨在提升性能,而第三点中提到的则是一种更加general purpose的低成本扩容方案。
3.小结
以上都可能是之后Layer3发展方向,并且也不会限定在某一种形态。一些Dapp会需要提供隐私功能的Layer3,一些dapp会受益于低成本的扩容,一些dapp会因为定制化的Layer3带来performance的提升。总之,Layer3会在Layer2的基础上进一步提升性能,创造更多可能性。
四、是否需要Layer3?
看到这你可能会产生两个疑问:
- 既然Layer3这么牛逼,是不是可以继续往上继续叠加Layer4、Layer5、Layer6…以达到更好的扩容效果?
- 以上提到的Layer3的用途都可以通过二层网络结构实现。看下面👇这张Vitalik给出的架构对比图,把上述Layer3的结构直接架在Layer1上只作Layer2也没什么问题。Validium还是能进行低成本扩容,定制化的电路设计也能为特定的项目方提供更好的performance,打造一条隐私链也合情合理。那么为什么要多此一举地在Layer2之上再做一层拓展?👇从扩容和必要性的角度逐一分析👇
1.真的可以无限扩容吗?
当然不行。
– 计算层
从ZK-rollup的角度出发(相比optimistic rollup更贴近这个疑问),在计算层理论上可以将Layer3的ZK-rollup生成的ZKP发送给Layer2的ZK-rollup,然后在Layer2继续用ZKP证明Layer3的一堆ZKPs,并生发送给Layer1做验证。
– 数据层
需要注意的是,除了计算,我们需要考虑数据存储。Rollup链依然需要将交易数据发送到Layer1(ZK-rollup可以对数据进行压缩),来保证数据可用性,让用户可以通过数据验证proof的真实性。计算时可以用一个ZKP去证明一堆ZKP,但是数据没法压缩后继续压缩,就算可以,也并不需要一个Layer3来完成,只需要将Layer2压缩后的数据用这种方式进一步压缩即可。因此,从Data Availability的角度出发,继续叠Layer并不会在明显提升scalability。
可以参考Vitalik提到的:“There's always something in the design that's just not stackable, and can only give you a scalability boost once – limits to data availability, reliance on L1 bandwidth for emergency withdrawals, or many other issues.”
2.二层还是多层网络?
我认为二层网络是当前的最佳解决方案,但未来属于多层网络。
分析这个问题,我们需要明确Layer3的价值是什么。
五、Layer3的价值
4个字概括:降本提效。
1.深入分析成本
我认为这种Layer3的架构带来最大的想象力在于对成本的优化,或许随着技术飞速迭代,之后会有更多Layer3杀手级的设计,但成本永远是我们需要直视的话题,同样也是当初设计Layer2的原因。
从降低gas fee的角度出发,现在Layer2的rollup不可能以理论速度在极短的时间(比如赶在以太坊出块时间12-14s内)将rollup链上的交易打包成batch并(生成proof)提交到Layer1验证。原因有以下两点组成:
- 原提交batch到Layer1会产生不低的成本,根据Vitalik的说法每个batch的成本> 400,000 gas;
- Rollup链上单位时间内每个batch能打包的transaction数量有限。
—> 简单说就是,提交batch存在基础成本,因此每个batch打包的交易越多,每笔交易分摊的gas fee越低。
因此rollup的设计需要权衡打包交易的时间间隔(用户体验)和每笔交易分摊的费用(用户成本)。如果过快地打包交易并提交Layer1,会增加分摊到每笔交易上的gas fee;过慢则会增加confirmation time,影响用户体验。
Layer3可能带来哪些优化?
如果我们考虑加入Layer3,比如在ZK-rollup的基础上再加一层ZK-rollup会极大地降低这提交batch到Layer1的基础成本(一个ZKP证明一堆ZKP,减少数据size)。根据Vitalik的估算,提交一个batch proof到Layer1的成本约为8000 gas。
接下来用简单的数学计算帮助大家更加直观的理解成本问题;
已知:
- 分摊到每笔交易的gas = transaction cost + batch cost / transaction amount
- 以上等式中,transaction amount = TPS * confirmation time
假设在理想情况下:
- batch cost = 400,000 gas(实际情况会更高)
- transaction cost = 368 gas(Fully optimized ERC20 transfers)
- TPS = 5(Layer2均值)
– 当前Layer2的gas情况
- confirmation time = 12s(以太坊出块时间)
分摊到每笔交易的gas = 368 + 400000 / (5 * 12)= ~7035
- confirmation time = 1h
分摊到每笔交易的gas = 368 + 400000 / (5 * 3600)= ~390
在当前二层网络的设计中,分摊到每笔交易的gas对打包batch的间隔时间(也就是用户感知到的confirmation time)非常敏感,且将confirmation time控制在一个较短的时间窗内带来的成本非常高。
– 加入Layer3的gas情况
- confirmation time = 12s(以太坊出块时间)
分摊到每笔交易的gas = 368 + 8000 / (5 * 12)= ~501
- confirmation time = 1h
分摊到每笔交易的gas = 368 + 8000 / (5 * 3600)= ~368
2.关于成本的思考
- 在Layer2的基础上Layer3有明显提升,将confirmation time从12s延长到1h(每个batch打包更多交易)并没有带来显著的gas收益。同时Layer3的设计几乎可以在一个较短的confirmation time内(12s)达到当前Layer2花费一小时confirmation的gas成本。在保证用户体验的前提下极大降低了成本。
- 另外,我认为容易被忽视的一点是,由于batch cost的降低导致transaction amount的增加同样不会为每笔交易带来太多gas成本的收益。因此,Layer3从这个角度看也更适合去做app-specific、定制化的设计(不依赖于大量的交易来抵消高昂的batch cost)。
3.浅谈一下效率
和成本一样,我认为做多层网络结构的原因一定躲不开提升效率,抛开成本和效率谈结构设计有多fashion没有任何意义。
我们知道wrapped token的实现降低了Layer2之间的互操作成本,但是效率上仍然有待提升,我们简单算一下为什么:
– Optimistic-rollup —> 14天!
由于fraud proof time,一个rollup链存(~7天)➕另一个rollup链取(~7天),~14天的验证期仍然无法避免;
– ZK-rollup —> ~12小时
避免了fraud proof time的漫长等待,相比Optimistic-rollup更快,但是有以下两个问题:
- 目前Layer2的ZK(E)VM需要做到one Virtual Machine fits all Dapps,因此设计上妥协了一些ZK-unfriendly的设计,导致proof在生成时候需要额外的时间处理无法并行计算的指令;
- 在分析成本时提到过,出于对打包交易的时间间隔和每笔交易分摊的费用的权衡,当前的ZK-rollup无法在短时间打包交易到Layer1(否则gas太贵用户不干)。
– 加入Layer3之后
- Layer3的思路就是定制化扩容、app-specific scaling,因此,ZK-rollup生成proof这部分额外花费的时间会得到最大程度的优化;
- Layer3的设计可以将跨链的交易成本降低基础上保证效率。相比于二层网络结构,无需经过Layer1,which is expensive and congested。
4.重新审视Layer3
综上所述,这种Layer3的设计就好像是在Layer1安全性的基础上,以Layer2为核心搭建出了无数子生态。
我认为一定程度上,多层网络架构进一步将Layer1的功能隔离,让Layer1专注于保障交易安全性,将计算等功能转移到每个子生态系统中。
六、另一种Layer3思路
Vitalik提出了一种新的架构设计思路,在我看来也可以算作一种多层网络架构的设计(你也可以把它看成一种二层网络结构),非常值得分析和思考:
Layer1: base layer
Layer2: batch mechanism
Layer3: rollup、validium
1.对这种架构的解读
在现在的Layer1和Layer2之间插了一个(聚合+验证+分发)层。
在这种设计中,一种batch mechanism的结构以开放式协议的形态成为架构中的Layer2;现在我们熟知的Layer2(ZK-rollup)可以接入这种协议并成为一种Layer3。
我认为整套batch mechanism的核心是以下2点:
- Batch prover将加入batch mechanism的各个ZK-rollup发送的多个proof聚合,并记录所有的new state、old state、state delta;
- Batch handler只需要验证一次聚合后的proof,验证成功后以(New state, Old state, State delta)作为验证成功的证明分发给相应的rollup链(Layer3)用于更新state。
2.Again,Layer3的价值
– 成本
相比现在Layer1的verifier contract验证不同rollup链发送的batch proof并更新state,这套新的架构相当于将gas成本在各个rollup链之间分摊。根据Vitalik的描述,分摊后的gas cost同样约为8000。因此,这种Layer3的设计在成本因素上同样产生了很大价值。
– 安全性
这样的结构设计使得Layer2(batch mechanism)成为了一个用途明确且专一,结构简单的中间层,这使得这一层在安全性和governance-minimized上具备天然的优势。
*Starkware上的SHARP正在做类似的实现,递归的证明方式使得proof可以被提交到Layer2的StarkNet上,为进一步实现Layer3创造可能性。
七、对Layer3未来的思考
- 二层网络是当前的最佳解决方案,但我相信多层网络结构一定会成为未来趋势;
- 基于现在大家对Layer3的设想,ZK相关技术对Layer3会起到极大的推动作用,并且未来Layer3的底层技术很可能离不开ZK,甚至基于ZK。因此,在ZK领域的探索对Layer3的发展非常重要;
- Layer3的概念处于早期阶段,未来一切皆有可能!但本质上Layer3的出现会是成本和效率驱动的。Layer3的出现不会改变Layer2作为general purpose scaling的格局,而是在Layer2的基础上做更加定制化的事情;
- Layer3的发展离不开扎实的Layer2。持续推进现在Layer2的生态繁荣和底层技术进展仍然是高优先级的;
Reference
https://vitalik.ca/general/2022/09/17/layer_3.html
https://medium.com/starkware/fractal-scaling-from-l2-to-l3-7fe238ecfb4f
https://medium.com/starkware/recursive-starks-78f8dd401025
https://ethereum.org/zh/layer-2/