扩容希望还是伪概念?Layer3为何饱受争议?
原创|Odaily星球日报
作者|Azuma
围绕着 Layer 3 的争议讨论近两天愈演愈烈。
一方面,Degen Chain 等 Layer 3 代表性项目的相关代币在过去数日内涨幅惊人 —— DEGEN 自身周涨幅高达 143.%;Aavegotchi 在选择转型为 Base 系 Layer 3 之后,GHST 也强势刷新了历史高点。
但另一方面,社区之内对于 Layer 3 的质疑声音也越来越响亮,Vitalik 今日还亲自下场表达了偏反对的意见: “Layer 3 并不会如魔法般地提高吞吐量。”
恰逢昨日是愚人节,许多项目便以此为焦点,略带些调侃性质地开了些关于 Layer 4、Layer 5 的玩笑,比如 dYdX 就曾开玩笑说“新版本将基于 L 4 构建”,这一玩笑甚至还被部分媒体当成了新闻传播。
那么,为何 Layer 3 会遭受如此质疑?“Rollup 上再加个 Rollup”的套娃逻辑为何不够政治正确?综合社区的讨论来看,围绕着 Layer 3 的质疑焦点主要集中在“Layer 3 是否真正具有扩容意义”之上。
从经典定义来看, Layer 2 的往往被定义为依赖于以太坊主网进行结算,具备可扩容性的网络;以此类推,Layer 3 的定义则是 依赖于 Layer 2 进行结算,更具可扩容性的网络。
Layer 3 的可行性假设
在 Layer 2 的环境下,所谓的“依赖以太坊进行结算”,在技术层面上的实现机制为:将 Layer 2 的大量交易数据打包并压缩,继而同步至以太坊网络,并通过 Calldate(早期方案)或 Blob(当前方案)的数据空间进行存储。
理想情况下,假如 Layer 2 的这套结算逻辑可行,那么 Layer 3 依赖于 Layer 2 进行结算的逻辑似乎也应该成立,其技术层面上的实现机制理应为:将 Layer 3 的大量交易数据打包并压缩,继而同步至 Layer 2 网络……
到这一步时,问题就要开始出现了。
由于 Layer 2 本身并不负责网络“最终性”的确认,而是依赖于以太坊进行, 那么理论上 Layer 3 的数据最终也应该提交至以太坊,由以太坊“一锤定音”。
对于已提交至 Layer 2 的 Layer 3 压缩数据而言,这时有两种潜在的提交模式(继续压缩 or 不再压缩),但可惜的是无论哪种模式暂时都存在一定问题。
Layer 3 数据提交的双重悖论
首先是第一种潜在的提交模式, 即 将已压缩的数据再次压缩,与其他 Layer 2 交易数据一起提交至以太坊主网。
听起来似乎很美好,但现实的情况却很残酷 —— 不行。
Vitalik 在 2022 年时曾写过一篇关于 Layer 3 的分析文章《 什么样的 Layer 3 才有意义 》,文中曾解释了为什么我们不能对交易数据进行多次压缩。
Rollup 使用了一系列压缩方案来减少交易储存的数据量,一笔简单的转账可大约 100 字节压缩至约 16 字节,一笔 EVM 兼容链上的 ERC 20 转账可从约 180 字节压缩至约 23 字节,一笔 ZK-SNARK 交易可从约 600 字节压缩至约 80 字节。所有上述案例大约都可以实现 8 倍左右的压缩效率……然而,由于 Rollup 依然需要在链上保持数据可用性,保证用户可访问并验证的所有数据,比如独立计算 Rollup 的状态,或是在现有验证节点离线时作为新的验证节点加入…… 数据可以被压缩一次,但不可以被重复压缩 ,如果可以的话,通常意味着我们可以将第二个压缩器的逻辑放入第一个中,但这也意味着我们本可利用一次压缩就能获得同样的效果。因此,“Rollup 上再套一个 Rollup”并不具备真正的扩容效果的解决方案。
简单来说,出于数据可用性考虑,对交易数据进行压缩本就存在一定的限制。
在这一前提下, 如果我们可以通过将第二次压缩的逻辑集成至第一次压缩过程中,来实现 Layer 3 数据的多重压缩,这也就意味着我们也可以对 Layer 2 数据进行多重压缩,进而在 Layer 2 层面直接达成同样的扩容效果,那为什么我们还需要 Layer 3 呢?
究其原因,压缩算法本质上就是在某种程度上移除数据冗余,使得数据变得更加紧凑,可一旦这些冗余被移除,对已经压缩过的数据再次进行压缩就变得更难,因为可被去除的冗余只会越来越少。因此, 数据压缩并不是一个可以无限重复的过程,压缩的收益也是递减的。
接着我们看第二种潜在的提交模式, 即不再对 Layer 3 数据进行压缩,而是直接与其他 Layer 2 交易一起提交至以太坊主网。
这同样让人觉得有些莫名其妙,因为整体来看, 当下限制了以太坊生态扩容效果的最主要瓶颈并不在于 Layer 2 (包括 Layer 3)上的区块空间不足,而是主网的数据可用性承载能力有限 —— 即用以存储 Layer 2 数据的 Blob 存储空间依然有限。
Monad 联合创始人 Keone Hon 此前曾发文表示,当前 Blob 的容量状况大概是每个区块(12 秒)产出 3 个 125 kb 的 Blob,即每秒 31.25 kb,鉴于一笔交易的数量约为 100 字节(相较 Vitalik 给出的数字略高),这意味着所有 Layer 2 的共享 TPS 大概是 300 左右。
在这一前提下,所有 Layer 2 (包括 Layer 3)均会受到同一个数据可用性上限的制约,这也使得即便 Layer 2 外加 Layer 3 所提供的区块空间再多,在完成“最终性”确认时也都得一个一个来排队。
这也是为什么 Vitalik 会强调 Layer 3 并不会神奇地改善以太坊生态的扩容状况。
Layer 3 是否毫无意义?
结合上述分析可知,出于压缩效率以及数据可用性上限等层面的限制,当下的 Layer 3 在通用型扩容方面并不能提供显著效果。那么这是否意味着 Layer 3 纯属“伪概念”,毫无实践意义呢?答案也并不会那么绝对。
Starkware 曾在《 分层扩容,从 L2 到 L3 》中概述了 Layer 3 的一些潜在发展方向,比如 Layer 2 可作为通用型网络运行,Layer 3 可通过强化定制性功能来作为专用型网络运行;再比如 Layer 2 可聚焦于无信任扩容,Layer 3 则可聚焦于弱信任扩容,即通过引入一定的外部信任条件来处理数据可用性等较棘手问题。
最后套用 Vitalik 在《 什么样的 Layer 3 才有意义 》中的原话结尾吧:“在 Rollup 之上再叠加一个 Rollup,尤其是当这两层采用了相同的技术机制时,显然是行不通的。然而,如果 Layer 2 和 Layer 3 有着不同的设计以及不同的目标,这样的三层构架扩容构架则是可行的。”