
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 有着不同的设计以及不同的目标,这样的三层扩容构架则是可行的。”