当前位置:首页 > 资讯 >

万字详谈Rollup的去中心化路径

原文来源:joncharbonneau.substack.com

原文作者:Jon Charbonneau

原文翻译:Franci, ECN

万字详谈Rollup的去中心化路径

目前的 rollup 基本上都是需信任且需许可的:

万字详谈Rollup的去中心化路径

  • 强制交易打包机制 —— 即便出现 rollup 运营者审查用户的情况,用户也应该能够强制打包其交易,以实现抗审查。

  • L2 定序器去中心化和 (可选) 本地共识 —— 单一型定序器、PoA、PoS 领导者选举、PoS 共识、MEV 拍卖、基于基础层的 rollup、PoE,等等。

  • 共享定序器和跨链原子性 —— 这是真正有趣和完全新的东西。

  • MEV 可捕获设计 —— 我将简要地介绍 FCFS (先到先服务) 的一些变化。对于加密的交易池,你可以参考我最近的帖子。

  • 许多其他提高 rollup 安全性的要求将不在本文的讨论范围内 (比如减少升级密钥的权力、实现强健的和无需许可的证明,等等)。

    智能合约 Rollup (SCR)

    首先,简单复习一下 SCR 的工作原理,这是我们当前在以太坊上常见的 rollup。从高层次来说,一个 SCR 基本上包括:

    1. 一批有序的输入数组(在L1上,所以交易数据必须在 DA 层发布)。

    2. (rollup 节点软件)在它们上面运行的代码。

    3. 对这些输入运行函数产生的确定性输出(rollup 区块链)。万字详谈Rollup的去中心化路径

    cr: How Rollups *actually* work - Kelvin Fichter

    更具体地说,传统的定序器通过向其在 L1 的智能合约发布 rollup 区块的状态根和 calldata(最终以 data blob 的形式)来对 rollup 区块生成承诺。新的区块不断扩展 rollup 对区块头。链上合约运行一个 rollup 的轻客户端,将其区块头的哈希值保存起来。在收到有效性证明后,或在欺诈证明窗口期过后,该智能合约就会敲定结算。如果一个未被敲定的 ORU 区块无效,它(以及所有后续的区块)会因为欺诈证明对提交而被回滚,最后成为孤块。证明帮助保护桥接:

    万字详谈Rollup的去中心化路径

    交易 batch 的提交应该需要应用某种类型的保证金/押金规则,以抑制恶意行为的发生。例如,当一个欺诈性的 batch 被提交了 (即无效的状态根),押金将被销毁,并按某种比例分给欺诈挑战者。

    SCR 具有 “合并的共识” - 即可在链上验证的共识协议。Rollup 协议可以完全在 L1 智能合约中运行。它不影响主链的任意共识规则,也不需要这些规则的支持。

    去中心化共识协议通常包括四个主要特征 (注意,以下是一个非常简化的版本,并没有完全列出共识协议的各种类型。比如无领导协议):

    1. 区块有效性函数 - 状态转换函数。区块有效性在链下执行,然后通过有效性证明或者欺诈证明机制来证明其有效性。

    2. 分叉选择规则 - 如何在两条原本有效的链之间选择。Rollup 旨在从构造上实现无分叉,所以不严格要求有一个复杂的分叉选择规则。

    3. 领导者选举算法 - 选出一位领导者,ta 可以通过添加新区块以扩展链头,从而使区块链不断延伸。

    4. 抗女巫机制 - PoW、PoS 等

    可以认为 1 和 2 已经实现了,那么对于去中心化一个定序器的最低要求便是某种形式的抗女巫攻击 领导者选举。 Fuel Labs 一直都是这个阵营的支持者,他们认为 PoS:

    • 不应该用于 rollup 中的完全共识协议 (即 rollup 验证者/定序者将对区块进行投票)

    • 应该只用于 rollup 中的领导者选举

    • 当然,也有其他论据很好地反驳了 Fuel Labs 的观点,认为需要有 L2 本地共识。稍后会有更多关于这方面的内容。

  • SCR - rollup 规范链由 L1 智能合约决定

  • SR - 没有 L1 智能合约来决定 rollup 规范链。Rollup 主链可以由 rollup 节点自己决定 (检查 L1 DA,然后在本地验证分叉选择规则)。

  • 万字详谈Rollup的去中心化路径

    Celestia

    相关说明:有人提出一个有趣的观点,即不存在全球规范链 (只有决定哪条链为规范链的桥接),对此有人提出有力的反驳。以及其他相关长推,阐述了 rollup 在主权性和 (自动) 可组合性之间的权衡。我鼓励大家浏览一下这些观点,还有最近这条关于 Bitcoin 主权 rollup 的长推。

    在任何情况下,上述所讨论到的 “规范链” 框架都很容易理解,并且这不是本文的重点,所以我还是会继续使用 “规范链” 这个术语。有关 rollup 一般架构的更多背景,请参考此处。

    用户发起的强制交易打包

    智能合约 Rollup

    如上所述,定序器通常负责批处理交易并将它们发布到 L1 智能合约。但是,用户也可以自己直接在合约中插入一些交易:万字详谈Rollup的去中心化路径

    当然,这是低效且昂贵的,所以定序器将负责批处理交易,并在常规的过程中一起提交这些 batch。这将在许多交易中摊销固定成本,从而实现更好的压缩:万字详谈Rollup的去中心化路径

    定序器承诺最终在 L1 上发布这些交易,同时我们可以计算输出,以获得更软的预确认 (softer pre-confirmation):万字详谈Rollup的去中心化路径

    当定序器将这些交易发布到 L1 时,输出被敲定:

    万字详谈Rollup的去中心化路径

    通常情况下,用户只会在从 L1 桥接资产到 L2 时需要自己提交交易。这被添加为 L1 合约的输入,它告诉 L2 可以铸造由相应 L1 锁定资产支持的资金了。万字详谈Rollup的去中心化路径

    如果我想把我的钱提回 L1,我可以在 L2 上销毁它,并告诉 L1 把我的钱还给我。L1 不知道 L2发生了什么 (L1 并没有执行这些交易),所以需要在请求解锁我在 L1 上的资金的同时提交一份证明。

    万字详谈Rollup的去中心化路径

    因为我来自 L2,所以定序器可以发起这个提款请求并提交给 L1。然而,这样做的话就说明需要信任 L2 定序器的抗审查能力 (CR, censorship resistance),也就是说不再获得 L1 的同样安全保证。也许这些定序器不喜欢你,或者定序器宕机了,所以你只能永远卡在 L2 上了。

    Rollup 可以通过多种措施在本地提高自己的 CR。这可能包括具有高价值质押的 L2 共识集、一些交易打包列表的各种变体,添加阈值加密等等,以最大限度地减少 L2 用户审查的可能性。这些都很棒,但理想情况下,我们还是希望 L2 用户拥有与 L1 相同的抗审查保证。

    如果用户正在被审查,他们需要一些方法来强制退出 rollup 或者强制将他们的交易打包到 L2 中。这就是为什么 L2 用户应该保留做一些事情的能力,比如自己可以强制将他们的 L2 交易直接包含到 L1 合约中。例如,被审查的用户可能能够直接向 L1 提交单个操作的 batch。

    万字详谈Rollup的去中心化路径

    来源: Starknet 逃生舱口研究

    但是,如果 L2 用户的唯一选择是将交易直接强制包含到 L1 中,这并不理想。这对于许多低价值用户来说可能是不可行的,特别是当 L1 的交互成本越来越高时。更高级的设计可能能够绕过这个限制,在 rollup 之间强制进行原子交易。Kalman Lajkó 正在研究一个迷人的设计,强烈推荐大家阅读。它希望在具有共享证明和共享 DA 层的系统中启用跨 rollup 强制交易打包。

    主权 Rollup

    强制打包在 SR 中的运作不同,因为如前所述,它们执行的分叉选择规则与 SCR 不同(Sovereign Labs 写了一篇关于这方面的帖子)。

    在 SCR 中,L1 智能合约执行 rollup 的分叉选择规则。除了验证 ZK 证明之外,它还检查该证明是否建立在之前的证明 (而不是其他的证明分叉) 之上,以及它是否处理了所有在 L1 上发送的相关强制打包交易。

    SR 可以将它的 ZK 证明发布到 L1 DA 层,以 calldata/blobs 的形式向所有人公开 (即使 L1 没有验证它们)。然后,只需添加一个规则,即新证明只有建立在前一个有效证明的基础上才有效。该规则可以在客户端强制执行,但它随后会要求用户扫描链的历史,直至创世区块或者某个检查点。

    而另一种方式是,可以将 calldata 与 L1 区块头联系起来,并且可以添加一个声明 “我已经扫描了 DA 层的证明 (从区块 X 开始,到区块 Y 结束),并且这个证明基于最新的有效证明构建”。这在证明中直接证明了分叉选择规则,而不需要在客户端强制执行。

    由于已经扫描了证明,同时还可以证明已经扫描了任何强制打包交易。任何人都可以在愿意的时候直接将强制打包交易发布到 L1 DA 层。

    交易敲定的层级 & ZK 用于快速敲定

    以太坊上的链上证明验证通常非常昂贵,因此目前的 ZKR (如 StarkEx) 倾向于每隔几个小时才向以太坊发布一次 STARK。相对于交易的数量,证明的增长往往非常缓慢,因此这样对交易生成 batch 可以有效地节省成本。然而,这么长的敲定时间并不理想。

    如果一个 rollup 只是在链上发布状态差异 (而不是完整的交易数据),那么即使是全节点也不能在没有证明的情况下确保这种最终确定性。如果 rollup 的完整交易数据被发布到链上,那么至少任意全节点都可以与 L1 一起敲定交易。

    通常情况下,轻节点只依赖于中心化的定序器进行软确认。然而,ZKR 可以在 p2p 层快速生成并分发 ZK 证明,以便所有轻客户端实时查看,并以 L1 速度为它们提供最终确定性。稍后,这些证明可以递归地批处理并发布到 L1。

    这就是 Sovereign Labs 计划要做的,还有其他类似方案,比如 Scroll 计划在链上发布中间的 ZK 证明 (但不验证它们),因此轻客户端可以相当快地同步。使用这两种结构,rollup 可以以L1的速度开始敲定区块,而不是等待将 batch 发送上链以节省开销。但是请注意,在这两种情况下只是将“硬敲定时间”降低到绝对最小值 (L1 速度)。

    不同的定序器设计永远不会比 L1 区块时间更快地敲定。不同的定序器设计所能做的最好的事情就是提供比 L1 区块时间更快的预确认,不同设计提供的确定性水平不同 (例如,你可能会相信具有高价值质押的去中心化共识集的 L2 的预确认,而不是相信单一型需信任的定序器的预确认)。

    Patrick McCorry 最近也对 rollup 交易最终确定性的层级进行了很好的概述。现在你可能已经明白了基本的概念:

    交易“最终确定性”具有不同的层级,这取决于谁提供了承诺 (以及 rollup 结构是怎么样的)

    不同的参与者在给定的时间会对 “真相” 有不同的认知水平 (例如,L2 轻客户端、全节点和L1 智能合约将在不同的时间了解相同的“真相”)

  • CR — 如上所述,用户强制打包交易的机制。

  • 活性 — 如果一些主要的定序器宕机了,所具备的一些热备份选项 (类似 ZKR 证明器和 ORU 欺诈证明的备份应该是无许可的)。如果备用定序器也宕机了,任何人都可以顶上。

  • 例如,备用定序器可以由 rollup 的治理选出。通过这种设置,用户获得了安全性、抗审查和活性。即使从长远来看,单个活跃型的定序器也可能是一个可行的选择。

    Base 很可能是一种趋势的开始。公司现在可以管理和优化他们的产品,就像他们对企业区块链的炒作一样,但现在它实际上可以成为一个无需许可的、安全的和可互操作的链。万字详谈Rollup的去中心化路径

    Base 打算最终去中心化他们的定序器集,但关键是他们并不严格地 “需要” 去中心化,而其他方案并不是 (或者只需要非常有限范围内的去中心化,如一个小规模的定序器集)。需要明确的是,这需要 rollup 来实现必要的步骤,来确保 rollup 是安全的且维护抗审查性 (移除任意的即时升级功能、实现健壮的证明、强制交易打包、MEV 拍卖等)。而当前的 rollup 并不安全。

    万字详谈Rollup的去中心化路径

    这将是对中心化/托管产品的巨大改进,而不是最大限度地取代去中心化产品。Rollup 只是扩展了设计空间。这在很大程度上也是为什么定序器去中心化并不是大多数 rollup 团队的首要任务 —— 对于确保用户安全、抗审查性和减少对 rollup 运营者的信任,其他项要重要得多。

    然而,如果用户/其他方需要介入以维持活性和 “实时抗审查性” (不同于通过 L1 进行强制打包交易获取的 “最终抗审查性”),这仍然不是理想的。基于强制打包交易机制,低价值用户介入可能成本高昂或不切实际。高度偏好实时抗审查和活性最大保证的 rolllup 将寻求去中心化。在运营单一许可型定序器时,也可能存在监管方面的考虑。

    Arbitrum 的 AnyTrust DA 的委员会。但重要的是,定序器在这里的权力要小得多 (用户不依赖于 rollup 定序器来确保安全,不像多签桥接运营者可以提取锁定的资金)。总的来说,比起单一型定序器,这种方案具有更好的抗审查性和活性,但仍然不完善。

    PBS 类型的拍卖系统将会出现,类似于我们今天在 L1 以太坊上看到的。在这种情况下,费用/MEV 可能会流向质押者。如果拍卖被纳入协议,那么费用/MEV 可能会进入某种形式的 rollup DAO 财库 (尽管在两种情况下它也可以被分配、销毁等等)。

    领导者选举的无需许可 PoS

    任何人都可以作为定序者无需许可地加入,但前提是必须质押 (可能是 L2 的原生代币)。质押机制可以通过智能合约在基础层建立,也可以直接在 rollup 中建立。Rollup 可以使用这个 PoS 某种形式的链上随机性,以此实现领导者选择机制 (像一些 L1 做的那样)。

    任何人获得区块排序权的概率 = ta 的质押占总质押的比例。可以通过丢失奖励、怠工惩罚和罚没对错误/恶意定序器施加惩罚。

    请注意,由于上述原因,这不要求定序器达成共识。Rollup 使用 L1 作为共识,因此不需要本地共识 (local consensus)。质押权重在轮换机制中起主导作用,决定了哪些定序器可以提议区块,但他们不需要对其他定序器提议的区块进行投票。

    这可以给任意长度的 epoch 授予排序权。某个参与者可能有权为 100 个连续的 rollup 区块排序,或者 1000 个,等等。更长的周期可能效率更高,并且在给定的时间里只需要一个定序器。然而,给扩展的垄断者授权也会带来其他外部效应。或者,领导者可以像普通 L1 那样交替使用每个区块。

    Dymension

    Dymension 就是这样一个项目。Dymension Hub 将是 Cosmos 中典型的使用诚实大多数 PoS 机制的 L1。它的 L2 (“RollApp”) 将使用它来结算和达成共识,同时依赖 Celestia 作为数据可用性存储 (因此这些 L2 实际上是 “optimistic chain” 而不是 “rollup”)。

    根据他们的 Litepaper,去中心化的 RollApp 排序将需要质押 DYM (Dymension 的原生资产) 在 Dymension Hub 中。领导者选举由相应的 DYM 质押数量决定。这些定序器将从各自的 rollup 中获得收入 (费用和其他 MEV),然后向 Dymension Hub 和 Celestia 支付相关的基础成本。

    由于这种机制,几乎所有在这个堆栈中捕获的价值都会直接累积到 DYM 代币中。而如果把自己的原生代币用于排序的 rollup (如 StarkNet 打算使用 STRK 所做的那样,下文会介绍) 会将价值累积到他们自己的代币中。Dymension Hub 的设置类似于以太坊 rollup 只能使用 ETH 进行定序者选举。

    在我看来,这极大地降低了在这样的结算层上部署 L2 的动机。大多数 L2 团队自然希望他们自己的代币能够积累有意义的价值 (而不仅仅是用作费用代币,就像这里可能的那样)。毕竟他们是在经营一个企业。

  • PoS 定序器领导者选举 — 如上所述,某种形式的领导者选举是必要的。

  • PoS 共识 — 激励 L2 验证者在交易被 L1 敲定之前达成临时的 L2 共识,提供更强的预确认。如上所述,这点不严格要求,但它是一个有吸引力的选择。

  • 此外,STRK 可以以某种形式用于:

    • DA 的 PoS 共识 — 用来激励提供替代性的 DA 链 (alt-DA, 比如 volition),这需要单独的共识。

    • 证明 — 激励证明者生成 STARK。

    交易流程如下:

    1. 定序 — 定序器排序交易并提议一个区块

    2. L2 共识 — StarkNet 共识协议对已提议的区块签名

    3. 证明生成 — 证明者为已达成共识的区块生成证明

    4. L1 状态更新 — 向 L1 提交证明以更新状态万字详谈Rollup的去中心化路径

    有关 StarkNet 计划的更多细节,可以参考这个系列文章。

  • 使用领导者选举和本地共识的 PoS — “我只接受 L2 共识签名过的区块。”

  • 使用领导者选举的 PoS — “目前只有选定的定序器能够提交区块。”

  • 如果 rollup 没有本地共识,需要做的就是:

    1. 使 rollup 区块提议过程无需许可。

    2. 创建一些标准,为给定的区块高度选择最佳的区块

    3. 让节点或结算合约强制执行分叉选择规则

    4. 继承 L1 的共识和最终确定性

    注意,不管是哪种情况,L2 的价值都可以累积到 rollup 代币中。即使 L2 代币只是用于某种形式的领导者选举 (而不是共识投票),排序权产生的价值仍然会累积到 L2 代币中。

    L2 共识的缺点 (只有领导者选举)

    现在让我们来讨论在 L1 敲定之前具有/不具有本地共识之间的权衡。

    Fuel Labs 团队提出的一个论点是,L2 本地共识会降低抗审查能力。“这使得大多数验证者可以审查新区块,这意味着用户资金可能会被冻结。Rollup 不需要 PoS 来守护,因为 rollup 是由以太坊保护的。” 这里是一个有点灰色的区域。如前所述,即使定序器出现审查交易的情况,rollup 仍然可以提供抗审查方案 (例如,直接强制交易打包进入 L1,或更复杂的设计,如 Kalman Lajkó 正在研究的那个)。

    另一种说法是,完全的共识只是"效率低下"。例如:

    • 一次只有单个定序领导者在单个盒子中运行所有东西,

    • 一次只有单个定序领导者在单个盒子中运行所有东西,然后所有其他节点需要对该提议投票以及达成共识,

    前者比后者简单得多。

    当然,这因所选择的特定的定序器设计和共识机制而有很大不同。

    此外,请注意,有些人对在定序器去中心化中使用 PoS 提出了担忧,如这里和这里。L1 与 L2 的错综复杂的关系可能使处理某些类型的攻击更具挑战性。

    添加 L2 共识的优点 (加上领导者选举)

    对于定序器来说,最大的目标可能是在 L1 提供的完全安全保障之前给用户提供更快的软确认。看一下 StarkNet 的机制要求:

    “强健和快速的 L2 最终确定性是 StarkNet 的目标。由于只有在交易 batch 被 L1 证明之后,StarkNet 的状态才会被敲定 (可能需要几个小时)。因此,在下一个 batch 被证明之前,L2 去中心化协议应该就规划好的交易执行顺序做出有意义的承诺。”

    添加某种形式的共识 (由许多定序者提供的经济安全支持) 有助于在这期间提供更强的保证 (rollup 区块的预先确认是没问题的):

    “Starknet 共识必须具有很强的责任感,即违反安全和活性的行为可以通过罚没任何一部分参与者 (包括恶意的大多数质押) 来执行惩罚。”

    Rollup 也可以灵活地尝试不同共识机制光谱之间的权衡点,因为它们最终总是可以回到以太坊 L1 的安全性和动态可用性。

    Vitalik 早在 2021 年就提出了这个“完全无政府状态”的想法。允许任何人在任何时间提交交易 batch。第一笔扩展 rollup 的交易会被接受。它满足了上面讨论如何去中心化定序器的两个最低要求:

    • 抗女巫 — 由 L1 提供的抗女巫能力 (即交易费用和区块大小/gas 上限)。

    • 领导者选举 — 领导者选举是隐性且延后的。

    这就足够了,因为 L1 已经提供了安全性。如果 L2 区块已经发布到 L1 上,那么只有当它们是无效的或构建在无效块之上时 (将被回滚),它们才会变成孤块。如果它们是有效的,并且发布到 L1,那么它们具有与 L1 本身相同的安全保证。

    Vitalik 指出这种方案有一个很大的问题是,它的效率会非常低。多个参与者可能并行提交 batch,并且只有一个会被成功打包。这在生成证明时浪费了大量的精力,或者说发布交易 batch 花费了许多不必要的 gas。想要知道你的交易是否会很快被打包,这是非常麻烦的,而且效益很低。

    基于基础链的 Rollup (Based Rollups)

    然而,现在可以通过 PBS 使这种无政府状态的设计可行。它允许更严格的排序,每个 L1 区块最多一个 rollup 区块,因而不会浪费 gas。(尽管可能有浪费的计算)。L1 构建者可以只打包最高价值的 rollup 区块,并根据搜索者的输入出价构建该区块,这与任何 L1 区块类似。为了避免计算的浪费,默认情况下也可以合理地使 ZK 证明过程需许可 (具有相应的机制允许无需许可地回滚)。

    这就是 Justin Drake 最近提出的 “基于基础链的 Rollup” 的核心理念。他使用这个术语来指代由 L1 (“基础”层) 主导排序的 rollup。L1 提议者只需确保在他们自己的 L1 区块中纳入 rollup 区块(大概是通过构建者)。这是一个简单的设置,可以立即提供 L1 活性和去中心化。他们可以避免一些棘手的问题,比如在 L2 定序器正在审查的情况下解决强制打包交易的问题。此外,由于不需要定序器签名验证,因此可以减少一些 gas 开销。

    一个有趣的问题是关于这些 L2 交易在哪里被处理。L2 客户端需要将这些交易发送到某个地方,以便 L1 搜索者/构建者接收它们并针对它们创建区块和数据 blob。它们可能会被发送到:

    • L1 交易池 — 它们可以与一些特殊的元数据一起发送给 “知情的” 搜索者/构建者来解释它们。但是,这可能会显著地增加 L1 交易池上的负载

    • 为每个 L2 提供的新的 p2p 交易池 — 沿着这个思路的一些解决方案似乎更有说服力。除了他们平常的渠道之外,搜索者/构建者将开始检查和解释这些新交易池的交易。

    • 一个明显的缺点是基于基础链的 Rollup 限制了定序器的灵活性。例如:

    • MEV 缓解 — Rollup 可以创造性地使用 FCFS、加密交易池等各种变体。

    • 预确认 — L2 用户喜欢快速交易“确认”。基于基础链的 Rollup 最多会回到 L1 区块时间( 12 秒),或者等待更长的时间来发布完整的交易 batch。

    有趣的是,这正是早期 rollup 团队正在构建的:

    https://twitter.com/DZack 23/status/1635503593070657536? s= 20 

    Justin 指出,再质押 (restaking) 可能会有所帮助。

    https://twitter.com/jon_charb/status/1635898303106756609? s= 20 

    这些都是 EigenLayer 的研究领域,至少在他们的白皮书中提到过。目前还不清楚这是否是一个切实可行的解决方案。为了通过再质押有效地改善这些缺点,可能会寄望于所有的质押者都选择运行它。因此,这个想法这样来实现似乎更合乎逻辑:让想要这样做的质押者子集选择进入一个单独的共享排序层(稍后会详细介绍)。

    效率证明 (Proof of Efficiency, PoE)

    去年,Polygon Hermez 提出了一个名为 PoE 的提案。这是另一种专门针对 ZKR 的 L1 定序变体。这里的定序器是一个完全开放的角色,任何人都可以提交交易 batch (即完全无政府状态/基于基础链的 Rollup,因此它具有相同的限制)。PoE 机制由两个参与方组成两个步骤:

    定序器

    定序器收集 L2 用户交易并通过发送一个 L1 交易 (其中包括所有选定的 L2 交易的数据) 来创建一个交易 batch。定序器将根据收到的经济价值来提交区块,或者为用户提供服务级体验 (例如,在每个 L1 区块中发布一个交易 batch,即便这会使 L2 交易更昂贵,因为用户想要交易更快完成)。

    万字详谈Rollup的去中心化路径

    定序器将支付 L1 gas 费来发布交

    猜你喜欢

    关注我们

    微信二维码

    微信