Rollups 与集成链的安全性
1,带有 DAS+ 有效性证明的集成链
我们现在看到,有关 DA 和状态有效性的安全性可以直接通过加密技术(DAS + 有效性 / 故障证明)进行检查,而无需对链的运营商进行强有力的假设。任何协议都可以在技术上实现这些。全节点还可以在没有外部假设的情况下检查 DA 和状态有效性。
现在让我们关注其他属性 - 活跃度和抗重组。正如我们之前所看到的,无论你运行哪种确认规则,这些都可能会失败。再看一条 DAS+ 有效性证明 +PoS 单插槽最终性的集成链:
选择强大的确认规则对于安全故障的子集特别有效,即使大多数恶意验证者也无法欺骗全节点或全验证器轻节点,使其相信:
- 不可用的数据实际上可用;
- 或无效的状态转换是有效的;
无论以太坊有 1 个验证器还是无数个验证器,全节点都或多或少地相信区块的 DA 或有效性,他们通过检查来得到保证。完整验证器轻节点可以以更简单的方式进行检查(但请注意,DAS 会做出一些其他假设,我们将在稍后讨论)。
然而,恶意的大多数验证器可能会阻止账本增长、审查你或重组链(发生哪些失败取决于确认规则)。DAS + ZK 救不了你。抗重组和活跃度在某种程度上总是依赖于给定链的各种底层属性(例如可靠的运营商、经济激励、社会共识等)。
不太明显的是,活跃度和抗重组仍然是给定确认规则的属性,因为每个节点都会受到和上表中相同的攻击。无论这里的确认规则如何,他们都有相同的保证。
然而,当你删除单插槽最终性假设时,这一点再次变得明显。在以太坊的 Gasper 中,根据你遵循的账本(即可用的最长链账本或检查点最终确定账本),你将再次拥有不同的活跃度和抗重组属性。大多数恶意验证器会导致不同的安全失败,具体取决于你运行的确认规则。
无论如何,关键是链的底层构建在这里非常重要。你需要强大的运营商、经济激励和社会共识来维持链的活跃度和抗重组。此外,诸如以太坊之类的双账本共识协议为用户提供了宝贵的灵活性,可以根据自己的需求自行计算可用性与最终性。
2,使用 DAS + 有效性证明 Rollup
现在让我们稍微修改一下这个例子:
- 上一个示例 - 具有 DAS + 有效性证明的集成链,想象一下采用今天的 Solana,但添加 DAS + 证明;
- 新示例 - Rollup 部署在外部主链(例如以太坊)上,具有有效性证明 + DAS(注意以太坊 DAS 尚未上线),Rollup 有一个去中心化的定序器集,可以达成快速预确认的共识;
你会注意到,Rollup 对于不同的时间范围有两类完全独立的确认规则(即无论你是基于定序器的预共识进行操作还是等待主链的最终共识),我们现在来看看每条路径。
快速路径 - 在主链共识之前
Rollup 节点可以依赖定序器的确认(在发布到主链之前),我们假设他们可以运行以下 Rollup 节点:
- Rollup 共识验证器轻节点 - 信任 Rollup 定序器共识中诚实的大多数;
- Rollup 完整验证器轻节点 - 在定序器的 feed 上运行 DAS + 在将任何内容发布到以太坊之前检查有效性证明;
- Rollup 全节点 - 从定序器的 feed 中下载所有数据并执行所有交易,以直接检查 DA 和有效性;
从技术上讲,Rollup 定序器可以促进 DAS 并在发布到主链之前提供有效性证明,但实际上这不会发生。完整验证器轻节点通常旨在通过主链检查这些,但是我假设「实时」DAS + 证明可以与集成链进行更清晰的同类比较。
下表是与集成链示例相比的变化:
- 依靠 Rollup 定序器来实现活跃度和抗重组,而不是集成链的验证器集;
- 只是删除了最终的活跃度属性,因为在这里只查看主链共识之前的时间范围(这些「最终」活跃度属性稍后将来自主链);
删除内容以红色删除线显示,添加内容以蓝色显示:
慢速路径 - 等待主链共识
为了额外的安全性,节点可以等待主链(例如以太坊)的共识,这就是更清楚地发挥作用的地方,即 Rollup 节点也应该运行主链节点:
- 主链共识验证器轻节点 - 信任主链诚实的多数共识;
- 主链全验证器轻节点 - 检查主链的有效性证明 + 在主链上运行 DAS(包括 数据 Rollup+ 主链数据);
- 主链全节点 - 下载所有主链数据(包括检查 Rollup 数据)+ 执行所有主链交易以直接检查有效性;
请注意,可以通过两个不同的路径验证 Rollup 的状态有效性:
- 主链外部(运行额外的 Rollup 节点软件) - Rollup 不需要其主链来验证其状态或 STF,不需要部署验证桥,相反可以通过另一种方法检查 Rollup 证明(例如通过 p2p 接收 Rollup 证明),这需要运行额外的 Rollup 节点软件来验证证明(即 Rollup 轻节点);
- 主链内部(在主链内部实现 Rollup 节点) - 这是当今的常态,Rollup 轻节点验证器逻辑是部署在主链本身(即 Rollup 的内置桥合约),由于此 Rollup 验证器节点在主链的 STF 内运行,因此验证主链的 STF 也就意味着验证 Rollup 的 STF;
如果我们得到一个可零知识证明的主链(例如以太坊 L1 zkEVM)+ 所有 Rollup 都证明它们在主链内部的状态→我们就得到了 Vitalik 对奇点证明的愿景。验证以太坊的一个零知识证明意味着验证所有其他链及其内部实现的验证节点:
为了简单起见,我们在这里假设 Rollup 的状态有效性是在主链本身内验证的(例如 Rollup 与主链有一个内置的桥),因此我们可以忽略显式运行协议外的附加 Rollup 节点软件。
与之前的「快速路径」Rollup 表相比的变化如下:
通过主链强制交易包含或强制定序器 / 证明器替换来实现,我们在这里称之为「最终」活跃度,因为从 Rollup 的角度来看,它是一条慢速路径,但从主链的角度来看,这可以被视为「实时」活跃度。
Rollup 与集成区块链
现在我们可以看到与集成区块链和 Rollup 相关的安全属性变化:
- DA 和状态有效性 - 如果实施,DAS + 有效性证明可以提供适用的安全保证,无论链是集成的还是传统的 Rollup。实际上,如今这些技术以 Rollup 为主;
- 活跃度和抗重组(Liveness & Re-org Resistance)- 集成区块链在所有场景中独立负责这些。相反 Rollup 提供了不同时间范围内确认规则的选择。你可以采用不太安全的确认规则(信任定序器共识)来获得快速保证,或者等待更安全的确认规则(等待主链共识);
活跃度和抗重组
无法通过密码保证这些属性,即使跨越确认规则(例如无论运行全节点还是轻节点),你也可能容易受到安全故障的影响。
如果运营商完全失控,没有完整的节点或 ZK 证明可以保护你免受活跃度故障或重组的影响。
这些属性是通过强大且去中心化的运营商、抗审查机制、有利于活跃度的共识、重组的高「成本」、强大的社会共识等来实现的。客观比较这些通常具有挑战性。
你如何衡量运营商去中心化和社会共识?没有一个正确答案。这些可以说是最难设计的方面,而且它们对于给定的链来说确实是非常独特的。
重要的是,我们看到 Rollup 可以将抗重组和活跃度委托给主链,Rollup 上使用的确认规则可以具有相同的安全属性,就像它们在同一时间范围内在主链上运行一样。
链甚至可以选择将哪些属性委托给哪个链,不同类型的「L2」架构(例如 validiums、optimism 和侧链)可以吸收不同的安全属性子集。例如:
- 抗重组 - Rollup 可能会将抗重组委托给以太坊,它的分叉选择规则是根据以太坊共识确认的内容来选择「规范链」。如果以太坊重组,Rollup 也会重组。
- 活跃度- 但是,如果 Rollup 缺乏强制包含和强制操作员替换机制,则 Rollup 用户仍然不会收到以太坊的活跃度属性;
Rollup 还可以为用户提供退出 Rollup 的逃生通道,但保留审查用户并防止存款进入 Rollup 的能力(例如 Loopring 就是这样工作的)。如果存款在一段时间后仍未得到处理,用户可以从 L1 合约中提取锁定的资金。
这凸显了此类机制的重要性。
数据可用性和状态有效性
与活跃度和抗重组不同,节点可以确保 DA 和状态的有效性,而无需做出任何大的阈值假设(或无需在两者之间进行安全权衡)。恶意的大多数区块生产者可能会导致活跃度和重组失败,但它们不会导致全节点或全验证器轻节点的 DA 或有效性失败。
然而,共识验证者轻节点当然会受到诚实多数的状态有效性和 DA 失败的影响。他们只是相信共识所说的一切。这就是为什么 DA 和状态有效性是使安全确认规则易于访问并真正发挥作用的原因。这通常是传统 Rollup 与不太重视用户验证的大型区块链之间在意识形态上的巨大差异。
按照顺序,这些通常是平衡安全性和可访问性的首选方法:
- 使 DAS 和有效性证明可供广泛使用;
- 如果你没有 DAS 和 / 或有效性证明,则使完整节点可广泛访问(即资源要求低、易于运行等);
- 如果你没有 DAS 和 / 或有效性证明,并且完整节点基本上无法访问,那么请使共识验证者轻节点广泛访问,并拥有值得信赖的诚实多数共识;
- 访问 Infura;
请注意,2(完整节点)实际上是最安全的。ZK 验证非常简单,但 DAS 节点做了一些完整节点没有的额外假设。然而,它们提供与完整节点接近相同的安全性,而资源需求只是其中的一小部分,它们是可扩展的。
全节点只需下载所有数据,因此具有 100% 的确定性。只有当一切都在那里时,他们才会在区块上签字。没有对外部各方做出任何假设。
DAS 的目标是获得几乎与全节点一样好的安全性,同时资源需求大幅降低(即更高的规模)。这篇关于轻节点数据可用性安全级别的文章很好地涵盖了这一点。
简而言之,你通常会围绕网络同步性以及是否存在足够的节点来重建数据做出一些假设。如果敌对区块生产者隐瞒任何数据,即使是一小部分诚实的轻节点也应该能够集体重建区块。关于选择性份额披露还存在一些假设,其中敌对区块生产者可以单独欺骗一些少量的轻节点,但不能集体欺骗。
相对于典型的大致「N/2」假设(例如,51% 的区块生产者可以导致重组),这些「N 中少数」假设(例如,诚实的少数节点可以确保 DAS 安全)非常有利。 Vitalik 在信任模型的帖子中对此进行了很好的介绍。
总体而言,DA 和状态有效性并不像活跃度和抗重组那样由 Rollup「委托」。DA 和状态有效性可由用户直接验证,而其他属性更严重地依赖于链的共识参与者及其激励。
回顾一下之前验证 Rollup 证明的示例:
- 将 Rollup 的 ZK 证明发布到以太坊智能合约,你运行一个以太坊完整节点,隐式验证该证明;
- 将 Rollup 的 ZK 证明发送到我的 Rollup 轻节点,直接验证证明;
无论哪种情况,你都可以保证有效性。无论你在哪里检查,都无法确定其有效性。以太坊并没有像以太坊节点「强制」抗重组或活跃属性那样真正「强制」有效性。抗重组和活力很大程度上取决于你从谁那里获得它们。
考虑基于诈骗链的 Rollup:
- Rollup 的分叉选择规则是遵循诈骗链确认的链尖(the tip of the chain)→ 如果诈骗链重组,Rollup 也会重新组织;
- Rollup 的强制包含机制和定序器删除是通过诈骗链上的跨链桥接合约强制执行的→ 如果诈骗链的账本停止,那么 Rollup 的账本也会停止。如果诈骗链想要审查你的 Rollup,那么你就会受到审查;
Rollup 能够公开具有与其主链相同的安全属性的确认规则,他们最多可以按照其主机链共识的速度接收这些属性(实际上,它通常会慢一些,具体取决于 Rollup 发布到主链的频率)。
Rollup 还可以提供「快乐路径」更宽松的确认规则(即定序器)以获得更好的用户体验,但它们保留了失败时的交易回退。如果你的定序器停止了,你可以继续移动。但是,如果你的链完全依赖于你自己的验证器集(即作为集成链),则情况并非如此。
明智地选择 Rollup 的主链会对安全属性产生具体的影响。利用具有强大活跃度(账本增长 + CR)和抗重组特性的主链尤其有价值。
不同时间段的不同安全假设
让我们看一个简单的例子。Chain X 正在决定是在现有主链上部署为 Rollup,还是部署为自己的集成区块链。
Rollup 具有以下特点:
- 10 秒的出块时间;
- 可支持 DAS 轻节点
- 可以提供关于活跃度和抗重组的「高安全性」确认规则(例如去中心化的可信验证器等);
集成区块链具有以下特点:
- 出块时间为 1 秒;
- 可以实现 DAS 轻节点和有效性证明,无论它是作为集成区块链还是作为 Rollup 启动;
- 如实现中心化定序器 - 它将提供有关活跃度和抗重组的「低安全性」确认规则;
- 如果实现自己的去中心化共识(作为预确认的 Rollup 定序器集或作为集成链验证器集),它将提供关于活跃度和抗重组的「中等安全性」确认规则;
下表给出了用户在各种实现下可能拥有的最佳安全保证的简化直观表示(即他们使用可用的最强确认规则)。特别是,我们在这里关注活跃度和抗重组(因为我们假设该链将在这两种情况下仅实现 DAS + 有效性证明):
Rollup 的「最终安全性」高于其「实时安全性」,因为主链无法为我们提供比其自身出块时间更快的保证。即使你可以检查定序器的预确认是否是有效的状态转换,但在它们最终到达 DA 层之前,你也无法完全保证它们的最终性。
但正如我们所看到的,以 Rollup 方式部署到强大的主链可以增强安全性。他们可以按照其主链的速度租用安全性。从根本上说,没有办法以比主链自身共识更快的速度获得主链的全部安全属性。
然而,用户往往不耐烦。因此,Rollup 通常会提供更快的预确认,但在此期间的保证会较低。Rollup 可以选择一个平衡的定序器设计:
- 实用的功能和效率。例如中心化定序器可以提供快速的预确认并减少运营开销;
- 强大的保证。例如一个令人难以置信的去中心化定序器集可以提供更好的实时活跃度性,但代价是更高的运营成本和延迟(在最极端的情况下,你只需让 DA 层处理 Rollup 的排序,选择不公开更快的路径);
有趣的是,你可以认为 L1 排序 Rollup 的活跃度比中心化定序序器更差,具体取决于你的时间尺度。到目前为止,我们已经讨论了活跃度,将其纳入某种「有限时间」的概念中。然而,这完全是相对的和主观的。相对于什么?需要多少时间?
单纯的 L1 顺序 Rollup 将仅以 L1 区块的速度(例如 10 秒)包含在内,当你周围的世界在变化时,你在这些区块之间没有活跃度保证。所以这取决于你的基准:
- 如果基准 = Rollup 内部的操作,L1 顺序 Rollup 可能会提供更好的活跃度。在主链确认之前,链上的其他人不应该得到承诺,所以你们都处于平等的地位;
- 如果基准 = Rollup 外部的操作- 具有软性预确认的 Rollup 可以提供更好的活跃度。预确认只是一个免费选项,你仍然以主链的速度回退到主链保证,但在此期间你可以获得较弱的保证。如果你不信任他们,只需等待主链确认即可。世界不会在以太坊区块之间冻结,对于许多应用程序来说,长区块时间之间的过时价格可能是不可接受的;
如果你尝试在没有预先确认的情况下实现基于「真实」的 Rollup,则甚至有可能无论如何都会出现预先确认。对于参与者(例如以太坊构建者和验证者)来说,他们自己做出这一承诺是有经济激励的。这正是为什么有人讨论以太坊建设者和利益相关者如何尝试在基础层提供快速预确认。
这里有最后一个重要的说明。假设 Rollup 用户可以回退到与主链相同的活跃度,假设你可以完全以主链区块的速度强制包含(例如如果 Rollup 排序器正在审查你,你可以强制将交易包含在主链下一个以太坊区块)。
在实践中,通常会有短暂的延迟。如果你允许立即强制包含,你可能会暴露有利可图的审查 MEV 以及其他复杂性。然而,有些设计可以从主链提供近乎实时的活跃度保证(例如,可能以几个主链区块而不是一个区块的速度)。
无论确切的时间尺度如何,吸收主链的最终活跃度都是非常强大的,使用强大的主链作为协调机制提供了可信的威胁和退出权利。仅仅暴露这种可信的威胁本身,就使得它极不可能被需要从而从一开始就防止恶意行为。
例如,如果用户有可靠的机制可以强行退出甚至强行删除运营商,那么中心化的 Rollup 定序器就不能随意从用户那里提取租金并将其锁定。这是 Chris Goes 关于 MEV 转换成本边缘和慢游戏的演讲中讨论的一个一般领域。
当然,意外的活跃度也可能发生,在这种情况下,此备份路径可能再次非常有价值。