「Rollup」要成为真正的 Rollup,排序器去中心化是关键的一步。
编译:0x11,Foresight News
Kelvin 认为 「ZK Rollup」 不是真正的 ZK Rollup,我认为所有「Rollup」都不是真正的 Rollup,至少现在还不是。那么问题是,我们如何使它们成为真正的 Rollup?
当前的 Rollup 大多是需要信任和许可的:
来源:L2 Beat https://l2beat.com/scaling/risk
我将概述以下方面的情况:
本文不讨论提高 Rollup 安全性的许多其他要求,包括降低升级密钥的能力,实施稳健且无需许可的证明等。
首先,简要回顾一下 SCR 的工作原理。今天在以太坊上使用的 Rollup 都是 SCR。在更高层次上,SCR 基本上只是:
资料来源:Rollups 实际上如何工作 - Kelvin Fichter https://www.youtube.com/watch?v=NKQz9jU0ftg
更具体地说,传统的排序器通过将它们的状态根和调用数据发布到它们关联的 L1 智能合约来提交 Rollup 块,新块被添加到 Rollup 的顶端。链上合约运行 Rollup 的轻型客户端,保存区块头哈希。合约在收到有效性证明后或在欺诈证明窗口期结束后被确认结算。如果一个未最终确定的 ORU 块是无效的,可以通过提交一个回滚链的欺诈证明来孤立它(以及所有后续区块)。证明有助于保护跨链桥:
交易包提交应该需要某种类型的保证金来防止恶意行为。如果提交了欺诈交易包(例如无效的状态根),保证金将被烧毁并分配一些给欺证明的挑战者。
SCR 具有「合并共识」——一种可在链上验证的共识协议。Rollup 共识可以完全在 L1 智能合约中运行。它不影响主链共识机制,也不需要主链共识机制的任何支持。
去中心化共识协议通常包含四个主要特征(请注意,这是一种简化,不能清楚地说明全部共识协议,例如,无领导协议):
鉴于 1 和 2 还存在争议,去中心化排序器的最低要求就是某种形式的抗女巫攻击 + 领导者选举。Fuel Labs 一直在做这方面的工作,他们认为 PoS:
为什么你应该有一个 L2 本地共识,这一点也有很好的论据,稍后会详细介绍。
主权 Rollup 仍然将交易数据发布到 L1 以获得数据(DA)可用性和共识,但他们在 Rollup 中处理客户端的「结算」。DA 层告诉你数据存在,但它们没有定义 Rollup 的规范链:
来源: Celestia
相关说明:有一个有趣的论点,即不存在全球规范链(只有桥能决定哪个链被认为是规范的)。这里有一个反驳的观点,其他关于 Rollup 在主权和可组合性之前权衡的 Twitter 线程。我鼓励你筛选这些信息,以及了解最近关于比特币主权 Rollup 的话题。
上面的「规范」框架很容易理解,而且它不是本文的重点,我继续使用它。有关一般 Rollup 架构的更多背景信息,可以参考此处。
用户发起的强制交易包含
如上所述,定序器一般负责批量处理交易并将其发布到 L1 智能合约。不过,用户也可以自己直接向合约中插入一些交易:
当然这是低效和昂贵的,因此排序器将打包交易并将它们一起提交。这分摊了许多交易的固定成本,并允许更好的数据压缩:
定序器承诺最终会在 L1 上发布这些交易,同时我们可以计算输出以获得软确认:
当排序器将这些事务发布到 L1 时,会进一步巩固输出:
通常情况下,用户在从 L1 将资金桥接到 L2 时只会自己包含交易。这作为 L1 合约的输入,告诉 L2 它可以在 L2 上铸造由 L1 上锁定资产支持的资产。
如果我想把我的钱还给 L1,我可以在 L2 上销毁它,然后告诉 L1 把我的钱还给我。L1 不知道 L2 发生了什么,因此需要提交证明以及解锁我在 L1 上资金的请求。
因为我是 L2 过来的,所以排序器可以发起这个取款请求,提交给 L1。但是,现在你信任 L2 排序器的抗审查性(censorship resistance,CR)。你不再拥有与在 L1 相同的保证,也许他们不喜欢你,或者排序器关闭,你的资产永远停留在 L2 上。
Rollup 可以通过各种措施在本地增加自己的抗审查。这可能包括拥有一个具有高质押价值的 L2 共识集、包含列表的一些变体、添加阈值加密等,以最大限度减少 L2 用户审查的机会。这些都是不错的做法,但理想情况下,我们还希望 L2 用户拥有与 L1 相同的抗审查保证。
如果用户受到审查,他们需要一些方法来强制退出 Rollup 或强制将他们的交易纳入 L2。这就是为什么 L2 用户应该保留诸如强制将他们的 L2 交易直接包含到 L1 合约中的能力。例如,被审查的用户可能能够自己直接向 L1 提交一个单操作交易包。
资料来源:Starknet Escape Hatch Research
如果 L2 用户的唯一选择是将交易直接强制发送到 L1,这并不理想。对于许多低价值用户来说,这并不友好,尤其是在与 L1 交互成本越来越高的情况下。更高级的设计可能能够解决这个限制,强制在 Rollup 之间进行原子交易。Kalman Lajkó 在这里进行了一项引人入胜的设计,我强烈推荐阅读。它希望在具有共享证明者和 DA 层的系统中启用交叉 Rollup 强制交易。
主权 Rollup 的强制包含机制工作方式不同,如前所述,它们执行分叉选择规则的方式与 SCR 不同(Sovereign Labs 在发布的精彩帖子)。
在 SCR 中,L1 智能合约执行 Rollup 的分叉选择规则。除了验证 ZK 证明之外,它还检查该证明是否建立在之前的证明之上(而不是其他分叉),以及它是否处理了在 L1 上发送的所有相关强制交易。
SR 可以将其 ZK 证明发布到 L1 DA 层,供所有人查看为 calldata/blob(即使 L1 未验证它们)。然后,你只需添加一条规则,即新证明只有在先前有效证明的基础上才有效。这个规则可以在客户端强制执行,但它会要求用户扫描链的历史。
calldata 可以绑定回 L1 区块头,并且可以添加一条声明说「我已经扫描了 DA 层的证明(从区块 X 开始到区块 Y 结束),并且这个证明建立在最近的有效证明之上」。这直接在证明中证明了分叉选择规则,而不是在客户端强制执行。
由于你已经在扫描证明,因此你还可以证明你已经扫描了任何强制交易。任何人都可以在需要时将强制交易直接发布到 L1 DA 层。
以太坊上的链上证明验证通常非常昂贵,因此目前的 ZKR(例如 StarkEx)往往每隔几个小时才将 STARK 发布到以太坊。相对于交易数量,证明的增长往往非常缓慢,因此这种批处理可以显着节省成本。然而,这么长的最终确定时间带来的用户体验并不理想。
如果 Rollup 只在链上发布状态差异(而不是完整的交易数据),那么即使是完整的节点也无法在没有证明的情况下确保最终确定性。如果 Rollup 的完整交易数据发布在链上,那么至少任何完整节点都可以与 L1 一起完成。
通常,轻节点只会依赖中心化排序器实现软确认。然而,ZKR 可以在 p2p 层中快速生成和分发 ZK 证明,供所有轻客户端实时查看,同时以 L1 速度为它们提供最终性。稍后,这些证明可以递归地打包发布到 L1。
这就是 Sovereign Labs 计划做的事情,类似地,Scroll 计划在链上发布中间 ZK 证明(但不验证它们),因此轻客户端可以相当快地同步。通过这两种方式,Rollup 可以开始以 L1 的速度完成终局性,而不是等待以节省 Gas 成本。请注意,在这两种情况下,你只是将最终确定时间降低到绝对最小值(L1 速度)。
任何排序器都不会比 L1 更快实现最终确定性。不同的排序器设计可以做的最好的结果是为你提供比 L1 更快的预确认,并具有不同级别的确定性(例如,具备去中心化共识集的 L2 的预确认比单个可信排序器的更可靠)。
Patrick McCorry 最近还对 Rollup 交易最终确定性等级进行了很好的概述。
当前大多数 Rollup 都有一个排序器用于提交交易包。它提高了效率,但也带来了较弱的实时活性和抗审查性。加上适当的保护措施后,这对于许多用例来说可能是可以接受的:
例如,备用排序器可以由 Rollup 治理机制选出,用户可以获得安全性、抗审查性和活性。即使从长远来看,单个主动排序器也是一个可行的选择。
Base 可能是一个新趋势的开始。公司现在可以管理和优化他们的产品,就像他们对企业区块链的胡说八道感到兴奋一样,但它现在实际上可以成为一个无需许可、安全和可互操作的链。
Base 最终打算将他们的排序器集去中心化,但重点是他们并不严格需要这样做(或者他们可以在非常有限的范围内,例如小型排序器集)。要明确的是,这需要 Rollup 来实施必要的步骤,来确保它实际上是安全的,并维护抗审查性(删除任意即时升级、实施稳健证明、强制交易包含、MEV 拍卖等)。
这将是对中心化 / 托管产品的巨大改进,而不是对最大去中心化产品的替代。Rollup 只是扩展了设计空间。这也是大多数 Rollup 团队没有将排序器去中心化作为首要任务的主要原因——其他项目更看重用户安全、抗审查和减少对 Rollup 运营商的信任。
然而,如果用户 / 其他方需要介入以保持活性和「实时抗审查」(相对于「最终抗审查」,例如强制通过 L1 进行交易),这仍然不是理想的选择。根据强制交易包含机制,低价值用户介入可能成本高昂或不切实际。对实时抗审查和活性的最大保证有高度偏好的 Rollup 将寻求去中心化。运营单个受许可的排序器时也可能存在监管考虑。
对单个排序器的一个直接改进是允许少数地理分布式排序器。排序器可以简单地轮换,他们之间建立联系将有助于激励诚实的行为。
这个概念应该不会太陌生——多重签名桥通常有少数受信任的公司,或者类似的委员会,比如 Arbitrum 的 AnyTrust DA 。但重要的是,他们在这里的权力要小得多(你不依赖 Rollup 排序器来保证安全,这与多重签名跨链桥运营商提取锁定资金的方式不同)。总的来说,与单排序器相比,这种方案的抗审查和活性更好,但仍然不完美。
Rollup 也可以通过智能合约直接运行 MEV 拍卖 (MEVA) ,而不是根据质押分配排序器权利。任何人都可以竞标交易的排序权,拍卖合约将排序权授予出价最高的人。这可以针对每个区块进行,也可以持续一段较长的时间(例如,竞标成为第二天的排序器的权利)。获胜的排序器仍应提交一笔保证金,以保证如果他们随后出现故障或作恶,可以实施处罚。
资料来源:ZK Rollup 的去中心化
在实践中,如果拍卖没有直接纳入协议,协议外的 MEVA 是最自然的结果。如果根据质押权重确定排序权,就会出现某种形式的 MEV-Boost/PBS 式拍卖系统,类似于我们今天在 L1 以太坊上看到的。这种情况下,费用 /MEV 可能会分配给质押者。如果拍卖被纳入协议,那么费用 /MEV 可能会进入某种形式的 Rollup DAO 金库。
无需许可即可作为排序器加入,但你必须质押代币(可能是 L2 的原生代币)。质押机制可以通过智能合约或直接在 Rollup 中建立在基础层上。你可以使用此 PoS 结合某种形式的链上随机性的方式来进行领导者选择,这与任何 L1 大致相同。你对一个区块进行排序的概率 = 你占总质押量的比例。可以通过削减等来对错误 / 恶意的排序器施加惩罚。
请注意,由于上述原因,这不需要排序器达成共识。Rollup 使用 L1 达成共识,因此不需要本地共识。质押决定哪些排序器可以提议区块,但是他们不需要对其他排序器提议的区块进行投票。
也可以授予任意时间长度的排序权。你可能有权对 100 个连续的 Rollup 块或 1000 个等进行排序。更长的周期可能更高效,并且在给定时间内只需要一个排序器。然而,授予扩大的垄断权可能有其他外部性。
Dymension 是一个实践这些思路的项目。Dymension Hub 将是 Cosmos 中典型的诚实多数 PoS L1。它的 L2(「RollApps」)将使用它进行结算和共识,同时依赖 Celestia 进行 DA(因此这些 L2 实际上是「Optimistic Chains」,而不是「Rollup」)。
根据他们的 Litepaper,去中心化 RollApp 排序将需要在 Dymension Hub 上抵押 DYM(Dymension 的原生资产)。然后,领导者的选择取决于抵押的 DYM 的相对数量。这些排序器将从各自的 Rollup 中获得收入(费用和其他 MEV),然后将相关的成本支付给 Dymension Hub 和 Celestia。
这种机制的结果是,这个堆栈中几乎所有的价值捕获都直接累积到 DYM 代币中。使用自己的原生代币进行排序的 Rollup(正如 StarkNet 打算对 STRK 所做的那样)为他们自己的代币附加了价值。这个设置启发了一个问题:以太坊 Rollup 是否只能使用 ETH 进行排序器选举?
在我看来,这大大降低了在此类结算层上部署 L2 的动机。大多数 L2 团队自然希望他们自己的代币能够产生有意义的价值(而不是仅仅用于费用)。
如果需要,也可以使用 L2 质押进行排序器选举和本地共识。这正是 StarkNet(STRK ) 计划的代币模型:
此外,STRK 可以以某种形式用于:
交易流程如下:
有关 StarkNet 计划的更多详细信息,你可以参考以这一篇贴文。
L2 可能会也可能不会实现自己的本地共识(即,L2 验证者在将数据发送到 L1 以获得最终共识之前在其区块上签名)。例如,L1 智能合约可以根据其规则了解到:
Rollup 如果没有本地共识,你需要做的是:
请注意,在任何一种情况下,L2 的价值都可以累积到 Rollup 代币中。即使 L2 代币仅用于某种形式的领导者选择(而非共识投票),排序权的价值仍会累积到 L2 代币上。
现在让我们讨论在 L1 之前拥有 / 不拥有本地共识的权衡。
Fuel Labs 团队提出的一个论点认为 L2 共识会降低抗审查性。「这允许大多数验证者审查新区块,这意味着可以冻结用户资金。不需要 PoS 来保护 Rollup,因为 Rollup 是由以太坊保护的。」这是一个争议地带。如前所述,即使审查排序器依然可以提供抗审查性(例如,强制交易直接进入 L1,或更复杂的设计,例如 Kalman Lajkó 正在研究的设计)。
另一种说法是,完全达成共识是「低效的」。例如,下面前一种情况似乎更容易:
当然,不同的排序器设计和共识机制存在很大差异。
此外,请注意,如此处和此处所述,一些人对在排序器去中心化中使用 PoS 表示担忧。L1 与 L2 的复杂性可能使处理某些类型的攻击更具挑战性。
排序器的最大目标可能是在 L1 的完全安全和保障之前为用户提供更快的软确认。查看 StarkNet 的机制:
「强大而快速的 L2 终局性——StarkNet 状态只有在交易包被证明为 L1 之后才成为最终状态(可能需要几个小时)。因此,L2 去中心化协议应该在下一交易包被证明之前就执行顺序做出有意义的承诺。」
由多排序器的经济安全支持的共识有助于在此期间提供更有力的保证:
「Starknet 共识必须是负责任的,因为违反安全和活性的行为会受到惩罚,任何部分参与者(包括恶意的多数)都会受到惩罚。」
Rollup 还可以灵活地在共识机制选项的范围内尝试不同的权衡点,因为它们最终总是可以回退到以太坊 L1 的安全性和动态可用性。
上面的 Rollup 都构建了特定的排序器,以某种形式创建 Rollup 区块。例如,PoS 无需许可即可加入,但在给定 slot,只有选出的 L2 排序器能够提交区块。也有一些相关方案不依赖任何 L2 排序器,它们通过 L1 本身来进行交易排序。
Vitalik 早在 2021 年就提出了这种「完全无政府状态」的想法。任何人都可以随时提交交易包。它满足了上面讨论的去中心化排序器的两个最低要求:
这已经足够了,因为 L1 已经提供了安全性。如果 L2 区块已发布到 L1,则它们只有在无效或建立在无效区块上(将被回滚)时才会被孤立。如果它们有效并发布到 L1,则它们具有与 L1 本身相同的安全性。
Vitalik 指出了一个重要的问题:效率低下。多个参与者很可能并行提交交易包,但只有一个可以被成功包含。这会浪费大量精力来生成证明和 / 或在发布交易包到链上时浪费 Gas。
但是,PBS 现在可以使这种无政府状态的设计变得可行。它允许更多有规律的排序,每个 L1 区块最多有一个 Rollup 区块,并且没有浪费 Gas(虽然可能浪费了计算资源)。L1 区块构建者可以只包含最高价值的 Rollup 区块,并根据搜索者输入的出价构建区块,类似于任何 L1 区块。Z 在默认情况下许可 ZK 证明可能是合理的,这样做可以避免浪费计算。
这是 Justin Drake 最近提出的「Based Rollups」提案背后的核心思想。他使用该术语来指代由 L1(「基础」层)排序交易的 Rollup。L1 提议者只需确保在自己的 L1 区块中包含 Rollup 区块。这个简单的方案可以立即拥有 L1 的活性和去中心化。它们回避了棘手的问题,例如在 L2 排序器审查的情况下解决强制交易包含问题。此外,它们还消除了一些 Gas 开销,因为不需要排序器签名验证。
一个有趣的问题是关于这些 L2 交易在哪里进行处理。L2 客户端需要将这些交易发送到某个地方,以便 L1 搜索者 / 构建者接收它们并创建区块和数据块。它们可能会被送到:
L1 Mempool - 它们可以与一些特殊的元数据一起发送,「知情」的搜索者 / 构建者来解释。但是,这可能会增加 L1 内存池的负载。
L2 的 p2p Mempools - 这条思路似乎更站得住脚。搜索者 / 构建者除了通常的渠道外,还将开始检查和解释这些内容。
这里的一个明显缺点是 Based Rollup 限制了排序器的灵活性。例如:
减少 MEV:Rollups 可以通过 FCFS 的变体、加密的内存池等变得有创意。
预确认:L2 用户喜欢快速的交易「确认」。Based Rollup 交易「确认」时间最多回落到与 L1 持平(12 秒),或者等待更长时间才能发布完整交易包。
有趣的是,这正是早期 Rollup 团队正在做的事情:
Justin 指出,重新质押可能会有所帮助。
这些都是围绕 EigenLayer 的研究领域,至少在他们的白皮书中提到过。目前尚不清楚这种方案能否实际解决问题。为了重新质押以有效改善这些缺点,可能希望所有质押者都选择运行它。通过让想要执行此操作的质押者进入一个单独的共享排序层(稍后会详细介绍)来模拟这个想法似乎更合乎逻辑。
去年,Polygon Hermez 提出了一项名为 PoE 的提案。这是专门用于 L1 排序的 ZK Rollup 的另一种变体。这里的排序器是一个完全开放的角色,任何人都可以提交交易包(即完全无政府状态)。PoE 有两个参与方,过程分为两步:
排序器
排序器收集 L2 用户交易并通过发送 L1 交易(包括所有选定的 L2 交易数据)创建交易包。排序器将根据收到的经济价值提交区块,或为用户实现更好的服务(例如,在每个 L1 区块中发布一个交易包,即使这会使 L2 交易更昂贵,但用户想要更快的交易)。
排序器将支付 L1 Gas 费以发布交易包,并且协议定义了必须用 MATIC 支付的额外费用。一旦发布,获胜的交易包立即定义链的新顶端,任何节点都可以确定性地计算当前状态。然后需要有效性证明来最终确定轻客户端的状态(包括 L1 智能合约)。
聚合器
这里的聚合器是 ZK 证明者。同样,这是一个任何人都可以参与的无需许可的角色。很简单:
聚合器可以进行成本效益分析,以找出发布证明的正确频率。如果他们赢了,他们将获得一部分费用,但等待更长时间以发布新证明会将他们的固定验证成本分摊到更多交易中。如果聚合器延迟发布证明(它不证明新状态),那么合约将执行还原操作。证明者浪费了计算资源,但他们会节省大部分的 Gas。
费用按如下方式分配:
Rollkit SR 具有相似的「纯分叉选择规则」概念,如此处所述,指的是没有特权排序器的 Rollup。节点遵从 DA 层进行排序,并应用「先到先得」的分叉选择规则。
这些 L1 排序设计具有重要的经济影响,因为 L2 交易的 MEV 现在将在 L1 区块生产者级别捕获。在「传统的」L2 排序模型中,L2 交易的 MEV 由 L2 排序器 / 共识参与者 / 拍卖机制捕获。在这种情况下,尚不清楚有多少 MEV 会泄漏到 L1。
这是好事还是坏事,难以说清:
这类方案可能是有意义的,特别是作为一种更简单的 Rollup 引导方法,但很难看到大多数 Rollup 将如此多的 MEV 放弃给 L1。Rollups 的一大好处确实是经济收益——一旦 DA 开始扩展并且成本下降,他们将只需要向 L1 支付很少的费用。较慢的出块时间和简单的 MEV 方法的缺陷对用户来说似乎也不是最佳选择。
请注意,上述 PoE 的竞争可能围绕最快的聚合器进行。ZK 证明者市场有两个经济问题需要解决:
让我们考虑 ZK 证明者市场的两个简单模型:
一个无需许可的市场中,证明者都争先恐后地为 Rollup 排序器 / 共识产生的区块创建证明。第一个创建证明的人可以获得为证明者指定的任何奖励。该模型可以高效地找到最适合该工作的证明者。
这看起来非常类似于 PoW 挖掘。然而,这里有一个独特的区别:证明是确定性计算。结果是,与其他证明者相比具有小但一致优势的证明者几乎总能获胜。那么这个市场就很容易出现中心化。
在 PoW 挖矿中,随机性方面有更好的结果——如果我有 1% 的挖矿算力,我应该得到 1% 的奖励。
这种竞争性证明模型在计算冗余方面也是次优的——许多证明者将竞争并花费资源来创建证明,但只有一个人会获胜(类似于 PoW 挖矿)。
证明者之间可以采取轮换的方式创建证明(例如,根据质押的代币或声誉)。这种方式可能更加去中心化,但在证明延迟方面效率较低(在一个证明者能够更快更有效地创建证明的情况下,另一个「慢」证明者也有机会创建证明)。但是,它可以防止在只有一个证明者能够创建证明时浪费计算资源。
此外,如果证明人的回合内未能提供证明(无论是恶意的还是无意的),网络就会遇到问题。如果这些回合很长(例如,给定的证明者获得几个小时的垄断权)并且证明者宕机,协议将很难恢复。如果转换证明者的时间很短,其他证明者则可以介入。
也可以允许任何人发布证明,但只有指定的证明者才能在给定时间内获得奖励。因此,如果当前证明者失败了,另一个证明者可以发布证明,但他们无法获得奖励。这是一种无私行为,花费资源进行计算而没有任何回报。
Scroll 正在探索更多基于回合制的方法,将执行分配给随机选择的「rollers」(证明者):
Scroll 工作流程
还有很多有趣的问题,比如在排序时用户层面的证明应该如何收费。可以在此处找到关于这些主题的更多讨论:
大多数早期的解决方案都假定每个 Rollup 都需要自己弄清楚如何去中心化他们的排序器。正如我们在 L1 排序方案中看到的那样,但事实并非如此。许多 Rollup 可以选择一个共享排序器 (SS)。这样做的好处是:
如前所述,简单地使用原生 L1 作为 L2 的排序器从根本上有几个缺点:
L1 排序可以做的最好的事情是消除 L1 的计算瓶颈(如果交易执行是吞吐量的瓶颈)并实现通信复杂性的改进。
那么,我们能否设计专门且更高效的 SS,而不是让 L1 来做……
Metro 是 SS 层的一个方案。你可以参考 Evan Forbes 的研究帖子、Modular Insights talk 和 Shared Security Summit talk 了解更多详情。由 Josh Bowen 领导的 Astria 团队正在致力于实现 Metro 方案。
当前的 Rollup 节点实际上处理三件事:
这里的关键是执行和排序的分离。而共享排序可以做到:
排序是无状态的。SS 节点不再需要存储所有不同 Rollup 的完整状态,他们删除了执行计算,传统排序器面临的巨大瓶颈在这里消失了。
当从共识中剥离执行时,效率会变得非常高。如果节点所要做的只是生成有序的交易块并就该块达成一致而不执行所有事情,那么它们的效率会非常高。执行和证明可以在事后由不同的各方完成。
SS 节点可以保持相对轻量级,甚至可以水平扩展(通过选择共识节点的随机子集来对不同的交易子集进行排序)。排序层比传统排序器更加去中心化,传统的排序器需要掌握链的复杂状态并负责执行。
此外,通过跨多个链汇集资源,无需在多个 Rollup 中分割 PoS 共识,而是将它们全部聚合在一个地方。与许多实现自己的排序器集的 Rollup 相比,这种方案可能会产生更去中心化的排序器集,且不需要大量的质押资产。这很重要,因为:
一旦同意交易排序,执行(和证明)可以在事后推迟到一个完全不同的链:
后续的执行层不需要去中心化,因为这不是 CR 的来源。单排序器不是 CR 的理想选择,但这并不是因为它们作为执行者的角色,而是因为他们排序并包括交易。在这里,SS 已经提供了有序的交易输入,因此也就是 CR。之后对状态承诺的计算和比较就不需要去中心化了。
用户喜欢快速的软执行:
这需要某种形式的共识(或中心化排序器)来提供出色的用户体验:
如果你只是依赖像 Celestia 这样的基础层的共识,就不能提供这些围绕排序和包容性的软性承诺。如果 SS 有一个具质押了高价值资产的去中心化委员会,它可以在快速区块(低于 L1 区块时间)上提供相当强大的承诺。
因此,只要 SS 创建一个区块,用户就可以得到软确认。这种确认的强度取决于 SS 的构建(权力下放、经济安全、分叉选择规则等)。一旦数据实际发布到基础层,你就可以将这些交易视为真正的最终交易。然后可以生成并提交状态根和相关证明的最终计算。
「Lazy Rollup」非常简单。他们等到交易全部被排序并发布到 DA 层,然后他们下载这些交易,可选地应用分叉选择规则来选择交易的子集,执行交易处理,并确定交易状态。然后可以生成区块头。
请注意,由于 SS 无法以需要访问完整状态的方式生成区块,因此它们不会检查无效的状态转换。因此,使用 SS 的「Lazy Rollup」状态机必须能够处理无效交易。当节点执行有序交易以计算结果状态时,节点可以简单地删除无效 / 恢复交易。立即执行的传统 Rollup 没有此限制。
在将交易包含在链上之前需要状态访问才能处理交易的 Rollup 在这里行不通。例如,如果 Rollup 有一个区块有效性规则,区块包含的所有交易都是不会失败的有效交易。如果 Rollup 需要交易锻而不是状态访问,那么可以专门为这种类型的 Rollup 创建一个特殊的 SS(例如,类似于 Fuel v2 或带有私有内存池的 Rollup)。
为了让 SS 运行,必须有某种机制让用户为他们的交易付费。你可以简单地使用大多数 Rollup 交易类型中已经包含的现有签名和地址来支付 SS 层上的 Gas。或者,付款可能涉及 SS 上的一些包装交易,任何人都可以为包含的任意数据付费。这是一个开放的设计空间。
Rollup 能够继承他们正在使用的 SS 的分叉选择规则。然后,Rollup 的全节点实际上是 SS 的轻客户端,检查一些提交以指示哪个 Rollup 区块在指定高度是正确的。
但是,继承 SS 的分叉选择规则是可选的——你可以简单地要求 Rollup 处理(不一定执行)它发布到基础层的所有事务数据。它会有效地继承基础层的 CR 和活性,但是你会牺牲很多用户喜欢的 SS 特性。
假设一个 Rollup 想要继承其 SS 的分叉选择规则并获得快速的软执行,SS 自然会在 MEV 方面处于非常核心的位置。它决定 Rollup 的交易包含和排序。
然而,Rollup 不一定必须执行 SS 提供的交易,或者按照提供的顺序执行交易。你可以在技术上允许自己的 Rollup 进行第二轮处理,以在执行后重新排序 SS 发布的交易。但是,如上所述,这会失去使用 SS 的大部分优点。
即使在这种情况下,SS 层也可能仍然存在 MEV,因为它有权包含交易。如果你真的想要,你甚至可以允许你的 Rollup 在第二轮处理中排除某些交易,但这会变得混乱,减少 CR,并且失去大部分 SS 的好处。
区块链中难以分叉的是任何形式的有价值的共享状态。看看 ETH 与 ETC 或类似的 ETH 与 ETH POW ,社会共识决定了「真正的以太坊」是什么。我们都同意的「真实」状态是有价值的。
然而,SS 实际上只是一个服务提供者——它们没有与之关联的有价值的状态。使用给定 SS 的 Rollup 保留了分叉它的能力,以支持一些其他排序机制,只需要一个小的硬分叉(例如,如果 SS 提取了太多价值)。
更具挑战性的是网络效应。如果许多 Rollups 都开始使用 SS 并且它们获得了巨大的网络效应,那么分离可能会很痛苦,除非其他 Rollups 也愿意迁移。
EigenLayer 白皮书提到去中心化 SS 是重新质押的潜在用例之一。这个 SS 可以由 ETH 重新质押保护,它将处理许多不同 L2 的交易排序。
Well Espresso 刚刚在他们的共享排序器计划中公布了这一点。它可以利用 EigenLayer 重新质押来确保其共识。为了提供一个漂亮的可视化效果,今天 Rollup 是这个样子的:
这就是他们使用 Espresso 等 SS 时的样子:
Espresso 排序器 (ESQ) 总体上与 Metro 的思路非常相似。它们按照相同的核心原则工作——将交易执行从排序中剥离出来。除此之外,ESQ 还将为交易提供数据可用性。
作为背景,以太坊目前使用 Gasper 达成共识(Casper FFG 作为最终工具 + LMD GHOST 作为其分叉选择规则)。这里相关的 TLDR 是 Gasper 即使在大多数节点可能掉线的条件下也能保持活跃(动态可用性)。它有效地运行两个协议(Casper FFG 和 LMD Ghost),共同维护一个带有最终前缀的动态可用链。Gasper 在快速确定性上进行权衡。
总体而言,ESQ 包括:
再仔细看看 DA。在乐观情况下,高带宽节点将使数据对所有其他节点可用,并且每个单独区块的可用性也由随机选出的小型委员会提供支持。鉴于小型委员会面临 DDoS 和贿赂攻击的风险,只要有足够比例的节点不妥协,可验证信息传播 ( VID) 就可以提供可靠(但较慢)的备份路径来保证 DA。
这个系统是为扩展性而构建的,因此 ESQ 希望为 L2 提供更便宜的 DA。他们仍然会将他们的证明和状态更新结算到 L1 以太坊,但请注意,这将使默认情况下使用 ESQ 的链不再是完整的「Rollups」(以太坊 L1 不保证他们的 DA )。它比数据可用性委员会 (DAC) 的简单实现更强大,但它的保证比真正的 Rollup 更弱。
转发给 SS 的交易将被排序,然后在 L1 上最终确定之前发回 Rollup 的执行者和证明者。SS 还将提交给区块信息连同用于验证该块的仲裁证书一起发送到其 L1 排序器合约。这允许 L1 Rollup 合约将 Rollup 状态更新证明与被证明为共识输出的区块提交的信息进行比较。
交易流程的完整视图:
正如 Espresso 帖子中所述,SS 可以提供一些关于跨链原子性的令人兴奋的用例:
跨多个 Rollup 共享的排序层有望使跨链消息传递和桥接更便宜、更快、更安全。消除为另一个链的排序器构建轻客户端的需要,节约了成本。通过消除给定 Rollup 与其他 Rollup 的共识保持实时独立的需求,交叉 Rollup 桥接也可以进一步节省成本。共享排序器还为桥接提供了安全优势:共享排序器可以保证当且仅当事务在另一个 Rollup 中完成时,它才能在一个 Rollup 中完成。
此外,共享排序器增强了用户表达跨不同 Rollup 的事务之间的原子依赖性的能力。按照惯例,Alice 将独立于 Bob 的 Rollup-B 交易 t' 签署和发布她的 Rollup-A 交易 t'。在这种情况下,Alice 的交易可能会在 Bob 的交易之前很久就被排序,从而给 Bob 留下一个长期的选择来中止。这种可选性不平衡通过共享排序器得到缓解,Alice 和 Bob 可以将两个交易作为一个签名包一起提交(即,排序器必须将这两个交易视为一个交易)。
这对跨链 MEV 产生了影响,因为链上活动最终会增长。典型的例子是「原子套利」。同一种资产在两个不同的链上以两种不同的价格进行交易。搜索者希望在没有风险的情况下同时执行两笔交易来实现套利。例如:
对于原子套利 ,要么两笔交易都被成交,要么都没有成交。如果两个 Rollup 都选择了同一个 SS,那么它可以为搜索者实现这种原子套利。这里的 SS 可以保证:
假设 Rollup 虚拟机按顺序执行各自流中的所有事务(即,不存在无效指令,只是一些指令可以抛出错误而不影响状态),那么我们还可以保证:
但是,这仍然不是你在共享状态机(例如,完全在以太坊 L1 上)上进行交易时的保证。如前所述,SS 不持有这些 Rollup 的状态,它们不执行交易。你不能完全保证其中一项交易(在 R 1 或 R 2 上)不会在执行时恢复。
直接在这个基础上构建更高级的原语是有问题的。例如,如果你尝试在此 SS 之上构建一个即时销毁和铸造的跨链桥接,它会在完全相同的区块高度同时执行以下操作:
你可能会遇到以下情况:
这将是一个大问题。
在某些情况下,只要这两个事务都包含在输入流中并被执行,你就可以确定这两个事务的预期结果,但通常情况并非如此。
这些「保证」可能足以满足原子套利之类的需求,其中搜索者已经拥有在每条链上执行这些交易所需的资产,但这显然不是共享状态机的同步可组合性。对于像跨链闪电贷这样的东西,它本身并不能提供足够的保证。
与其他跨链消息传递协议结合使用时,可能仍然有用。让我们看看与交叉 Rollup 消息传递协议一起使用时如何促进 NFT 跨链原子交换:
此处的 SS 允许两个用户在步骤 1 中以原子方式提交。然后,你使用某种形式的跨链消息传递来验证彼此的结果状态并解锁资产以执行交换。
如果没有 SS 以原子方式进行,两方可以就价格达成一致。但随后 U1 可以提交交易,然后 U2 可以等待并决定是否要中止交易。有了 SS,他们就会被锁定在交易中。
这几乎是 SS 跨链原子性用例的边缘。总结:
关于跨链原子性的其他有趣主题,我建议查看:
总而言之,SS 的基本思想是:
显然这幅图并不科学,一切都是高度主观的,并且非常依赖于确切的构造。TLDR 如下:
一旦 L1 最终确定,所有 Rollup 都会达到 100% L1 安全性。在获得 L1 结算的完全安全和保障之前,大多数排序器设计只是试图提供好用功能,但削弱了在过渡期间的保证。
当我们谈论这些试图处理许多其他链的交易的共享层时,差异可能会让人非常困惑。特别是当 SUAVE 通常被称为「排序层」或者其他术语时,例如「用于 Rollup 的去中心化区块构建器」。需要明确的是,SUAVE 与上述 SS 设计有很大不同。
让我们观察一下 SUAVE 如何与以太坊交互。SUAVE 不会以任何方式被嵌入以太坊协议。用户只需将他们的交易发送到其加密内存池中。SUAVE 执行者的网络然后会为以太坊(或类似的任何其他链)输出一个区块(或部分区块)。这些区块将与传统的集中心化以太坊构建者的区块竞争。以太坊提议者在它们之间做出选择。
同样,SUAVE 不会取代 Rollup 选择区块的机制。例如,Rollup 可以实现一个 PoS 共识集,其运作方式与以太坊 L1 的运作方式大致相同。然后,这些排序器 / 验证器可以选择 SUAVE 为它们生成的区块。
这与上面描述的 SS 非常不同,在 SS 中,Rollup 可以完全消除去中心化排序器的需要。他们通过选择 Metro 或 ESQ 等来外包排序功能,并且他们可以选择继承 SS 的分叉选择规则。Ethereum、Arbitrum、Optimism 等不会因为选择 SUAVE 交易排序而改变分叉选择规则。
SUAVE 不关心你的链的分叉选择规则是什么或者你的区块是如何选择的。它可以为任何链提供最有利可图的排序。请注意,与前面描述的 SS 节点不同,SUAVE 执行程序通常拥有完全状态(尽管它们也可能满足某些不需要状态的偏好)。他们需要模拟不同交易的结果以创建最佳排序。
为了解差异,让我们考虑一个用户想要运行原子跨链套利的示例。提交给 SUAVE 与提交给 SS,他们可以获得的保证有何区别:
现在考虑一下,SUAVE 如何与 Rollup 排序交互?甚至可能与 SS 交互?Espresso 似乎确实相信 SUAVE 与 ESQ 兼容。ESQ 旨在与私有内存池服务兼容,例如可以充当构建器的 SUAVE。它看起来类似于我们在以太坊上使用的 PBS,现在:
与 PBS 一样,构建者可以获得提议者(此处为排序器)的盲目提交,以提议给定的区块。提议者只知道从提议区块中获得的总效用(构建者的出价),而不知道内容。
综上所述,我们再回过头来看一个想做跨链套利的搜索者。SUAVE 本身可以构建并发送到两个不同的 Rollup:
但很有可能 B1 赢得了拍卖而 B2 输了(反之亦然)。如果将这两个 Rollup 选择到同一个 SS 中会发生什么。
SS 节点不知道交易实际上在做什么,所以它们需要有人(比如 SUAVE,或其他 MEV-aware 构建者)为它们构建一个完整的区块,如果它们想要高效的话。好吧,SUAVE 执行者可以将 B1 和 B2 都提交给 SS,条件是两个区块都被填充或杀死(原子地执行或删除两者)。
现在你可以在整个过程中获得非常好的经济保证:
我最近在 Flashbots 论坛上发了一篇关于 SUAVE 的潜在经济安全模型的帖子。简而言之, 我讨论了为什么从长远来看,Rollup 对于 SUAVE 来说可能是比重新质押更好的选择。
Hasu 也对重新质押和 Rollup 之间的权衡做出了一些非常深思熟虑的回应。以下是他回应的概要:
这里有一个新想法:两者都做怎么样?这就是重新质押 Rollup。
这样并没有解决 Hasu 提到的所有问题,但它仍然是一个非常有趣的新选择,尤其是从长远来看。
Rollup 可以使用这些 EigenLayer 重新质押者来实现本地共识,而不仅是提供安全,但是链随后汇总到以太坊(向以太坊发布数据和证明)。
如前所述,Rollup 可以决定实施他们自己的本地共识,以便在真正的 L1 最终确定之前为短期预确认和重组阻力提供更有力的保证。好吧,为什么我们不让 Rollup 共识集成为一组以太坊重新质押者呢?现在你有两个选择:
一旦 L1 完成确定性,任何 Rollup 都具有相同的安全性。这只是实现自己共识的 Rollup 的一种变体。与其像前面描述的那样在 Rollup 上设置自己的验证器并由自己的原生代币提供保护,这种方案选择让以太坊重新质押者运行共识。
同样,如果 Celestia 采用某种形式的重新质押(目前 Celestia 的 L1 非常小,没有智能合约功能),那将会很有趣。我之前曾写过,对于 Celestia 来说,嵌入 Rollup 将是一个有趣的方向,而本地重新质押将是另一个令人着迷的工具,允许自由市场决定他们想要加入哪些功能。重新质押还可以帮助 Celestia 的安全预算,因为 alt-DA 层的价值累积模型仍未得到证实。
最简单的想法(一般 Rollup 所做的)是使用简单的 FCFS 运行单个排序器,排序器按照它们收到的顺序提交事务。你可以合理地相信单排序器遵守 FCFS 排序,但它仍然会加剧潜在竞争和相关的负外部性,以及其他问题(不要实施 PoW 来尝试修复它)。因此,即使是中心化排序器也需要更有效地应对 MEV。
上面的一些解决方案隐含地处理了 MEV 的部分问题(例如,举办一个完全免费的公开拍卖),但显然没有 Rollups 想说他们的用户被夹在中间。所以,我们可能需要发挥创意,结合拍卖的好处和可编程的隐私。
这就是为什么中心化排序器今天喜欢拥有私有内存池——试图确保用户不会被抢跑等。但这并不容易去中心化。如果你向许多排序器开放,你是否相信他们运行自己的私有内存池?即使你这样做了,如果每个人都有自己的私人内存池并且你需要开始轮换领导者,那也可能产生新的问题。
加密内存池是解决其中许多问题的一个引人入胜的研究领域。我刚刚发布了一篇文章介绍它。在这篇文章中,我简要概述了 FCFS 提案的一些变体。
意识到简单 FCFS(先到先得) 的局限性和负外部性,Arbitrum 已经开始探索它的新变体。最近,他们提出了时间提升(Time Boost)机制。基础知识:
提升由以下公式计算:
F = 交易的优先费
g = 可提升的最大时间(500 毫秒)
c = 待定常数
当前搜索者只能通过尽量减少延迟(打开许多连接、物理上接近、基础设施投资等)来表达他们对快速包含到 Arbitrum 排序器的偏好。Time Boost 反而会降低投资于上述策略的动机,因为搜索者现在可以通过他们的优先费用出价来表达他们对快速包含交易的偏好。
它比简单的 FCFS 有了明显的改进,但在我看来仍然有一些缺点:
FBA-FCFS
Flashbots 的 Xin 去年为 Arbitrum 提出了一个替代方案(FBA-FCFS) 。这种实现 Themis 的频繁批量拍卖风格的变体。在提案中:
与时间提升提议类似,有一些想法尝试保证相对较快的交易包含(建议 <500 毫秒)并防止通过受信任的节点抢跑。同样,它允许搜索者通过费用表达他们的偏好,从而减少了延迟竞争的动机)。
在给定批次的末尾,「快速搜索者」存在剩余的延迟优势,而其他「慢速搜索者」无法竞争:
资料来源:区块空间市场中的延迟军备竞赛问题
这是此类拍卖的一个很好理解的方面。更长的批次时间可能进一步使延迟边缘相关的时间百分比下降,尽管批次价值可能更高。较长的出块时间会对 MEV 产生其他影响。
延迟边缘总结:
关于延迟时间:
FBA-FCFS 带来了更多的可变性(例如,交易可能会根据接收时间滑到下一批),但不支付优先费用的普通用户交易的收录时间平均应该更短。时间在 Time Boost 模型中被连续处理(没有区块的概念),而时间在 FBA-FCFS 模型中被离散化。
请阅读 Phil 的这篇文章。
希望现在你对排序器去中心化的路径和相关障碍有一个不错的认识。这是 Rollup 在未来几年内成熟所需要应对的众多挑战之一。
其他一些有趣的探索领域包括:
感谢 Ben Fisch 、Josh Bowen 、Cem Özer 、Kelvin Fichter 、Zaki Manian 、Hasu 、Robert Miller 、Tarun Chitra 、Sreeram Kannan 以及其他人围绕该主题的投入和讨论。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。