撰文:崔晨
Rollup 概念由以太坊扩容兴起,下一阶段的以太坊主网升级也将围绕增强 Rollup 扩容效果的主题。自 Rollup 诞生后,应用无需部署在公链上,而可以选择手续费更便宜的 Rollup,应用链也可以不再以侧链的形式与底层链相连,而是采用独立 Rollup 的形式以实现定制化的功能。本文将借助模块化区块链的概念,以模块化的角度讨论 Rollup 和应用链可选择的形式。
一、Rollup 的种类
(一)模块化概念
Rollup 的扩容方式简单理解为将交易的执行放到链下,再将交易结果传回链上,传回链上的数据和结果是可用且可验证的,以保证 Rollup 中交易的真实性。由于 Rollup 链下数据可用性和状态转换结果发布到底层链上,所以底层链能够对其进行验证,因此在理想情况下,Rollup 执行交易不仅可以实现扩容,还能与底层链捆绑安全。
在区块链模块化概念中,Rollup 等 Layer 2 的扩容方案是将区块链的执行层独立由单独的项目实现,减轻了区块链的工作。随着模块化概念的发展,区块链的每个模块组件越来越专业化,并且产生了对应的辅助工具产品,增加了区块链的可组合性,能够更便捷地生成一些定制化功能的区块链。Rollup 的种类也不止于独立执行层这一种,而是衍生出多种形式。在介绍 Rollup 种类之前,首先要理解模块化的概念。
模块化公链以 Celestia 为代表,其模块化概念将区块链分为四层:数据可用层(Data Availability)、共识层(Consensus)、结算层(Settlement)、执行层(Execution),这四种模块分别代表了交易在被记录在链上所经历的过程。数据可用性简称为 DA,用来保证交易信息在链上可用,即数据被发布到链上,让所有人接触。共识层中节点需要对区块中交易记录的顺序达成一致。结算层用于处理争议和保证交易结果的最终性,例如为执行交易提供了验证证明和欺诈证明。执行层用来执行交易并实现状态正确更新。在单一的公链上,这四部分在同一区块链上实现,加重了公链的负担,因此无法负载大量应用,将区块链进行模块化分类可以让各专业化工具辅助区块链实现更多功能和扩容。
(二)Rollup 的组合
Rollup 等 Layer 2 视为执行层为公链提供可扩展性时,会被要求将数据可用性传回底层链(Layer 1)上,并且由底层链实现结算和共识。不难发现,Rollup 的扩容效果存在短板,如果底层链的数据可用性、结算或共识速度和资源不足以维持 Rollup 时,就会限制 Rollup 中的交易速度。底层公链自身也需要同步为执行层优化,例如以太坊在区块上增加 Blob 空间,是为了增加 Rollup 的数据可用性空间和降低 Rollup 使用 Layer 1 的成本。
为了保证 Rollup 上执行结果是正确的,Rollup 可以分成 Optimistic Rollup 和 ZK Rollup 两条路径,这也是早期对 Rollup 的分类方式。现在可以由 Rollup 所选择的模块化组件进行分类,不同的模块化选择让 Rollup 具有不同特性。
例如,在 Delphi Digital 对 Rollup 的解读中,Rollup 被划分成下图的形式。在区块链被抽象出模块后,出现了针对模块的基础设施,因此 Rollup 可以借助不同的工具进行排列组合,以适应 Rollup 中的应用。Rollup 可以在四个模块中选择不同的组件,尤其体现在执行层和数据可用层。

图 1:Rollup 的模块化组件,资料来源:《The Complete Guide to Rollups》
(三)Rollup 的模块化选择和特征
下表展示了不同种 Rollup 所借助的模块组件特点。

表 1:各种 Rollup 特点
1、单层区块链(Monolithic)
对于单层区块链来说,这四种模块由同一区块链完成,因此负担较重,应用部署在单层区块链上的费用也较高。例如以太坊中的节点需要执行交易、更新以太坊状态、验证交易和状态,还需与其他节点达成共识。因此单层区块链上的交易费用相对较高,速度较慢。
2、智能合约 Rollup(SC Rollup)
智能合约 Rollup 通过在底层链上部署智能合约来接收和验证交易,也是经典 Rollup 的形式。当 Rollup 中执行交易后,Rollup 会将数据可用性传回底层链上,并由智能合约呈现状态更新结果。除了执行外,智能合约 Rollup 中交易确认的其他步骤由底层链实现。智能合约 Rollup 主要分为 Optimistic Rollup 和 ZK Rollup 两类,他们的区别在于对执行结果的验证方式分别为欺诈证明和零知识证明。
3、嵌入式 Rollup(Enshrined Rollup)
嵌入式 Rollup 的执行层不独立于底层链架构,而是作为底层链的一部分存在。在以太坊中,嵌入式 Rollup 主要围绕 ZK 方向,目的是向以太坊网络提供 zkEVM 功能,以降低以太坊上的验证成本,现在仍处于开发状态。与其他种类 Rollup 相比,嵌入式 Rollup 更像是一种分片,其中的交易会随区块结算,交易速度等性能方面相对处于劣势。
4、结算 Rollup(Settlement Rollup)
结算 Rollup 是具有结算功能的 Rollup,这一概念常常与 Rollup 之上的扩展层相关联,例如 Layer 3 概念。在这种情况下,位于 Layer 2 的 Rollup 将成为 Layer 3 Rollup 的结算层。Layer 3 最常见的形式为智能合约 Rollup,因此结算 Rollup 需要具备智能合约功能。
5、主权 Rollup(Sovereign Rollup)
主权 Rollup 是相较于智能合约 Rollup 区别的主权,重点体现在分叉方面。在智能合约 Rollup 中,分叉规则由智能合约决定,进行分叉只能升级智能合约,因此智能合约无法修改时默认 Rollup 没有分叉的能力。在主权 Rollup 中,规则由客户端决定。虽然数据可用性是发布在底层链上的,但对数据可用性的解读由客户端完成,因此结算功能也由主权 Rollup 负责。
这一过程类似于以太坊的共识转换过程,当以太坊转为 PoS 机制时,节点需要下载 PoS 客户端用于共识,原有的 PoW 客户端会升级去掉共识层的功能。虽然理论上节点可以选择不升级,继续通过旧的 PoW 客户端挖矿,但在难度炸弹之后 PoW 挖矿的经济收益微乎其微,并且不受以太坊基金会支持,所以没有节点坚持 PoW。在主权 Rollup 中,数据会发布在底层链上保证可用性,但用户可以通过不同客户端对 Rollup 进行分叉,并且不会影响其他客户端版本解读的内容。
6、链下 DA
Rollup 将数据可用性传回链上是保证其安全的重要步骤,但链上成本阻碍了 Rollup 降低成本和提高效率,于是有些项目将数据可用性放在链下保管以节约成本,例如 Validium。曾经 Validium 被视为一种特殊的 Layer 2,但由于默认以太坊 Layer 2 要与以太坊的安全性相一致,不在以太坊上传 DA 的项目很难确认其安全性的原因,以太坊基金会成员公开宣布不利用以太坊作为 DA 层的不会被视为以太坊的 Layer 2。
(四)关于开放 Rollup 和单一应用 Rollup
除了以模块化的分类方式外,Rollup 还能以承载应用来划分,这是更明显的区别,可以分为两类:开放 Rollup 和单一应用 Rollup,他们都可以通过以上文介绍的方式与底层链相连。开放 Rollup 中的功能更通用,会采用 EVM 虚拟机、允许其他应用部署在 Rollup 上,例如 Arbitrum 和 zksync。而单一应用 Rollup 只为一个应用构建,例如 Loopring。单一应用 Rollup 的状态转换功能和虚拟机可以针对应用来定制,提高其性能并且避免不必要的资源浪费,需要高性能的应用更需要这类 Rollup。
应用成为独立 Rollup 与底层链的连接成本要远低于直接部署在底层链上,同时独立 Rollup 还能为应用实现定制化的设计。市场上也出现了针对构建单一应用 Rollup 的工具,帮助他们开发 Rollup,降低部署成本。有些应用还会选择成为 Layer 3,通过一条 Rollup 与底层链相连,这样成本更低。