二层网络是当前的最佳解决方案,但我相信多层网络结构一定会成为未来趋势。
撰文:Yihan Xu,Foresight Ventures
Layer1 是底层区块链。Ethereum、Bitcoin、Solana 等公链都是 Layer1 区块链,它们是区块链网络的基础,各种 Layer2 都搭建在这些公链之上。
Layer2 指以太坊扩容方案。各条 Layer2 链都是单独的区块链,在保证安全性的基础上提升交易速度和 TPS。比如 Zksync、Starkware、Arbitrum、Optimism 都是不同的 Layer2 解决方案。
简单来说 Layer3 希望在 Layer2 的基础上完成更加定制化的设计,解决目前 Layer2 无法实现 / 实现起来比较困难的功能(包括定制化扩容、privacy 等),从而进一步降低成本,提升效率。
但 Layer3 的想法还在非常早期阶段,现在下定论显然有失偏颇。Layer3 的最终形态需要基于开发者探索、实战检验和实际需求。
现在有很多大佬已经提出了相关的设计思路,通过 StarkWare 提出的多层网络结构图(Layer3 的其中一种构建思路),我会做进一步的分析和总结,帮助大家理清思路。
以太坊多层网络的实践设想最早由 StarkWare 团队在文章「Fractal Scaling: From L2 to L3」中提出。在这种设计中,现在的 Layer2 是一种 general purpose 的扩容,在此之上,Layer3 做定制化的扩容。下面我会对图中提到的方案逐个分析(从左到右)。
在 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 降低成本。
我们知道 Layer2 的电路设计是为了服务所有 Dapp,这意味着工程师设计电路的首要考虑是兼容性。因此现在的电路设计一定程度上牺牲了效率,并没有针对特定的 Dapps 进行优化。这对于强交互性的 Dapp 来说是一种的瓶颈,比如注重游戏体验和实时玩家交互的 web3 游戏。App-specific StarkNet 可以为帮助对性能要求较高的 Dapp 定制化地进行设计以达到更高的 performance。
我认为在这个场景下 Layer2 解决用户编程和可组合性的问题,而 Layer3 定制化地针对项目方提供更高的性能。比如一个 Dapp 不需要和其他 Dapp 共享电路资源,并获得定制化的电路设计,或是由 Layer3 提供更高效的存储结构会数据压缩服务。
类似于 StarkEx Volition,在 Layer3 中将 Validiums 作为一种低成本的扩容方案,让一些对价格敏感的 Dapp 获得更低的成本。
对隐私功能的实现,某种程度上也可以看作 app-specific design。虽然 ZK-rollup 对 privacy 友好,但出于去中心化和安全性的考虑,用户的交易数据仍需要在压缩后通过 calldata 发布到 Layer1 作为 history log,让所有用户都可以成为 prover 进行验证。因此以扩容为目的的 rollup 并不能实现 privacy。Layer3 的能很方便的解决了这一痛点,对于一些强隐私需求的用户,定制化地在 rollup 甚至 rollup of rollup 的基础上实现隐私功能。
看完以上分析,Layer3 应该已经不那么抽象了,下面总结一下这种 Layer3 的设计到底想解决什么问题,帮助大家进一步建立对 Layer3 认知。
第二点和第三点中 Layer3 都是在做进一步扩容,有什么区别?
我认为两者是截然不同的,并且解决了现在 Layer2 不同的痛点。第二点中的定制化扩容旨在提升性能,而第三点中提到的则是一种更加 general purpose 的低成本扩容方案。
以上都可能是之后 Layer3 发展方向,并且也不会限定在某一种形态。一些 Dapp 会需要提供隐私功能的 Layer3,一些 dapp 会受益于低成本的扩容,一些 dapp 会因为定制化的 Layer3 带来 performance 的提升。总之,Layer3 会在 Layer2 的基础上进一步提升性能,创造更多可能性。
看到这你可能会产生两个疑问:
👇从扩容和必要性的角度逐一分析👇
当然不行。
从 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.」
我认为二层网络是当前的最佳解决方案,但未来属于多层网络。
分析这个问题,我们需要明确 Layer3 的价值是什么。
4 个字概括:降本提效。
我认为这种 Layer3 的架构带来最大的想象力在于对成本的优化,或许随着技术飞速迭代,之后会有更多 Layer3 杀手级的设计,但成本永远是我们需要直视的话题,同样也是当初设计 Layer2 的原因。
从降低 gas fee 的角度出发,现在 Layer2 的 rollup 不可能以理论速度在极短的时间(比如赶在以太坊出块时间 12-14s 内)将 rollup 链上的交易打包成 batch 并(生成 proof)提交到 Layer1 验证。原因有以下两点组成:
—> 简单说就是,提交 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 对打包 batch 的间隔时间(也就是用户感知到的 confirmation time)非常敏感,且将 confirmation time 控制在一个较短的时间窗内带来的成本非常高。
和成本一样,我认为做多层网络结构的原因一定躲不开提升效率,抛开成本和效率谈结构设计有多 fashion 没有任何意义。
我们知道 wrapped token 的实现降低了 Layer2 之间的互操作成本,但是效率上仍然有待提升,我们简单算一下为什么:
由于 fraud proof time,一个 rollup 链存(~7 天)➕另一个 rollup 链取(~7 天),~14 天的验证期仍然无法避免;
避免了 fraud proof time 的漫长等待,相比 Optimistic-rollup 更快,但是有以下两个问题:
综上所述,这种 Layer3 的设计就好像是在 Layer1 安全性的基础上,以 Layer2 为核心搭建出了无数子生态。
我认为一定程度上,多层网络架构进一步将 Layer1 的功能隔离,让 Layer1 专注于保障交易安全性,将计算等功能转移到每个子生态系统中。
Vitalik 提出了一种新的架构设计思路,在我看来也可以算作一种多层网络架构的设计(你也可以把它看成一种二层网络结构),非常值得分析和思考:
在现在的 Layer1 和 Layer2 之间插了一个(聚合 + 验证 + 分发)层。
在这种设计中,一种 batch mechanism 的结构以开放式协议的形态成为架构中的 Layer2;现在我们熟知的 Layer2(ZK-rollup)可以接入这种协议并成为一种 Layer3。
我认为整套 batch mechanism 的核心是以下 2 点:
相比现在 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 创造可能性。
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/
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。