模块化区块链的启示:从Rollup到SCP

原文首发于 PAKA 公众号。

作者: MiddleX

与我交流:

  • Twitter:@middlex0

  • telegram:VX:xuezhijie156


经典 Rollups

L2 扩容是以太坊永恒的主题,以太坊上的 L2 的 形态经历了漫长的演化,最终 Rollups 成为了目前的主流方案。

Rollups 的 Sequencers (排序者)会先排序交易、打包区块,对交易形成一个软共识,然后再提交到 L1,被 L1 验证后达成硬共识。

L1 会对 L2 提交的区块进行数据完整性和状态有效性的验证,但肯定不能通过重新跑一遍交易来验证,如果那么做,相当于没有扩容。因此,才会有OP(欺诈证明)和ZK(零知识证明)这样的懒惰验证方法:

  • OP的意思是,我作为L1 ,不直接验证,任何第三方都可以来验证,发现不对的地方告诉我,我再来核实,核实之后执行惩罚( OP Rollup 在 以太坊上部署的合约中锁仓了 Sequencers 的押金)。如果过了窗口期,没有人告诉我有什么不对,我就认为是对的。

  • ZK的意思是,你生成一个有效性证明,我来验证这个有效性证明。如果这个证明是对的,那么数据就是完整的,状态就是有效的。换句话说,验证这个证明等效于重算整个区块,但验证的开销远远小于重算区块。

OP Rollups 和 ZK Rollups 我们将其统称为经典 Rollups,它们是 Rollups 的 1.0 形态。值得一提的是,波卡的平行链属于 ZK-Rollup 的一种,平行链的收集者在打包好区块后,会将一个 ZK-SNARK 证明和区块一并提交给中继链。


模块化区块链视角下的 Rollup

模块化区块链是最近很火的一个概念,大家都很喜欢谈论它。它给了我们研究和设计区块链的一个新视角,也催生出了几类新的 Rollup 形态。

模块化区块链概念的创造者 Celestia 将区块链划分为这样的层级结构:

  • 共识层:使得交易达成最终性,并对最新状态达成共识;

  • 数据可用性层(或称存储层):永久的,不可篡改的存储交易,保证历史交易的可访问性;

  • 执行层(或称计算层):负责根据交易计算最新状态;

  • 结算层:指的是执行层如何向共识层和存储层提交交易及状态,并保证交易数据的完整性和状态的有效性。或者反过来讲,共识层和存储层如何验证执行层提交的交易的完整性和状态的有效性。

结算层是个蹩脚的概念,与其称之为结算层,不如称之为结算策略。因为“层”的称呼容易让人产生误解,以为它存在某种实体。如果你试图问:某 Rollup 的结算层是在哪条链上呢?那么你已经陷入这种误解。你不需要纠结于结算层在哪条链上,它只是一种策略。

另外,共识层和存储层的联系是很紧密的,只有二者都安全的时候,区块链才是安全的,因此两者合起来才是完整的安全层。

因此,下图才是对模块化区块链概念更好的诠释。

剥离存储层:双 L1 式的 Rollup

经典 Rollups 的安全层是统一的,存储层和共识层在同一条 L1 上。在模块化区块链概念的启发下,一些 L2 尝试将存储层剥离出来,例如 Celestium。

Celestium 将以太坊作为共识层,而将 Celestia 作为存储层,通过这种拆分,减少对昂贵的以太坊存储资源的占用,转而使用较为廉价的 Celestia 存储交易数据。这样做的确可以创造更便宜的 Rollup,但相比经典 Rollup,信任假设增加了——Celestia 必须是安全的。作为一个L2, Celestium 的安全性依附于两个 L1。

随着 danksharding 的推出,以太坊自身也会有一个和 Celestia 一样高效的存储层,届时各类剥离存储层的 Rollup 可能会回归为经典 Rollup。

主权 Rollup:不是 Rollup 的 Rollup

主权 Rollup 也是模块化语境下,被新发明出来的一个概念。主权 Rollup 将交易数据发布到存储层,存储层对其提交的交易数据不会做任何验证,来者不拒。这意味着存储层存储的是一个“脏账本”,其中有有效数据,也有无效数据。具体哪些是有效数据,哪些是无效数据,是主权 Rollup 自己定义的。换句话说,主权 Rollup 是数据的解释层,定义数据的解释规则,不同的解释规则将形成不同的分叉。

根据主权 Rollup 概念的发明者 Celestia 的宣称,主权 Rollup 核心特性是:自主分叉。但“自主分叉”这个特性实际上需要主权 Rollup 有一个强大的社区共识才有可能实现,否则自主分叉的含义就会变为:项目方可以随时修改数据解释规则。

这意味着,主权 Rollup 的共识层在于自身,其安全性并没有依附于存储层,因此它不是 L2, 而是一个独立的 L1,一个将数据可用性外包的 L1。较真一点,主权 Rollup 叫 Rollup 是不合适的,应该叫 Roll-beside 或者 Rollout(不是“滚一边去”和“滚出去”的意思,你懂……)

本文一家之言,认为独立负责自身安全的区块链是 L1,将安全性依托于其他 L1 的是 L2(被依托的 L1 不限于以太坊)。按照这个定义,主权Rollup 不是 L2,除此之外,轻节点侧链、Plasma、Validium 都不是 L2,而是一个新的 L1,Cosmos 的 Zones 也不是 L2,而是建立了互操作性的 L1 集群。

基于存储的共识范式(SCP)

既然主权 rollup 因为数据解释规则在自身,而不在存储层,导致它不继承存储层的安全性,那我们是否可以设想:将数据解释规则也提交到存储层呢?——这就是 Arweave 提出的基于存储的共识范式(Storage-based Consensus Paradigm,简称 SCP)的核心思想。

L2 将程序代码提交到存储层,然后把交易数据也不断提交到存储层,任何人都可以用存储层的程序代码重新跑一遍交易数据,得到一致的最新状态。这样就实现了对存储层安全性的继承,从而让存储层成为了 L1。所以,基于 SCP 的 L2 虽然不叫 Rollup,却是真正的、如假包换的 Rollup。

这是一种新型的 Rollup,我们可以称之为 Rollup2.0,在我看来,Arweave 大可以给 SCP 取一个更贴脸的名字——Code-Contained Rollup,加入 Rollups 的大叙事中来。

对于 SCP 应用而言,L1 虽然存的也是一个脏账本,但无效的数据不会被节点索引。与经典 Rollups 相比,SCP 范式下,L2 在不需要 L1 执行任何的计算(包括数据验证和状态计算)的前提下,实现了对 L1 的安全性依附。这带来两个关键的特性:

  • L2 的性能几乎不受 L1 性能的限制。L2 可以放飞自我,实现比肩 Web2 的TPS。

  • L2 的虚拟机环境不受 L1 的限制,因为 L1 只是负责存储,并不需要在计算层面与 L2 有任何的兼容性,这样一来,基于 SCP 范式,开发者可以使用任何自己熟悉的语言来开发 L2,它甚至没必要用区块链的结构。

SCP 范式的 L2,尽管不能自主分叉,但可以像经典 Rollup 那样,通过重新部署来实现升级。SCP 范式的缺点在于互操作性受到了一定的制约:

  • 脏账本策略导致与之进行互操作的应用或者账本无法仅凭“交易存在于链上”的证明判断交易的有效性,而是需要在链下重新跑全部交易数据;

  • 自定义虚拟机虽然给了开发者自由度,但不同虚拟机环境之间很难建立信任最小化的跨账本桥。

尽管如此,SCP 仍是一种非常有潜力的范式。对于一些想要改造为 Web3 版本的 Web2 应用而言,并不需要像 DeFi 应用那样迫切需要互操作性,重要的是低成本的迁移。

Web2 应用只需改造两个点:

  • 改为基于数字签名的账户系统

  • 改为将数据存储到链上

就可以成为真正意义上的 Web3 应用,获得 Web3 应用的关键特性

  • 用户自由准入,不受审查

  • 数据不可篡改,用户的装备、资产不可剥夺

SCP 应用可以基于任意具备永久存储功能的区块链来开发,但作为一个专门的存储型公链,Arweave 会更有优势,一来存储的费用相对低廉,二来 Arweave 已经为 SCP 应用的开发提供了很多开发工具、资源和基础设施,事实上,Arweave 上已经有一个初具规模的 SCP 应用生态。

总结

我们漫谈了经典 Rollup 和模块化区块链语境中的新型 Rollup ,它们的特性对比如下图:

总体来看:

1、经典 Rollup ,也就是 Rollup 1.0 ,仍占据主导地位,但随着以太坊资源竞争的进一步加剧,很多Rollup 会选择更廉价的数据可用性层,尽管这样在安全性上有一定的妥协。

2、Danksharding 可以提升以太坊的存储性能,有希望让 Rollups 的数据可用性层回归以太坊,但 Danksharding 的实施周期会很长。

3、主权 Rollup 不是 Rollup,也不是 L2,而是一个将数据可用性外包的独立 L1。

4、SCP 范式是一类值得业内广泛关注的新型 Rollup,我愿称之为 Rollup 2.0 ,也是 Web2 应用向 Web3 迁移的最佳路径。有可能为我们带来一波 Web3 应用的寒武纪大爆发。

参考资料

Subscribe to 0xmiddle
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.