Rollup 的新分类:Sovereign 与 Based Rollup

作者:NIC Lin 来源:medium

Rollup

不管是Validity Rollup还是Optimistic Rollup,它们都会将资料上传到L1(比如以太坊),让所有人都可以通过存取L1来存在取到该Rollup的资料,并借此导出Rollup最新的状态,比如爱丽丝有10 USDT、鲍勃有5 USDT。

没有把资料上传到 L1 的就不仅仅属于 Rollup(例如 Validium、zkPorter 或者 Arbitrum AnyTrust),它们不是这篇文章要讨论的对象。其他文章也不会讨论 Rollup 如何验证状态的有效,也就是有效性Rollup 和 Optimistic Rollup 的区别。

本篇第一部分将介绍Sovereign Rollup。Sovereign Rollup 如其名,是属于拥有自主权的Rollup,进行Rollup 版本升级或硬分叉都发生在Sovereign Rollup上,不像大家现在所熟悉的 Rollup 我们(以下简称 Classic Rollup),Classic Rollup 进行升级、硬分叉的地方不在 Classic Rollup 上,而在 L1 的 Rollup 上:在 L1 的 Rollup 由多签钱包或治理投票执行版升级。也是由一个L1上的结合来决定一个 Rollup 目标之前应该用哪个版本。而且如果 L1 发针对应该 Rollup 的攻击,比如攻击治理机制或者攻击 Rollup合约本身,应该 Rollup 都是会受到影响的。相对地,因为 Sovereign Rollup 只是单纯把L1 当成为放资材料的地方,那么所有 Sovereign Rollup 成员都可以自己在链下决定目标之前应该使用哪个版本,而不受管 L1 发生什么事,只要 L 1 本身没有被攻击(例如发生 Re-org 或者是链停摆), Sovereign Rollup 就不会受到影响。

第二部分将介绍 Based Rollup。Based Rollup 移去 Sequencer 这样的角度,将交易排序的权力交给 L1 的矿工、Validator、MEV Searcher 等。不只让排序交易变得更去中心化,同时也能简化设计、移除系统允许多少元器件。

Sovereign Rollup 主权汇总

Data Availability Layer and Settlement Layer(数据可用性层和结算层)

Classic Rollup 例如Arbitrum、Optimism、StarkNet 等等,除了把Ethereum(L1)当作放资料的地方(也就是Data Availability Layer),还同时将Ethereum 当作Settlement Layer:在Ethereum 上进行结算,把L2 的状态(也就是L2 各个地址的余额)写到L1 上。

为什么会需要把L2 状态写到L1 上?因为这样L2 和L1 就能互通讯息、互通资产:L1/L2 的dApp 能同步讯息并合作、L1 的ETH 能安全地在L1/L2 之间流转、L2 的ARB/OP 也能安全地在L1/L2 之间流转。

L1能读到L2状态,就能安全地进行消息传送,L1/L2之间就能互通有无

而 Sovereign Rollup 即拿掉 Settlement Layer(或者说将自己改变成 Settlement Layer),单一将 L1 作为 Data Availability Layer 使用。

L1 只读取到 Sovereign Rollup 放到 L1 的区块或交易资料,但不知道 L2 最新状态,也没法交互

为什么要拿掉Settlement Layer?有不同理由或原因:

  1. 如同开头所述,如果Rollup 的Settlement Layer 在L1,则它将会受L1 所影响,不管是要升级还是被攻击

  2. 可能L1 本身不支援复杂的运算来做到纪录Rollup 状态并利用这个状态进行讯息资产的互通等功能,例如像是在Celestia上你只能单纯放资料上去,或像是在Bitcoin 上你只能进行能力有限的运算,这样的L1 也就没办法成为Settlement Layer

  3. 或许该Rollup 本身就不需要另外一条链来作为Settlement Layer,它有自己的原生代币、生态,不需和L1 互通资产

Sovereign Rollup 运作方式

Sovereign Rollup 单纯将L1 作为Data Availability Layer,把资料上传到L1,仰赖L1 确保资料可得且资料排序不会改变。Sovereign Rollup 的节点则靠着读取L1 上的资料并进行解读,来算出该Sovereign Rollup 当前的最新状态。「解读、算出」代表的其实就是Sovereign Rollup 的共识规则、State Transition Function:怎么从L1 资料中筛选出符合该Sovereign Rollup 格式、规则的区块和交易、筛选后怎么验证这些区块和交易、验证后怎么执行这些交易来算出最新的状态。

Sovereign Rollup 节点从 L1 资料中筛选出自己的区域,并解读、算出最新状态

如果两个 Sovereign Rollup 的节点是不同版本的,就可能会读出不同的资料、或者是算出不同的最新状态,也因此这两个节点就不会在同一条链上,它们各自所见的其实就是两条分开的链条的其中一条。

不同版本本的节点可能会得到不同的状态,也只是分岐到不同的链接上

这其实就和你跑不同版本的Ethereum 节点一样,两个版本有可能不会是同一条链。例如硬分叉后,忘记更新节点版本、不愿意更新节点版本的人就会自然地留在原本的链上(例如ETC、ETHPoW),而更新节点版本的人就会在新的链上(ETH)。

看到这边读者应该也知道为什么它会被称作Sovereign Rollup 了,因为在Sovereign Rollup 中大家可以各自按照自己群体的(社会)共识,去选择节点版本、去解读资料。如果今天该Sovereign Rollup 社群出现像是ETHPoW vs ETH 的分歧,那就是大家各走各的,选择不同的节点版本去解读资料,但资料还是原本那一份,没有改变过。

注:当然分叉后,各自版本的节点就会上传符合自己规则的资料到L1,届时两边都会直接过滤掉对方上传的资料。

在中间的时间点下面的节点分到了v1.1.2版,之后彼的区块就各独立了

有哪些Sovereign Rollup?

目前没有什么 Sovereign Rollup 的例子,不过随着区块链的模组化设计风潮越来越热,肯定会有许多 Sovereign Rollup 出现。例如Celestia 正在设计的模组化框架Rollkit可以透过Cosmos SDK 打造一个Sovereign Rollup。不像原本使用 Cosmos SDK 打造的链(一个L1)会需要执行Tendermint 共识来决定交易排序,该 Sovereign Rollup 可以像目前常见的Rollup 一样使用单一 Sequencer 来排序交易,省去需要多个共识节点并仰赖其安全性的困扰以及执行共识演算法所消耗的资源。且该 Sovereign Rollup 是将交易资料上传到Celestia,但同时因为是 Rollup 所以不会受L1 影响(例如升级或被攻击)。

注1:Rollkit 后来也支援了将Bitcoin 当作Data Availability Layer ,这样的Rollup能继承Bitcoin 安全性但throughput 就会受限于Bitcoin 。
注2:基本上基于Celestia 的链都可以称作Sovereign Rollup。

或是假设Arbitrum 不再使用Ethereum 当作Settlement Layer、不再需要和Ethereum 互通讯息或资产,单纯把Ethereum 当成放资料的地方,则这样的Arbitrum 也会成为一个Sovereign Rollup。

Settlement Rollup

另外也有像是Settlement Rollup 这样的定义出现,不过它基本上就是Sovereign Rollup,然后这个Sovereign Rollup 还会是其他链的Settlement Layer。也就是说,如果一个Sovereign Rollup 上面还会有其他链、其他Rollup 将它当作Settlement Layer 的话,这个Sovereign Rollup 就可以称作Settlement Rollup。

注:要能成为其他链的Settlement Layer 必须要有基本的智能合约功能,让两边能互通讯息、资产。

如果Ethereum 今天改成把链的资料都上传到Celestia,那这样的Ethereum 就会是Celestia 上的Sovereign Rollup,且同时也是Settlement Rollup,因为Ethereum 上面还有许多链、许多Rollup 把它当作Settlement Layer。

Ethereum 是Celestia 上的Sovereign Rollup,也是Settlement Rollup

注:或许未来大家逐渐熟悉模组化、熟悉不同Layer 的功能,不再从Rollup 角度出发,Sovereign Rollup 或Settlement Rollup 这样的名词就会渐渐消失。反正重要的是你这条链(不管是L1 还是L2 还是L3 etc.)怎么设计、怎么做出取舍,为不同Layer 选择适合的建造工具。

Based Rollup

另一个最近出现的Rollup 分类是Based Rollup,又或著称L1-sequenced Rollup。Based Rollup 的 Based 指的是在排序交易这件事上,Rollup 不是交给一个 Sequencer(或多个 Sequencer)来排序交易,而是完全交给L1 的矿工、Validator 或 MEV Searcher 等等来排序交易。Classic Rollup 将资料上传到L1 时,L1 Rollup 合约会检查是不是符合资格的Sequencer 所上传的,而Based Rollup 则是没有限制,任何人都可以上传。

任何人都可以上传 Based Rollup 的区块

Based Rollup 最大的优点就是没有 Sequencer,也就没有单点故障的问题或什至需要担心Sequencer 有完全交易排序权力的问题,也就是不需要担心Sequencer 当机导致链停摆或故意不收特定使用者的交易,或是担心Sequencer 会恶意套取使用者的MEV。Based Rollup 完全继承L1 在出块上的去中心化程度。

Based Rollup 有以下优点:

使用者离开 Rollup 的成本很低

一般Rollup 为了避免Sequencer 故意不收入特定使用者交易或是Sequencer 停摆导致使用者无法离开Rollup,会设计一套Force Inclusion 机制或是Escape Hatch 机制来让使用者可以不透过Sequencer 而直接到L1 安插自己的交易到L2 区块中。但这样的设计第一个代价是成本高,使用者必须要自己付出L1 矿工费去安插交易,第二个代价是从L1 安插的交易可能会影响Sequencer 打包L2 区块的过程:有可能L1 安插的交易会导致Sequencer 准备收入到L2 区块里交易无效,例如Alice 在L1 安插的交易把钱都转给Bob,导致Alice 在L2 区块里转钱给Carol 的交易失败。

Sequencer 收到Alice 的交易后,确认交易结果并放进下一个区块中

但Alice 直接透过Force Inclusion 将另一笔交易直接送到L1,导致Sequencer 收到的Alice 交易失败

Arbitrum 为了避免L1 安插的交易影响Sequencer 打包L2 区块的过程,所以L1 安插的交易不会马上生效,需要等待Sequencer 主动申请将该交易收入最新一个区块才会生效,或如果Sequencer 都没反应,过一段时间后就会强制生效。Optimism 则是允许交易立即生效,如果L1 安插的交易影响到L2 区块里的交易,Sequencer 必须要自己想办法处理。可以看这篇介绍了解更多Arbitrum 及Optimism 在处理L1 安插交易的比较。

设计简单许多

Based Rollup 比一般 Rollup 少了 Sequencer 的角色,也就少了硬体的负担(不必担心 Sequencer 机器负载问题)以及任何为了让排序交易更公平的机制(例如去中心化Sequencer 的机制)。然后也不需要Force Inclusion/Escape Hatch 机制,包含L1 的相关合约及相关链下工具来方便使用者能自己在L1 安插交易。

但Based Rollup 也有一些缺点:

没有交易提前确认的服务

有Sequencer 的话,Sequencer 可以很快告诉使用者他的交易执行结果。只要使用者相信Sequencer,就能立刻确认交易结果,不需等待交易上传到L1。

Based Rollup 中,Alice 等到交易上传到L1 才相信自己的交易被收入,要等至少一个L1 区块的时间

一般Rollup 中,如果Alice 相信Sequencer 会收她的交易的话,马上就能确认交易是

会被收入失去 MEV 收益来源

MEV 不再交由Sequencer 来把关、提取,而是交给L1,因此L2 本身没办法获得MEV 收益。可以透过设计出块权利的竞标机制来捕捉MEV 收益,但相对地会拉高L1 参与者参与出块的门槛,也就降低去中心化程度,且引入竞标机制也带来一定复杂度。

如有疑问联系邮箱:微信:ETH_88889
*本文转载自网络转载,版权归原作者所有。本站只是转载分享,不代表赞同其中观点。请自行判断风险,本文不构成投资建议。*