手机端
当前位置:主页 > 区块链 >

TokenPocket钱包链接|两万字长文:Rollups的安全性之辩

原文作者:Jon Charbonneau 原文编译:Frank,Foresight News

介绍

不管你喜欢还是讨厌,Twitter 可能永远不会停止关于「L2」或 Rollup 是否「继承安全性」(inherit security)的争论。

虽然大多数争论都是难以辨别的语义之战,但如果你能设法缩小争论范围,那么潜在的观点就非常有价值,因为它们触及了 Rollup 何时、何地以及为何有意义的核心问题。

可扩展的 L2 是否消除了市场对 L1 的需求?有没有可能将像 Solana 这样的 L1 变成 L2?

这些争论主要归结为安全问题。不幸的是,这里的「安全」定义一直非常难以捉摸。我们通常会随意使用这个术语,大多数人都大致知道我们在说什么,但又不完全清楚。我们将在这里跨不同架构详细分解安全性。

流行语定义

Rollup

我之前使用过 Mustafa 的以下定义:「Rollup 是将其区块发布到另一个区块链并继承该区块链的共识和数据可用性(DA)的区块链」。

以下则是 James Prestwich 给出了更一般的定义:「Rollup 是通过自定义状态转换函数,选择加入另一个共识机制,并保留超集状态的一种方式」。

两者都不需要验证桥,以最小的信任假设构建跨链桥接的能力是 Rollup 的主要好处,但单独分析它们至关重要。

我们可以考虑以下的 Rollup 标准:

  • Rollup 是通过在主链(DA 层)上的数据输入运行自定义状态转换函数(STF)而派生的有状态系统(例如区块链)。

  • 用于派生远程链的最终确认状态(即 Rollup)的所有输入数据(即完整的交易数据或状态差异)均在主链上确认。

  • 由于 Rollup 状态源自对主链上的数据运行的状态转换函数(STF),因此 Rollup 的有效性取决于主链的有效性。然后 Rollup 节点必须充分验证主链的共识和有效性(或对主链做出诚实多数假设);

Rollup 节点通过应用自身的状态转换函数(STF),在主链共识结果上确定 Rollup 的状态(例如主链确认排序和可用性的数据区块)。

跨链桥

跨链桥是允许两个区块链相互通信的系统。链 A(目标链)需要确信链 B(源链)上发生了某些事件,反之亦然。理想情况下,我们希望这种通信是双向的,具有强相关的安全属性(例如消息有效的高置信度、源链不会撤销等等)。

从根本上来说,跨链桥充当了另一个区块链的「观察者」(就像任何其他典型的人类用户一样)。跨链桥实现了给定的确认规则,通过该规则,它确信所连接链的状态(例如,必须通过多少个以太坊区块才能接受转账输入)。

  • 传统跨链桥通常运行源链的链上共识验证器轻节点(即它们信任大多数共识签署的任何内容);

  • 跨链桥可以通过充当完整验证器轻节点(即添加数据可用性采样(DAS) + 有效性 / 故障证明)来提供更强大的安全属性。例如,链的验证器可能需要在连接链的所有 DAS 轻节点上运行,与要求验证器运行连接链的完整节点相比,这是一种更轻量级的替代方案;

  • Rollup 跨链桥还可以保留主链的活跃性和抗重组性(因为 Rollup 必须共享主链的共识);

从主链桥接→Rollup

这个方向非常简单,因为 Rollup 节点会完全验证主链。

Rollup 节点知道主链上发生的一切,因此它们知道跨链桥接的交易何时发生,当前的以太坊 Rollup 完整节点还必须为以太坊基础层本身来运行完整节点。

请注意,如果支持的话,Rollup 节点也可以改为运行其主链的完整验证器轻节点。让我们考虑一个假设的例子,其中以太坊已经完全实现了以下升级:

  • 以太坊执行区块带有有效性证明(基础层的 zkEVM 研究正在进行中);

  • 以太坊已经实现了完整的 DAS,因此节点可以对 DA 进行采样;

  • 以太坊执行层将其数据作为 blob 发布到数据层,就像以太坊之上的任何其他 Rollup 一样(例如 Celestia 的执行层数据将被发布到其 DA 层,因此 DAS 节点将检查 Rollup 数据和 Celestia 自己的执行层的可用性);

  • 以太坊提供了完整的共识证明,而不是依赖于同步委员会(例如,通过验证器的整合、更好的签名聚合、可能的 ZK 共识证明等);

现在,假设你想为基于以太坊的 Rollup 运行完整节点,要遵循有效的 Rollup 链,必须了解以太坊的规范链,这就需要检查以太坊自身的共识和有效性:

  • 以太坊的共识——任何轻节点客户端都可以跟踪作为区块链、区块头签署的共识;

  • 以太坊自己的执行层 DA——Rollup 节点会对以太坊的 DA 层进行采样,检查 Rollup 数据和以太坊自己的执行层数据的可用性(请注意,DAS 节点仍然对完整节点做出一些额外的假设,我们稍后会看到);

  • 以太坊自身的状态有效性——有了 zkEVM,每个以太坊区块都会附带一个有效性证明;

Rollup 节点必须检查以太坊自身执行层的状态有效性和 DA,因为这些是以太坊区块的有效性条件。Rollup 节点需要知道它不仅跟踪共识已签署的以太坊,而且还知道它是有效的区块头。例如,他们可能会意外地跟踪共识签署但无效的以太坊区块(例如它产生了大量 ETH)。

如果基础执行层本身将其数据发布到 DA 层(就像其他 Rollup 一样)并添加有效性或故障证明,那么它将成为一个内置 Rollup。

从 Rollup → 主链桥接

这个方向比较棘手,因为主链默认不知道 Rollup 的状态和 STF(即以太坊节点不需要运行 Rollup 节点)。为了让主链相信 Rollup 的状态,你可以在主链上部署的智能合约(即 rollup 的验证桥合约)中实现 Rollup 的逻辑。该智能合约检查 DA 和 Rollup 状态的有效性。

同样,这个跨链桥是可选的。主链上的智能合约用于使所有主链节点相信 Rollup 的有效性,这就允许在良好的信任假设下进行双向通信。

Rollups、协处理器(Co-processor)和意图(Intents)

正如所讨论的,Rollup 除了拥有它们主链的状态(例如以太坊的状态)之外,还保存它们自己的一些状态(Rollup 的状态)。那么,CoW Swap 是否有自己的状态,而不是以太坊状态的一部分?如果是,那么听起来就像是 Rollup。如果不是,那么它可能是「协处理器」(Co-processor)。

然而,即使这个问题也不像看起来那么简单:

相反,你可能会认为区分因素是状态的持久性:

如果 CoW Swap 允许特定的参与者向用户提供快速的预确认(比以太坊的出块时间更快),并承诺包含批次处理(batch)的订单——因为以太坊批次处理时间比大多数用户想要的要长,那么它现在是一个 Rollup 么?

Chris Goes 在模块化峰会的演讲中探讨了这个话题,首先他为意图(Intents)提供了一个近似的定义:「对给定系统状态空间的偏好函数的承诺」。

请注意部分解决(匹配意图)和 Rollup 排序之间的相似之处。操作员获取用户的链下签名消息→将结果数据发布到主链。

  • 基于意图的应用程序——由此产生的状态变化在链上解决(例如,在 CoW Swap 示例中,应用程序位于基础链上,因此代币在那里进行兑换);

  • Rollup 应用程序——使用提交到主链的数据来计算 Rollup 所产生的状态更改;

以意图为中心的架构和以 Rollup 为中心的架构从相反的方向实现相似的目标。以意图为中心从用户和应用程序的角度广泛地解决了这个问题,以 Rollup 为中心的方式从不同区块链的角度广泛地解决了这个问题。

在这里,设置具体的区分边界并不重要。更重要的是,我们发现 Rollup 实际上与我们已经习惯的具有链下意图匹配的应用程序没有太大不同!

你依赖链下参与者(排序器与求解器 / 填充器等)来获得一些较弱的保证,例如提供最佳执行和良好的用户体验 → 根据发布到主链的数据来确定结果。但是,他们不保管你的资金。

随着可验证的链下计算变得越来越重要,两者之间的界限可能会变得模糊:

如果你希望意图求解器或 Rollup 排序器不那么受信任......

模块化区块链与单片区块链

单片区块链(又名集成区块链)通常被定义为垂直集成所有核心功能(即共识、DA 和执行)的链。它们对自己的安全负全部责任,Solana 和 Cosmos Hub 就是典型的例子。

DA 层(例如以太坊和 Celestia)通常被称为「模块化」区块链,因为它们将执行外包给 Rollup,但这并不十分准确。他们还独立负责自己的共识、DA 和执行。

即使 Celestia 的执行也会受到限制(例如,转账、质押、跨链)。同样如果有人在 Solana 之上启动 Rollup,它也不会神奇地成为一个「模块化」区块链。

因此,当你听到人们将以太坊或 Celestia 等链称为「模块化」区块链时,请意识到这更多是一种实际区别,而不是严格的技术区别。两者通常都在优化自己的架构以支持 Rollup。这些 Rollup 预计将处理其范围内的大部分交易执行。

即使 Rollup 也不一定完全「模块化」——Rollup 排序器可以就交易排序达成共识,提供 DA,并在主链执行任何操作之前执行交易。这就是用户获得预先确认的方式。然后主链提供另一个「最终」承诺,再次声明 DA 和对 Rollup 交易顺序的共识。

Rollups 与「集成链」(Integrated Chains)

对于我们的目的而言,更重要的区别是「Rollup」或「非 Rollup」。链的最终状态是否源自发布到单独主链(即 DA 层)的数据?

虽然我们今天将 DAS 和有效性 / 故障证明与传统 Rollup 联系起来,但我们应该注意到这些在逻辑上是不同的概念。理论上,任何「集成链」(例如典型的 Cosmos 应用链)都可以升级以添加 DAS 和有效性证明,而无需将其数据发布到以太坊等其他外部主链。节点将单独对该链进行采样和检查证明。

Vitalik 在他的《终局之战》(Endgame)中谈到了这一区别:

你可能会注意到,添加 DAS + 有效性 / 故障证明的「传统大区块链」(集成链)最终可能看起来像一个「内置 Rollup」(enshrined rollup)!类似地,「一个可扩展和占主导地位的 Rollup」可能会变得非常成功,以至于它只是与其主链合并以容纳该 Rollup。

区分的界限在极限处变得模糊。

因此,如果你相信 DAS + 有效性 / 故障证明是最终结果,那么某种意义上的「Rollup」是不可避免的。上图中的两种方法之间存在有效的区别:

  • 「Rollups」又名「模块化」 ——构建逻辑上独立的链,将数据发布到其主链(DA 层),重用主链的共识;

  • 「集成区块链」又名「单片区块链」 ——将所有内容集成到具有自己共识的一个协议中,不将数据发布到单独的主链(即使 DA 层和执行层在某种意义上是共享协议的逻辑上独立的部分);

当我们在本报告中讨论「Rollup」时,我们将指的是前者(即不是具有 DAS + 有效性 / 故障证明的集成链,这可能被称为内置 Rollup)。

虽然「传统」Rollup 并没有垄断 DAS 或证明(即集成的大型区块链可以添加它们),但请注意,我们在这里忽略了很多技术细节,你不能只选择 Solana 并决定「哦,我想我们今天就添加 DAS」。

这需要从根本上重构协议,以开始接近我们所看到的以太坊和 Celestia 正在做的事情:

改变数据编码方式以支持 DAS 将等同于减慢区块编码和传播速度,开始更接近传统的 DA 层:

出于这个原因,我们看到团队构建了以下内容:

  • 专门的 DA 层(例如以太坊的 Danksharding、Celestia 等)- 慢速区块 + DAS;

  • 共享定序器(例如 Espresso、Astria 甚至 Solana)- 实际上只是快速 DA 层,无需 DAS;

然而如果将快速区块和 DAS 的时间分开,它们并不一定不兼容。例如,你可以想象像 Solana 这样的链提供两条不同的路径:

  • 快速路径 - 继续尽可能快地执行交易并传播数据(就像今天一样);

  • 慢速路径 - 以可以异步采样的方式事后对数据进行编码,为 DAS 节点提供稍微落后于共识的保证;

Anatoly 在播客中讨论了 Eclipse 如何将以太坊、Celestia 和 Solana 结合在一起,从另一端来看,你可以想象 DA 层在使数据可用于采样之前添加更快的路径:

在同一基础层协议中提供两条路径可以有效地内部化快速共享排序,从而为基于 Rollup 提供有趣的设计。请注意,目前这仍然是一个非常探索性的想法。

确认规则

有了背景知识,我们现在可以开始分解这些不同架构的安全属性。

首先,节点通过运行「确认规则」(Confirmation Rules)来与任何区块链进行交互:

「确认规则,是指由节点运行的输出某个区块是否被确认的算法。在这种情况下,在某些假设下,主要涉及网络同步和诚实股份的百分比,当满足这些条件时,该区块将被保证永远不会发生重组 」。

对于给定的链可以存在任意多个确认规则:

  • 在确认比特币交易之前你需要等待多少个区块?1?6?10?

  • 你是否使用 LMD GHOST 确认基于以太坊可用账本的区块,还是等待最终性小工具(Casper FFG)来确认?

  • 你是否运行直接验证每个区块的完整节点,或者仅运行检查共识签署的轻节点?

  • 你只是问 Infura 么?

由于每个确认规则可以做出非常不同的假设,因此即使与同一条链交互,它们也可以具有非常不同的安全属性:

这种区别很微妙但很重要:

安全=安全性 + 活跃度

现在让我们深入研究 Rollup 是否会从其主链「继承安全性」。

继承,也许更清楚地说,Rollup 总是「租用」而不是「继承」其主链中的任何内容,它会为消耗的资源(DA)支付持续的成本,任何一方都可以选择结束这种关系。但这不是问题有趣的部分。

安全性,从现在开始我们将重点关注安全性。算法的安全(Security)由安全性(Safety)和活跃度(Liveness)组成:

  • 安全性(不会发生任何不好的事情),两个正常运行的节点所确定的最终状态将永远不会发生冲突;

  • 活跃性(最终会发生好事),所有正常运行的节点将在有限时间内完成反映适合包含的交易的新状态;

使用 Sreeram 的出色框架,我们可以将它们进一步分解为五个属性,这些属性共同确保确认规则的安全:

让我们考虑一个具有 DAS + 有效性 / 故障证明的假设集成链的示例。它的数据不会发布到任何其他外部主链。为了简单起见,我们假设即时最终确定(例如 Tendermint),因此可用分类账与最终确定分类账之间没有可用的区别(例如以太坊的 Gasper)。

我们将考虑三个确认规则,可用于使用不同类型的节点来跟踪链:

  • 共识验证器轻节点 - 验证共识证明(即信任诚实的多数共识)。

  • 全验证者轻节点 - 验证共识 + 检查 DA(使用 DAS)+ 验证状态有效性(使用有效性 / 故障证明);

  • 全节点 - 验证共识 + 直接验证 DA(下载所有数据)和有效性(执行所有交易并计算状态);

确认规则有安全属性,链没有

再次强调这一点,「我们通俗地谈论一条链是安全的,但实际上它是安全属性所附加的确认规则」。

让我们看一些例子。

CAP 定理

作为背景,CAP 定理告诉我们,没有一个账本可以同时满足这两个条件:

  • 适应性(Adaptivity,又名动态可用性) - 在动态参与下保持活动状态(即如果大部分节点离线);

  • 最终性(Finality,又名一致性) ——在网络分区下保持安全;

共识协议往往分为两个部分,每个部分都满足上述条件之一:

  • 最长链协议 - 这些协议(例如比特币的中本聪共识)即使在活跃参与节点的数量可变(即它们是自适应的)时也能保证活跃性,然而它们在网络分区下并不安全(即没有最终性);

  • BFT 型协议 - 经典共识协议(例如 PBFT)实现了最终性,但没有实现适应性;

比特币确认规则

比特币的共识并不提供任何硬性的经济最终性。

节点在其本地视图中观察最长的链,每个用户都可以自由应用他们喜欢的任何确认规则(例如接受具有 > k 个确认的区块)。标准是等待 6 个区块确认,但这取决于你。

对于更高价值的交易,等待更长时间是合理的。等待时间与安全性(即重组的可能性)之间需要权衡。

以太坊确认规则

以太坊的 PoS 共识(Gasper)乍一看似乎回避了 CAP 定理。然而,它实现了这两个属性,因为它包含两个嵌套账本:

  • 动态可用的分类账 - 如果网络未分区,则在动态参与下安全且活跃;

  • 最终确定的前缀分类账 - 始终安全可靠。如果网络未分区并且有足够的节点参与,则保持活动状态;

Gasper 属于「潮起潮落」(ebb-and-flow,又名双账本或双确认规则)协议家族。双账本设计不属于 CAP 定理的范围(即它假设单一确认规则)。当网络分区时,最终确定的账本落后于自适应账本,但当网络修复时它会赶上。

这允许在用户级别而不是在系统范围级别解决适应性与最终性之间的权衡。这是区块链 CAP 定理在允许用户依赖的适应性和最终性中,提出的「检查点最长链」协议的一个特征。这些协议为个人用户提供了最终性和适应性之间的选择,而不是将其强加于整个系统级别。

Gasper 明确公开了两个不同的确认规则,映射到上面提到的两个账本:

  • 动态可用规则 - 保证适应性。尊重最长链的区块头。LMD GHOST 是用于确定最重子树的分叉选择规则;

  • 最终确定规则 - 保证最终确定性。尊重由最终性小工具确认的区块。Casper FFG 是应用在分叉选择规则之上的最终性小工具;

正如论文中所讨论的:

「更乐观的自适应规则总是确认由更保守的规则标记为最终确定的区块,并且可能在可变的参与水平期间确认更多的区块。客户(用户)根据个人喜好在确认规则之间进行本地选择,而矿工遵循与这两个确认规则一致的固定区块提议规则」。

这允许系统中所有(诚实的)节点:

  • 遵循通用的区块提议机制;

  • 但不同的节点可以选择不同的确认规则;

无论参与程度如何,验证者都会继续延长最长的链(在不断增加的高度上开采新区块),但只有在有足够的参与度时才会出现新的检查点。

最长的链(包含最新的检查点)可以在不同的链之间交替(即重组未完成的区块),但无论网络条件如何(即最终性),检查点都保证位于单个链上。

用户的安全取决于他们遵守的确认规则。快速区块确认与更强的安全保证之间需要权衡。卖咖啡的用户可能更喜欢活跃性而不是安全性,但卖游艇的用户可能更喜欢安全性而不是活跃性。

以太坊节点还可以将一些其他的中间确认规则启发式应用于实际用途。与其像比特币那样使用朴素的 k 个区块作为自适应确认规则,我们可以添加其他启发式方法,其中包括有关网络同步和验证者诚实的假设。

这正是《以太坊共识协议确认规则》中提出的内容,它提出了具有以下属性的确认规则:

  • 在理想条件下 - 规则将在其插槽之后立即确认新区块;

  • 在典型的主网条件下 - 该规则应该能够在一分钟内确认大多数新区块;

该确认规则不能替代经济最终性。相反,它为相信网络同步将在不久的将来保持的用户,提供了有用的启发式方法。让我们比较一下两者:

让我们考虑一些例子,譬如你以 250 万美元的 ETH 出价售卖一艘游艇,以下是一些可能的确认规则:

  • 全节点 + 等待最终结果——即使是恶意的大多数验证者也无法欺骗你接受无效块(例如产生假 ETH)。如果他们付给你 250 万美元的 ETH,然后尝试稍后重组最终确定的区块,他们将承受巨大的成本(至少三分之一的权益是可惩罚性削减的);

  • 全节点 + 等待一个区块——大多数恶意验证者仍然无法欺骗你接受无效区块,然而他们可以在一个有效的区块中向你发送 250 万美元的 ETH,乘坐游艇离开,然后该区块立即重组,如果有足够的权益权重或较差的网络条件,这是可能的,它们没有被惩罚性削减;

  • 轻节点客户端——恶意同步委员会可以对你撒谎,而不会受到任何处罚,买家就可以乘游艇离开(请注意,这个同步委员会作为共识的子集是以太坊独有的,其他具有更高效的轻节点客户端支持的 PoS 链可以在验证者数量较少的情况下检查所有共识投票);

  • MetaMask——你只是信任 Infura,向你买游艇的人向 Infura 员工承诺他们可以在周末乘坐游艇,所以他们对你撒了谎,你认为你已经拿到了 250 万美元的 ETH,然后你交出了钥匙;

Rollup 确认规则

与任何链一样,节点使用不同的确认规则与 Rollup 进行交互。Rollup 最强的确认规则将与其主链的共识一起最终确定。Rollup 定序器可以暴露较弱的确认规则以获得更好的用户体验(即为不耐烦的用户提供快速预确认),但用户也可以等待主链确认规则的完全安全性。

典型的 Rollup 交易流程大致如下:

  • 用户向定序器提交交易;

  • 定序器对交易进行排序并给出预先确认;

  • 确定性 STF 应用于有序交易以计算新的 Rollup 状态;

  • 更新的 Rollup 状态承诺和相关交易数据最终发布到主链;

交易数据发布到主链后:

  • Rollup 全节点 - 直接验证提议的链状态是否正确;

  • Rollup 轻节点(包括验证桥) - 无法直接验证;

  • 同一 Rollup 的不同观察者使用不同的确认规则,因此他们在不同的时间最终确定其观点:

  • 假设发布了完整的交易数据(不仅仅是状态差异);

  • 如前所述,Rollup 节点还必须运行主链完整节点或完整验证器轻节点(或使用共识验证器轻节点做出诚实多数假设)。Rollup 轻节点可以作为附加软件运行,也可以在主链节点内部隐式运行(即主链上的跨链桥合约验证 Rollup);

用户还可以通过信任定序器预先确认来更快地确认交易,甚至在主链接收数据之前也是如此。如果定序器行为不当,安全性可能会失败。然后,一旦数据位于主链上(并且你已经检查了 DA + 有效性),只有主链故障(例如以太坊重组)才会影响你的安全。

因此,即使中心化排序器也不会真正降低「Rollup」的安全性。你始终获得符合你所需的确认规则的安全性。无论 Rollup 具有基于定序器还是其他的设计,你都可以使用相同的确认规则(例如等待主链最终确定并检查 Rollup 有效性)。假设正确实施(例如,通过主链强制交易包含),你可以在相同的时间范围内获得相同的安全属性,同时保持其他条件相同。

同样,你可以想象以太坊 L1 区块生产者由于区块时间缓慢而提供预先确认,这也不会让「以太坊」的安全性降低。你只需决定是否使用另一条确认规则(安全性较低),直到以太坊验证器最终确定更高的安全性为止。

预先确认的想法非常符合 Vitalik 所描述的 Gasper 的逻辑:

总的原则是,你希望为用户提供「尽可能多的共识」:如果存在 > 2/3,那么我们会定期达成共识,但如果存在 < 2/3,那么就没有理由拖延而不提供任何内容,因为显然尽管新区块的安全级别暂时较低,但该链仍有可能将继续增长。如果单个应用程序对较低级别的安全性不满意,则可以随意忽略这些区块,直到它们最终确定。

将所有这些结合在一起,当所有确认规则同时就账本的相同状态达成一致时,我们就有了一个「一致性区域」:

确认规则 - 安全和可访问性

如果你的确认规则是信任由 SBF 运行的单个定序器,而不是信任由世界上最有信誉的验证器组成的去中心化定序器,那么你的安全性可能会更差,活性故障和重组是安全故障。

或者,你可以等待更强的(主链)确认规则变得可用。那么,在其他条件相同的情况下,不可信的定序器就不会影响你的安全性。如果你正在卖咖啡,你可能马上出发,但如果你要卖游艇,你则需要仔细检查主链确认信息。

然而,如果每个人实际上都使用该确认规则来出售他们的游艇,我们不能完全忽视「信任运行单独定序器的随机人选」确认规则潜在的较低安全性。精确的设计是基于对给定用例在什么时间所需的渐进承诺水平的平衡。

同样,这也触及了对 Solana 等高吞吐量区块链的真正批评。人们实际上可以使用什么确认规则?你可能具有运行 Solana 完整节点的良好安全条件,但大多数人可能无法访问该确认规则(即取决于资源要求和 / 或成本)。

直接验证(即不仅仅是信任诚实的大多数)是这些系统的核心属性。因此,对于给定的确认规则,我们真正关心的是两个方面——安全和可访问性:

总之:

  • 用户通过确认规则与任何链进行交互;

  • 一条链可以有任意多个确认规则;

  • 安全是确认规则的属性,而不是链本身的属性;

  • 我们关心给定链的确认规则的安全和可访问性;

实际上,当我们说一条给定链是安全的时候,我们试图表达这样一个概念:其相关的确认规则既安全又可访问。

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 转换成本边缘和慢游戏的演讲中讨论的一个一般领域。

当然,意外的活跃度也可能发生,在这种情况下,此备份路径可能再次非常有价值。

证明并不保护链,而是保护用户

遵循这一切,我们可以看到,对于给定的确认规则,证明更准确地保护 Rollup 的不同「观察者」(用户),而不是保护「Rollup」本身。「Rollup」的安全性并不作为单一的具体措施而存在。

确保观察者的安全当然是最重要的,因为我们都是链的观察者!这条链就是它的观察者所说的任何东西。如果你无法以安全的方式观察它,你就必须信任其他人(例如验证者)来告诉你它的「真相」。但我们不想信任,我们想要验证→我们想要证据。

要了解为什么区分「证明保护链」和「证明保护链的观察者」很重要,请考虑以下事项:

  • 轻节点 - 如果有证明,则 Rollup 轻节点会更安全,他们不必相信任何人的话的有效性;

  • 全节点 - 如果有证明,则 Rollup 全节点的安全性不会增加或降低,你可以在没有内置桥甚至任何证明的情况下启动 Rollup(「pessimistic rollup」),如果你开始发送有效性证明,全节点的安全性不会增加或降低;

证明为无法直接检查其有效性的链观察者(即轻节点)增加了安全性。我们不希望用户必须运行强大的全节点,因此这些证明很重要。

证明确保 Rollup 桥的安全

Rollup 的验证桥是一个极其重要的观察者!证据确实保证了桥的安全!

与任何典型的轻节点一样,网桥无法直接检查 Rollup 的有效性。我们不相信诚实的多数,而是用证据来保护桥梁。数据库 A(DA 层)的共识协议对数据 blob 进行排序,然后验证桥独立检查数据库 B(Rollup)相应更新的有效性:

桥是另一条链的观察者,它铸造的每一项资产总是带有对应桥的确认规则的安全假设。其确认规则的安全性可以产生广泛的影响。这就是为什么建立安全的桥如此重要(或者理想情况下,首先通过进一步扩展单链执行来减少对如此多的桥的需求)。

如果你为该链运行全节点,则恶意方无法诱骗你接受无效的状态转换。然而,如果恶意方有不同的确认规则,它仍然可以欺骗桥。如果你在该桥中持有有抵押品支持的资产,那么你的资金可能会变得没有支持。从这个意义上说,欺骗桥的安全故障是「传染性的」。

让我们考虑一个关于 Terra 的旧假设场景:

  • Terra 有自己的验证器集,其原生代币是 LUNA,并且可以发行原生 UST;

  • Osmosis 有自己的验证器集,其原生代币是 OSMO。

  • 我们有一个标准的 Terra ←→ Osmosis IBC 桥,其中每一侧都运行另一条链的共识验证器轻节点(即桥的每一侧都依赖于另一条链的验证者集的诚实多数);

  • 你作为用户运行每个链的自己的全节点;

  • 我们将通过 IBC 桥接的 Osmosis 上的 UST 称为 osmoUST;

  • 我们将通过 IBC 桥接的 Terra 上的 OSMO 称为 terraOSMO;

  • 你在 Terra 上拥有 terraOSMO;

  • 你正在 Osmosis 上的 osmoUST/OSMO 池中做 LP;

随着 Terra 的崩溃,LUNA 的价格暴跌,最终,理论上变为恶意验证器集的的利润将超过所质押的 LUNA 的价值,Terra 验证器可以签署无效区块,并执行以下操作:

  • 铸造假 UST → 跨链到 Osmosis 以铸造 osmoUST,使用它来耗尽所有 osmoUST 交易对(例如,从 osmoUST/OSMO 池中取出所有 OSMO;

  • 铸造假 terraOSMO → 跨链到 Osmosis,以撤回锁定在 Osmosis 上支持 terraOSMO 的所有原生 OSMO 抵押品,Terra 上剩下的所有 terraOSMO 现在都将不再受支持;

  • 那么,这里的安全性就失败了:

  • 全节点(我) - 我的全节点将 Terra 区块识别为无效的并拒绝它们,Terra 验证者不能窃取我的 terraOSMO 或 osmoUST/OSMO LP 位置;

  • 轻节点(桥) - 桥只是检查 Terra 的共识是否在区块上签字(不检查有效的状态转换),因此它不会拒绝它们,Terra 验证者可以窃取支持我的 terraOSMO 的 OSMO 抵押品,并从 osmoUST/OSMO 池中耗尽所有 OSMO(留下一堆毫无价值的 osmoUST);

该桥使用了具有更强信任假设的确认规则。

Terra 验证者无法从完整节点窃取 Terra 本身的大量资产(他们不会被欺骗),他们会拒绝这些区块。然而,验证者可能会欺骗共识验证器轻客户端(包括桥),这就是为什么共识错误会影响跨链资产。

请注意,重要的是,这些故障不会「传染」到链的其余部分,即该故障会「传染」到暴露于 Terra 桥路线的 Osmosis 资产,但 Osmosis 链本身不存在安全故障。

然而,我们显然想要桥接东西(一般来说,跨链通信),仅限于使用其主链上的原生资产会很糟糕,我们需要链来安全地通信和跨链桥接。

作为一个思想实验,最简单的解决方案就是让每个用户运行每个链的全节点,这包括跨链桥本身。请记住,我们已经看到了一些单向嵌入式全节点桥:

  • 以太坊 Rollup 目前都要求其节点运行以太坊全节点,这些 Rollup 共享以太坊的共识;

  • Namada(一条单独的 Tendermint 链,而不是 Rollup 链)将要求其节点运行以太坊全节点,然而 Namada 不同意以太坊的共识(即它不会将数据发布到以太坊或基于此得出其状态);

这适用于以太坊全节点,但这显然无法扩展。你无法开始让每个 Cosmos 链只需要运行每个其他 Cosmos 链的全节点。这些双向全节点桥不会扩展,它们只是增加硬件要求。

幸运的是,有一个更具可扩展性的选项。我们可以部署桥来充分验证另一条链的状态有效性和 DA(除了仍然检查共识之外)。

状态有效性 - 虽然 IBC 目前与传统共识证明一起使用,但可以对其进行修改以添加连接链的有效性证明,现在桥不会被无效的状态转换所欺骗。这本来可以准确地防止前面描述的攻击,如果桥能够验证状态转换的有效性,则会将 Terra 验证器的区块视为无效而拒绝。

这看起来与以太坊上的 Rollup 桥如何检查 Rollup 证明非常相似,只不过这里也可以是双向的。

DA - 此外,链可能要求其节点运行连接链的 DAS 轻节点。例如你可以让这两个 Cosmos 链需要它们自己的验证器来运行另一个链的 DAS 轻节点(如果每个链都实现了 DAS 轻客户端,而这些链目前不支持)。完成此操作后,每个链现在都可以知道彼此的有效性和 DA,而无需运行全节点。

对于 Rollup,根据定义,你拥有主链上的所有数据,因此那里的桥可以访问它。另一方面,Rollup 节点运行主链节点。

依赖链与独立链

让我们再看一次我们的五个安全属性,现在在以太坊上观察 Rollup 的 Rollup 验证桥的背景下:

  • 账本增长——以太坊验证器可以强制 Rollup 的账本继续增长(例如强制包含交易);

  • 抗审查 - 以太坊验证器可以强制 Rollup 的运营商不会无限期地进行审查(例如强制交易包含或定序器替换);

  • 抗重组 - Rollup 的抗重组与以太坊相关。如果以太坊重组,那么以太坊上的所有 Rollup 都将重新组织在一起;

  • 数据可用性 - Rollup 的 DA 得到保证,因为 Rollup 根据定义是从主链共识(Rollup 合约所在的位置)确认的数据派生的,Rollup 和主链共享合并共识,DA 是以太坊本身的有效性条件,因此如果数据不可用,那么以太坊区块本身就是无效的。桥可以访问主链上的数据,无需添加信任假设;

  • 状态有效性 - 合约将检查 Rollup 状态转换的有效性证明(或等待挑战窗口通过),这证明所声明的状态更新是在主链上确认的相应数据上应用 Rollup 的 STF 的有效结果;

请注意,桥的安全性不仅仅通过附加链的超强确认规则(例如,到具有超级值得信赖的验证器集的链的完整验证器桥)来最大化。如果桥具有与主链相同的安全性假设,则你可以在跨链原生资产时获得最大的安全性。

Vitalik 提供了一个有用的说明性示例:

「你将 100 ETH 转移到 Solana 上的一座桥上,得到 100 Solana-WETH,然后以太坊受到 51% 的攻击。攻击者将自己的一堆 ETH 存入 Solana-WETH,然后在 Solana 方面确认后立即在以太坊端恢复该交易。Solana-WETH 合约现在不再得到完全支持,也许你的 100 Solana-WETH 现在只值 60 ETH。即使有一个完美的基于 ZK-SNARK 的桥接器完全验证共识,它仍然容易受到像这样的 51% 攻击。

因此,在以太坊上持有以太坊原生资产或在 Solana 上持有 Solana 原生资产总是比在 Solana 上持有以太坊原生资产或在以太坊上持有 Solana 原生资产更安全。在这种情况下,「以太坊」不仅指基础链,还指构建在其上的任何适当的 L2。

如果以太坊受到 51% 攻击并恢复,Arbitrum 和 Optimism 也会恢复,因此即使以太坊受到 51% 攻击,在 Arbitrum 和 Optimism 上保存状态的「交叉 Rollup」应用程序也能保证保持一致。如果以太坊没有受到 51% 攻击,那么就没有办法分别对 Arbitrum 和 Optimism 进行 51% 攻击。因此,持有基于 Arbitrum 的 Optimism 发行的资产仍然是完全安全的。

你可以用任何你想要的链替换 Solana - 甚至是你在信任方面超过以太坊验证器的假设链,从根本上讲,当你谈论将资产与其记录账本(例如,来自以太坊的 ETH)跨链时,任何安全假设都是附加的,并且连接的链总是有可能重组或出现活跃度故障。

然而,具有合并共识的链(即共享其主链共识的 Rollup)可以回避这些额外的安全假设。这些不同区域之间的跨链桥可以具有与主链本身相同的最终活跃度和抗重组属性。共享共识最大限度地减少了该共享安全区域内的跨链信任假设。

什么是合理的安全假设由你决定。实际上,各大链之间还没有出现过类似的共识失败的情况。这将是显而易见的,且成本高昂,但这可能是连接较弱链的更强有力的假设。

将 Rollup 链绑定到主链也有一些缺点。让我们比较两种跨链场景,在这两种情况下,我们都有两个使用双向全验证器跨链桥接的链:

  • 依赖 - 远程链(即 Rollup)共享主链(即 DA 层)的共识,并从主链上的数据导出自己的状态,远程链必须与主链一起分叉,并以主链为基础确定其最终性;

  • 独立 - 这些链有自己独立的共识,它们不会根据其他链上的数据得出自己的状态。它们不共享远程链(即 Rollup)←→主链(即 DA 层)关系。它们不会重组在一起,也不依赖于对方的活跃度;

  • 有趣的是,这些都有好有坏:

  • 坏 - 将你的链与其他链进行重组或出现活跃度故障乍一看可能听起来像是一个缺点,为什么我的链会因为你的链坏了而出现问题?

  • 好 - 如果这种分歧会在你的链上造成严重问题,这实际上是一个重要的好处(例如如果你有大量来自源链的跨链资产,那么它会从你的跨链桥接器的角度进行重组,留下无支持的抵押品),链及其跨链桥需要彼此一致;

同样,锁定和过度寻租也存在潜在的积极和消极影响,这凸显了为什么中立且抗审查的基础层如此重要:

  • 好 - 良好的主链可以保护 Rollup 用户免受 Rollup 运营商从他们身上榨取过多价值的影响,从而强制执行退出权限;

  • 坏 - 糟糕的主链可能会任意抬高价格,并从 Rollup 及其用户本身中提取该价值;

  • 提交证明 + 双向运行 DAS 而不是共享公共主链也存在一些低效率:

  • 你不想要求你的节点运行一堆其他链的 DAS 轻节点,并且必须手动添加新链,在一个巨大的共享 DA 层上运行 DAS 效率要高得多;

  • 对于每个链来说,为许多不同的链双向验证有效性证明是低效的,然而,理论上可以聚合多个链之间的证明,这样整个链集群只需将一个证明发布到链上;

这里有权衡和好处,但也要记住,有趣的资产在哪里存在巨大的路径依赖性,如果你想使用一堆以太坊原生资产(包括其 Rollup 中的资产),那么将你的链扎根于以太坊及其跨链桥是有意义的。

结论

「Rollups 继承安全性」是一个很好的简写,但请记住这些是我们真正的意思的关键点:

  • Rollup 向其主链(例如以太坊)支付其消耗的资源(DA)的租金;

  • Rollup 可以公开具有高达主链的安全属性的确认规则(即用户可以获得与在主链本身上操作时相同的安全保证);

  • 用户以主链共识的速度获得这些主链安全属性;

  • 如果 Rollup 用户希望比主链提供的确认速度更快,他们可以使用确认规则,该规则会做出额外的临时安全假设;

  • 观察者(即用户)通过确认规则与 Rollup 进行交互,具有最小信任假设的验证桥就是这样一个(可选但非常有价值的)观察者;

现在,考虑在集成链上部署 Rollup 的好处:

用户安全 - 无论你是否想要实现任何跨链桥,Rollups 都可以从其主链租用 DA 并回收其共识,这允许 Rollup 向其用户公开与主链匹配的确认规则,无需达成自己的共识;

跨链安全性 - Rollup 可以在主链的共享安全域(即主链本身及其 Rollup)内构建跨链,其安全属性与在主链本身上操作相当;

我们应该看到,这实际上是一币两面,Rollup 只是允许链提供确认规则,其安全性可达主链的安全性。跨链桥和普通用户都是具有给定确认规则的链的观察者。桥可能是这些链中最重要的「观察者」,因为它们的安全具有广泛的影响。

当我们尝试创建安全系统时,我们需要关心给定确认规则的安全性以及它们的可访问性。如果大多数与这些链交互的观察者(用户)无法触及,那么安全确认规则就没有多大帮助。

虽然我们今天将 DAS 和有效性证明与 Rollup 联系起来,但它们在逻辑上是独立的概念。任何链都可以集成这些技术,并且什么是 Rollup 或不是 Rollup 的区别在终局时开始分解(即对于单个集成的 Rollup 来说,它可能在一个协议下具有逻辑上独立的 DA 和执行层)。

然而,「传统 Rollup」和 DA 层显然在当今的这些验证和扩展技术中占主导地位。

分享至:

相关阅读