← 全部笔记

L2 排序器的信任边界

入门 扩容

Rollup 把执行搬到链下,把数据与验证留在链上,代价是需要有人决定交易的顺序。 这个角色叫排序器(sequencer)。它在绝大多数时间里由单一运营方运行, 于是「Layer 2 继承了 Layer 1 的安全性」这句话需要加上一条限定:继承的是状态正确性,不包括服务可用性与抗审查性。

一、为什么排序权必须集中

假设允许任何人向 Layer 2 提交区块。两个提议者同时打包了包含同一笔余额的两套互斥交易, 网络需要在两者之间收敛。收敛机制只有两种:要么引入与 L1 类似的共识过程(那就等于又造了一条链,扩容意义消失), 要么由某个规则决定谁说了算。Rollup 选择了后者,并且把这个「说了算」的角色固定下来: 只有一个进程有权定义当前的交易顺序。

集中排序可以缩短预确认的等待时间,用户在 L1 结算之前就能收到接收反馈。 但预确认不等同于最终确认:排序结果与服务可用性都受到单一运营方的影响, 因此需要明确运营边界、故障恢复方式与独立验证路径。

二、排序器实际承担的四项职责

  1. 接收与排序。决定请求的执行顺序,进而影响执行结果与系统资源分配。
  2. 预确认(preconfirmation)。在批量数据上 L1 之前,向钱包与前端返回一个「我打算把它放在这里」的承诺。这是服务承诺,不是密码学保证。
  3. 构造批次并提交。把一段时间内的交易压缩成 calldata 或 blob 发布到 L1,供任何人重建状态。
  4. 生成证明输入。乐观 Rollup 中它提交状态根并等待挑战窗口;有效性 Rollup 中它为证明者提供执行 witness。

第 3 项是安全性的锚点,第 1、2 项则是信任的缺口。理解这条分界线,就能理解下面所有失败模式。

三、三种失败模式

1. 审查:不打包你的交易

排序器可以简单地忽略某笔交易。它无法伪造状态、无法双花、无法拒绝执行已上链的交易, 但可以让你提交的交易永远不进入批次。在开放准入的 L1 上,矿工之间的竞争使审查成本很高; 在单一排序器的 L2 上,审查是零成本的默认能力。

2. 排序机制:执行顺序与费用分配

不同的执行顺序可能产生不同的结果。若排序规则由单一运营方决定, 使用者需要了解优先级如何确定、费用如何分配,以及相关规则是否公开且可验证。 评估重点是排序的透明度与公平性,而不是把顺序差异视为获利机会。

3. 停机:运营方出问题

排序器宕机、软件缺陷、云端账号被封、法律行动,都会导致 L2 停止接收交易。 此时链上资产并未丢失——批次与状态仍在 L1 上——但用户无法正常使用, 直到运营方恢复或用户自行走退出通道。历史上多个 Rollup 都出现过数小时的排序器中断, 其中部分伴随强制暂停,部分由运营方以「非共识层故障」定性。

正确性与可用性需要分别评估 在证明系统、数据可用性和验证逻辑正常工作的前提下,L1 验证可以约束不符合规则的状态转换。 但排序器仍可能影响服务的响应时间、执行顺序和数据接收。评估具体系统时,还需检查升级权限、 退出通道与运维机制,不能把某一层的保证等同于整个系统没有风险。

四、补偿机制:强制包含通道

所有严肃的 Rollup 设计都提供一条绕过排序器的路径,思路一致: 把交易直接发到 L1 上的收件箱合约,排序器被协议要求在一定时间内把它纳入某个批次。

以 OP Stack 为例,L1 上部署了一个收件箱(Inbox)合约,用户调用其 enqueue 路径提交一段已签名的 L2 交易。 排序器必须读取该 L1 事件并把它排进后续区块;协议规定了一个最长等待窗口, 超过该窗口仍未包含,则任何用户都可以触发「强制包含」逻辑, 由 L1 上的合约接管该笔交易的排序义务。Arbitrum 的对应机制称为延迟消息(delayed messages): 交易被写入慢序列后,一旦快序列停滞超过阈值,慢序列开始被消费。

代价也很明确:走这条通道需要支付 L1 gas,等待时间以分钟到小时计, 且只能保证「被包含」,不能保证「被放在你想要的位置」。 因此它是逃生门,不是日常路径。评估一个 L2 的抗审查性时, 真正要问的是三个可验证的问题:这条通道的窗口有多长、触发它是否需要许可、以及它是否在近期被真实使用过。

五、把顺序权拆开:共享排序器与显式拍卖

行业对集中排序的回应分两条路。

第一条是把排序权市场化。与其让运营方隐式占有 MEV,不如把它公开拍卖, 收入用于补贴网络或返还用户。Arbitrum 的时间锁(Timeboost)即属此类: 买家通过持续竞价获得一条「快速通道」,其交易在很短的锁定窗口内优先于普通交易执行, 而普通交易仍按时间戳顺序处理,拍卖收入被用于抵扣数据可用性费用。 它没有消除集中,而是把隐性特权变成了显性、可计量、有价格的东西。

第二条是把排序从单条链上摘下来,交给一个独立的中继网络。 共享排序器(shared sequencing)的设想是多个 Rollup 共用一组排序节点, 从而获得跨 Rollup 的原子组合性与统一的可信中性排序层。代价是引入一个新的角色集合: 排序节点的准入方式、它们之间的共识算法、以及失效时各条链的退出协议。 这条路线目前仍在早期,其安全性论证依赖「链可以随时退回自建排序」这一退出假设是否真的可行。

六、用户侧如何量化自己的暴露

按角色拆分的信任假设
问题谁负责失败后果
状态转换是否正确L1 验证合约 / 证明系统资产损失(乐观窗口内可被挑战)
交易能否被包含排序器 + 强制包含通道延迟与额外成本
交易顺序是否公平排序器MEV 损失、被夹
预确认是否兑现排序器短暂回滚,需重发
数据是否可用L1 发布 + DA 委员会(部分方案)无法自行退出,依赖第三方重建

一个可操作的做法是:把上表中「失败后果」最不能接受的那几行,逐条对照项目的技术文档确认由谁承担。 如果一个 Rollup 的数据可用性由少数几个签名节点保证而非全部发布到 L1, 那么它的信任假设已经从「排序器可信」扩展到「DA 委员会可信」,这在严格定义下不再是 Rollup 而是 Validium 一类结构。

排序器不是设计缺陷,而是把共识成本移出主链的必然产物。 需要做的不是消灭它,而是让它的权力边界可验证:哪些操作它无论如何都做不到, 哪些操作它做得到但存在有明确时限的绕行通道,哪些操作目前只能靠运营方的承诺。 把这三类分清楚,L2 的信任成本才是可讨论的。

  1. V. Buterin, The Three Layers of Scalability / Escalating security of L2 violence, 2021-2022 —— 关于排序器审查与退出路径的分析。
  2. OP Stack 规范:Deposits and forced inclusions 章节。
  3. Arbitrum 文档:Arbitrum OS / Delayed messages。
  4. Arbitrum Timeboost 设计与部署说明,2024-2025。