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