前言
排序器(Sequencer)是以太坊扩容方案 Rollup 中的核心组件之一,负责对交易进行排序,并执行区块创建、交易接受、交易排序、交易执行以及交易数据提交等相关任务。随着以太坊网络 Layer 2 解决方案的不断增加及其生态系统的蓬勃发展,Layer 2 的盈利模式和中心化问题日益受到关注。尤其是在 Rollup 中,如何实现排序器的去中心化以及排序器利润的分配机制,成为大家关心的热点话题。
什么是排序器?
排序器,顾名思义,是负责对交易进行排序的角色。在比特币网络中,交易排序的职责由矿工负责;在以太坊网络中,这一职责由节点集合承担。这些角色并非固定,而是通过共识机制来确定谁有权参与交易的顺序执行。
目前,主流的 Rollup 方案大多运行中心化的单一排序器。用户在 Layer 2 (L2)的交易首先进入 mem 池(此时交易是无序的)。排序器将这些交易进行排序、压缩成一组有序的批次,然后发送到以太坊的数据可用性(DA)层。
中心化 VS 去中心化
去中心化排序器赛道概览
去中心化排序器可以通过两种方式实现:一种是由 Rollup 项目方自行开发,另一种是借助第三方服务。借助第三方实现去中心化排序器,通常被称为 Sequencing-as-a-Service(排序即服务)。
目前,有多个项目专注于去中心化排序器方案,包括 Espresso、Astria、SUAVE、Radius 等。尽管它们的实现路径各不相同,但目标都是为了提升排序器的去中心化程度和可靠性。
Espresso
在 Espresso 排序器的排序机制下,L2 交易大致经历以下生命周期:
交易发送:用户在二层网络上发生的交易通过 API 发送到 Rollup 服务器。
交易排序:交易进入 mem 池后,排序器通过 HotShot 共识选举对交易进行排序,并将其包含在一个区块中。
交易广播与确认:排序器将排序后的交易广播出去,其他节点通过 HotShot 共识达成共识后出块,交易被执行。同时,软承诺机制提供快速的交易确认。
区块承诺:排序器将包含交易的区块承诺及其共识证书(QC:Quorum Certificate)发送并存储在 L1 排序器合约中,证明该区块通过共识达成软最终性。
状态更新:已执行该区块的 Rollup 节点将新的 Rollup 状态发送到 L1。在 zkRU(零知识 Rollup)情况下,需要附带有效性证明,而在 ORU(优化 Rollup)情况下则会进入挑战期。
状态验证:L1 Rollup 合约通过验证排序器合约发送来的 QC,检查状态更新的有效性。
这个流程可以简化理解为:
交易排序与区块创建:在一组排序器中,通过 HotShot 共识机制选出一个排序器,它负责对 Rollup 交易进行排序,并将这些交易包含在一个区块中。
共识与区块承诺:该区块必须由其他的 Rollup 节点签署并达成共识(至少 2/3 的 HotShot 节点同意)才具有「最终性」。然后,相关的区块承诺和新的 Rollup 状态根提交给 L1 基础层进行验证。
快速确认与最终性:「最终性」带引号是为了让 Rollup 交易更快地确认,减少延迟,提升用户体验。然而,Rollup 交易最终还是要由 L1 基础层进行验证(zkRU 需要验证有效性证明,ORU 需要等待挑战期结束)。如果 L1 验证交易没有问题,此时 Rollup 的交易才具有真正的最终性。
潜在回滚:如果 L1 验证发现交易无效,相关的已出块的 L2 区块将面临回滚。因此,「最终性」是为了让交易快速确认,而最终性是为了继承以太坊的安全性。
Astria
Astria 的定位是提供通用、无需许可的去中心化排序器,为不同的 Rollup 提供开箱即用的共享排序器服务。
运行机制
Astria 的去中心化排序器运行机制与 Espresso Sequencer 类似,目的是通过将交易排序的权利下放来减少排序者的特权。具体来说,Astria 提出了两种针对排序器的轮换机制:
领导者轮换(Leader Rotation):这是一种简单的轮换机制,通过预定的规则或时间间隔在排序器之间轮换领导者,从而分散排序权力。
拜占庭容错(BFT)共识算法:这是一种更加复杂和安全的机制,允许在存在恶意节点的情况下仍能达成共识。通过这种算法,多个排序器共同参与决策,确保系统在遭受一定数量的节点故障或攻击时仍能正常运行。
领导者轮换
通过选举产生的排序器组成一个集合,集合中的排序器轮流对 Rollup 交易进行排序。这种方式避免了单一排序器长时间垄断交易排序权的问题,并在一定程度上解决了对用户持续审查的隐忧。
SUAVE
SUAVE 是由 Flashbots 开发的去中心化、即插即用的共享排序器解决方案。作为一个通用平台,SUAVE 能够为各种 L1/L2 网络提供内存池管理和去中心化的区块构建功能。与传统共享排序器设计不同,SUAVE Chain 是一条 EVM 兼容链,它通过区块“竞标”的机制实现交易排序。
SUAVE 架构
SUAVE 的架构由三个核心组件组成:通用偏好环境、最佳执行市场和去中心化区块构建。
偏好环境
SUAVE 的偏好环境广泛涵盖了从简单交易到复杂事件的各种需求。用户的交易偏好会以交易形式反映在内存池中,偏好环境作为一个公共的内存池将这些偏好汇总起来。SUAVE 提供的通用偏好环境不仅使多链用户的偏好变得公开透明,还有效减少了信息不对称,并在一定程度上缓解了跨链 MEV 问题。
执行市场
执行市场由一群执行者组成,他们负责监听 SUAVE 的内存池并相互竞争。竞争驱动这些执行者为用户的偏好提供最佳执行方案。可以将这些执行者视为通过“竞标”方式来实现用户需求的参与者,他们力求将产生的 MEV 尽可能多地返还给用户。
去中心化区块构建
最后,基于收集到的偏好数据和最佳执行路径,去中心化区块构建网络会将这些交易信息打包到区块中,完成从交易发现、排序到区块出块的整个过程。
Radius
Radius 的定位是一个无需信任的共享排序层。与前述方案的实现机制不同,Radius 通过引入加密内存池(encrypted mempool)来确保 Rollup 交易的排序过程无需信任。这种方法有效消除了 MEV 和用户交易审查的问题,从而保障了交易的公正性和透明性。
尽管像 Espresso 和 Astria 等基于共识机制的去中心化排序器在一定程度上减少了 MEV 和审查风险,但它们通常以牺牲网络可扩展性和时间效率为代价,从而导致交易确认延迟(因为需要就交易排序达成共识)。此外,虽然这些排序器在去中心化环境中运行,由于内存池中的交易信息是公开透明的,排序器仍然可能存在恶意攫取 MEV 的风险。Radius 通过引入加密内存池(encrypted mempool),确保排序器无法看到相关交易信息,旨在从根本上解决排序器恶意攫取 MEV 和审查交易的问题。
技术架构
Radius 的技术架构分为四个主要功能层级:排序层(Radius)、执行层(Rollup)、结算层和数据可用性层。
排序层
用户将加密交易及其证明提交给排序器。
排序器验证这些证明及交易的有效性。
排序器在解密交易之前对交易进行排序。
排序器构建一个区块。
排序器将构建好的区块提交给 Rollup 执行层。
执行层
Rollup 接收排序器提交的区块,并按照指定的顺序执行交易。
Rollup 将交易状态及状态证明提交至结算层。
结算层
结算层负责接收和验证来自 Rollup 的状态和状态证明,以确认交易的最终性。
结算层确保交易执行符合排序层指定的顺序。
数据可用性层
数据可用性层负责存储数据并确保这些数据的可用性。
mempool 的加密机制 - PVDE
Radius 采用基于零知识证明的加密方案“实用可验证延迟加密”(PVDE)来实现加密内存池(mempool)。这一机制确保了交易在排序过程中保持加密状态,增加了交易处理的安全性。
具体流程如下:
用户提交交易
用户生成一个时间锁谜题和一个对称密钥。
用户使用对称密钥对交易进行加密,加密后的交易进入内存池(mempool)。
排序器处理交易
排序器对加密交易进行排序,但在解锁时间锁谜题之前无法获取解密密钥。
排序器在解锁时间锁谜题前,计算订单承诺,并将该承诺提交给结算层。这一承诺用于验证排序器是否按照顺序将交易提交给 Rollup 执行层。
Metis
Metis 是首批实践去中心化 PoS 排序器的 Layer 2 网络,为未来的发展提供了一个重要的范本。这个范本不仅实现了排序器的去中心化,还提供了基于 PoS(权益证明)的去中心化 Optimistic Rollup 解决方案。在该范本中,Metis 的去中心化 PoS 排序器包括三个主要角色:管理员、排序器和 PoS 共识层。
在传统的 Rollup 模型中,单一的 Sequencer 虽然能有效处理交易和数据,但也集中权力,可能引发多种风险:
操作风险:如果 Sequencer 发生故障或遭受攻击,整个系统的交易处理将被阻断。
审查风险:Sequencer 能够选择性处理或拒绝交易,这可能限制用户访问特定的去中心化金融(DeFi)协议或服务。
操纵风险:Sequencer 在交易排序中可能优先处理自身交易,通过提高交易费用获取不正当利益,即最大可提取价值(MEV)。
为了解决这些问题,Metis 设计了一个去中心化的 Sequencer 池,由多个 Sequencer 节点共同完成交易的聚合、排序和执行。这一设计确保了系统的公正性和透明度:
共识机制:超过三分之二的 Sequencer 节点必须对每个新区块的状态达成共识,之后才能将交易批次提交到以太坊主网(L1)。
多方计算(MPC)签名:在交易批次提交到 L1 之前,通过 MPC 签名验证批次的真实性,确保数据的准确性。
去中心化 Sequencer 的优势:
增强安全性:通过多个节点共同决策,降低了单点故障的风险,提高了网络的鲁棒性和安全性。
降低审查和操控的可能性:多个 Sequencer 的存在使得单一节点难以操控或审查交易,保护用户的交易自由。
稳定性和冗余:支持 Sequencer 的平滑轮换,最小化故障或中断的影响,提高了整个网络的稳定性。
在 Metis 的去中心化 Sequencer 模型中,每个节点由几个关键组件组成:
L2 Geth(包括 OP-Node):负责交易排序和区块组装。
适配器模块:作为与其他外部模块(主要是 PoS 节点)交互的中介。
批次提交者(Proposer):负责构建交易批次并在获得多个 Sequencer 的认可后提交到 L1。
PoS 节点:在以太坊、共识和 Metis 层之间进行协调,确保资产的安全锁定并奖励验证者。
共识层:由与以太坊主网并行运行的 Tendermint PoS 节点组成,确保操作效率而不妨碍主网的进程。
L2 Geth(包括 OP-Node)
主要代码为https://github.com/MetisProtocol/mvm fork optimism
主要是修改了两部分
区块组装:mvm\l2 geth 服务代码,加入了 applyTransactionToTip 处理逻辑,以此判断当前 sequencer 是否应组装当前区块。
交易排序:修改原 op-node 代码,借助 MPC 共识层的适配器模块,获取轮换列表与区块高度对应的当前排序器的位置,来检查自己是否为当前有效排序器。
Sequencer 轮换
轮换信息存在L2 MetisSequencerSet 合约中,信息由共识层(PoS 节点)控制
每个 epoch,共识层更新 Sequencer 信息,经过 MPC 签名,发起交易,更新合约 Sequencer 列表
每个 epoch,根据合约 Sequencer 列表信息,轮流当职
违规:未及时,或者产生错误交易(两笔相同 L2 TxID),PoS 层会选择新的 Sequencer,{构造 ReselectSeqencer 交易 + MPC 签名},新的 Sequencer 会在L2上发起当前 TxID 的交易,同时新的 Sequencer 也会更新到 MetisSequencerSet 合约 {没有惩罚机制}
触发更新:收到常规交易,并且达轮换间隔,会暂停当前常规交易,执行 MetisSequencerSet.sol 合约更新交易,然后 PoS 层选择将执行当前常规交易的新排序器。
加入:POS 合约,部署在L1,任何人,抵押 metis,申请成为 sequencer。当达到上限,进入等待队列
获得一个 NFT
禁止直接转移,可通过 LockingPool 合约->updateSigner 更换签名者,转移 NFT
NFT 的 tokenId 对应 sequence id
替换:当 sequencer 长期处于不健康状态,将被踢出,并由候补替换
退出:
销毁 NFT
update:通过 LockingPool 合约->updateSigner 更换签名者,转移 NFT
选择:加权随机选择算法
MPC 模块
负责管理多重签名密钥的整个生命周期
多重签名生成
密钥重新共享
应用签名
删除签名
提供对多种多重签名异步使用的支持
处理流程
第 1 阶段:通知 MPC 节点做好准备
在本地生成一个随机数 sessionID;
keyGenPrepare 使用p2p网络将消息广播到所有 MPC 节点;
每个 MPC 节点收到 keyGenPrepare 消息后,启动各自的处理 goroutine;
根据 检查本地数据(数据是指 TSS 模块是否存储了该 id 对应的 mpc 信息)keyId;
如果状态中已有数据 READY,则直接从存储中返回数据,无需继续操作 keyGen;
如果已经存在具有 PENDING 状态的数据,则返回错误,以避免由于并发执行不同的密钥生成调用而导致密钥生成不一致;
建立p2p通信通道;
将消息返回 keyGenReady 给发起节点;
第二阶段:启动 keyGen 流程
发起节点等待接收 keyGenReady 来自所有节点的消息;
一旦发起节点收到 keyGenReady 来自所有节点的消息,它就会 keyGenStart 使用 p2p 网络将消息广播到所有 MPC 节点;
收到 keyGenStart 消息后,每个 MPC 节点:
在本地构造一个 LocalParty 实例;
开始从其他节点接收信息
展望
区块链排序器的发展前景充满了激动人心的变革。随着区块链生态系统的不断演进,排序器将经历从中心化到更加分散、高效和适应性强的解决方案的重大转变。这一变革对提高以太坊生态系统的交易效率、可扩展性和安全性至关重要。
去中心化是加密货币的核心哲学。通过共享排序网络,经济机制能够有效地解决价值累积和收入分配的问题。随着排序器模块化构建和开发框架的日益成熟,未来这些技术将成为行业发展的强大催化剂,推动区块链生态系统向更加创新和高效的方向迈进。
参考资料
https://docs.espressosys.com/sequencer
https://docs.theradius.xyz/
https://docs.astria.org/developer/tutorials/run-local-rollup-against-remote-sequencer
https://docs.metis.io/dev/decentralized-sequencer/overview