这篇文章深入探讨了以太坊的Rollup技术,与以太坊的扩展目标紧密相关,从定义区块链到Rollup的生命周期、特征和安全风险等一系列主题进行了详细的分析。文章结构清晰,内容丰富,适合寻求深入理解Rollup技术的读者。
在本文中,我们旨在概述围绕以太坊 Rollup 的技术领域,以提供一个坚实的基础,帮助人们理解它们的基本工作原理以及它们如何助力实现以太坊的可扩展性目标。随后,我们建立了一个基础框架,旨在增强公正中立方对以太坊不同 Rollup 实现的判断和评估。
Rollup 在构成以太坊最终目标的拼图中占据着至关重要的部分,因此我们必须改善现有材料,以便更好地理解这些复杂但常常被误解的模块化区块链。虽然加密领域的 Rollup 设计空间极为广阔,但我们希望提供一种更加与以太坊本地相关的 Rollup 视角,特别是围绕着专为以太坊扩容而设计的 Rollup。因此,可以值得一提的是,并非所有可能的 Rollup 变体都会在本文中进行覆盖,特别是那些存在于以太坊之上的 alt-VM Rollup 将不予覆盖(原因稍后会详细说明)。
在了解这些背景后,让我们概述本文将涵盖的一些主题:
在深入了解以太坊的 Rollup 领域之前,快速建立对区块链的心理模型会很有帮助。一般来说,当我们谈论“区块链”时,指的是具有两个特征的系统:
“区块链”这一术语最初用于描述这些网络所依赖的加密数据结构,但现在,人们常常将这些网络本身称为区块链(例如,以太坊是一个区块链)。考虑到这一点,让我们对区块链给出一个简要的定义。
区块链是去中心化的公共平台,允许用户在不同方式下安全地相互交易,无需中央权威。它们实际上以去中心化的节点网络的形式存在,这些节点运行着一个区块链协议,通过一个加密数据结构不带信任地执行和记录全球交易和系统状态的历史(以下将称之为“链”)。
这个链数据结构由一系列块组成,每个块包含交易列表,以及当前区块链状态和前一个块的加密散列。因此,这个数据结构类似于一个“块链”,提供了一个不可变的、抗篡改的、全球排序的交易和系统状态列表。当新的块被添加到区块链时,网络中的每个节点都会独立执行该块中的交易列表,并相应地更新其状态和链数据结构。通过去中心化共识,网络共同同步此更新,通过将新块附加到区块链上,承认其为当前区块链的头部。
现在我们对区块链的工作原理有了更清楚的了解,我们可以将它们的架构视为由三个层次组成,每个层次具有不同的用途:
从高层次上来说,这基本上描述了以太坊的工作原理,并且我们将独立实现这种功能并以此方式运行的区块链称为第一层区块链(或 L1)。在上述背景建立之后,让我们将注意力转向 Rollup,了解这些解决方案究竟是什么,以及它们与以太坊的关系。
Rollup 是那些其链和状态可以完全从 L1 的 DA 层衍生出来的区块链。当我们谈论“在以太坊上的 Rollup”时,我们指的是利用以太坊作为其 DA 层的 Rollup。
与像以太坊这样的 L1 不同,后者实现其所有三个架构层(DA、共识、执行),Rollup 仅实现其专有的执行层。它们将 DA 和共识的管理外包给 L1。我们在下面说明了架构差异:
那么将 DA 和共识管理外包给 L1 区块链意味着什么?
L1 区块链已经为发布到它的数据提供了不可变细节和排序的安全性,因此当一个 Rollup 选择使用 L1 来为其区块链提供类似的保障时,显示出 L1 是如何向 Rollup 提供 DA 和共识的保证。
当我们考虑 Rollup 及其与以太坊的关系时,通常将它们称为第二层区块链(L2)。这样称呼的原因在于,这些区块链的设计利用了以太坊的安全属性,使它们能够实现高效的执行而不妥协于安全性。最终结果是,以太坊的安全性使这些高效但安全的区块链成为可能,因此可以视为有效利用以太坊以增加实用性。当我们以这种方式考虑 Rollup (特别是以太坊在使这些系统以这种安全形式存在方面的关键作用),我们可以认为 L1 提供的功能是 链上 的,而 L1 以外的功能(由 Rollup 系统本身自主处理)被视为 链下 的。
在更好地理解以太坊如何向 Rollup 提供 DA 和共识保证的基础上,让我们考虑承载所有有关其系统状态和用户交易活动的有用信息的区块链数据结构如何从以太坊导出。
参与 Rollup 的参与者可以通过从以太坊获取全球 Rollup 历史,信任地构建当前的 Rollup 区块链状态。从这里,这些数据可以通过 Rollup 节点进行处理,在其中应用状态转移和规则,并确定性地计算当前的 Rollup 区块链状态。处理这一过程的步骤将被正式描述在 Rollup 的技术规范中,并转化为 Rollup 节点运行的代码 – 我们将管理这一过程的步骤称为 Rollup 的 链衍生。正是通过链衍生过程,Rollup 节点能够从以太坊读取有序的 Rollup 历史,解析信息并信任地构建 L2 块链。在以这种方式管理 Rollup 区块链计算的过程中,Rollup 节点之间无需互相信任,因为数据安全地存在于以太坊上,简单地需要输入到 Rollup 的链衍生程序中,所有节点都应确定性地达到对 Rollup 区块链的相同视图。我们在下方展示 Rollup 链衍生基本机制的运作:
在提供关于像以太坊(L1)如何使 Rollup 成为可能的动机时,有必要提供关于 它们如何分类为扩展以太坊的方法 的类似动机。
如前所述,Rollup 是使用 L1(在这种情况下为以太坊)来维护其全球交易历史的可用性和规范排序的区块链 – 这些信息是确定性地计算 Rollup 状态所需的,并在其随时间推移和使用过程中继续进行。因此,在将这一责任管理外包给以太坊的过程中,Rollup 可专注于提供更好的执行能力,以提高用户和开发者在其上的操作能力。虽然这表明以太坊在提供安全性和启用 Rollup 专注于执行以提供在以太坊上不可行的经验方面的重要性,但这并没有给出如何证明它们作为以太坊扩展解决方案的完全有说服力的答案 – 如果有什么,这种关系可以被表征为以太坊成为 Rollup 区块链的服务提供商。
如果 Rollup 真心希望对以太坊的扩展作出实际贡献(并赢得被归类为以太坊扩展解决方案的头衔),Rollup 需要在技术上具备超越定义其区块链类型的简单构造的特征。那么它们需要做什么才能客观地符合并满足被视为以太坊扩展解决方案的技术标准呢?
共享以太坊的安全属性是一个已满足的要求,但还需要更多。“扩展以太坊”意味着不仅要提高其安全基础设施的实用性,还要为以太坊的用户、经济价值和应用场景提供更多实用性和技术能力。为实现这一目标的一步是使 Rollup 与以太坊更加紧密兼容和可组合,从而扩展而不是碎片化以太坊。在此背景下,我们将突出两个额外的要求,以赋予 Rollup 实现这一目标的能力:
在表述 EVM 等价性在满足将 Rollup 合格为以太坊扩展解决方案的技术标准中的重要性时,可以澄清的是,Rollup 可以是 EVM 等价的,同时扩展其执行模型的能力。我们相信,实际上能扩展以太坊而不造成破碎的 Rollup,至少要提供 EVM 等价性。这一信念背后的动机在于以太坊与 Rollup 之间的原生可组合性。EVM 等价性并不意味着对 EVM 的绝对忠诚,而是对以太坊的执行管理方式的忠诚 – 这关乎维持兼容性。如果一个 alt-VM Rollup 能够完全将以太坊的执行(及其涉及的状态)转化为自己的执行模型,那么它就可以满足技术标准 - 请注意,这只是描述 EVM 等价性或有什么是 EVM 等价性。并不意味着 alt-VM Rollup 不可以在向技术层面上扩展以太坊中发挥作用,它只是我认为不应该被定位为 L2,而可能应该是依赖于 EVM 等价的 Rollup 来提供安全性的 L3 (这些是我对如何最好地利用 alt-VM 执行技术上扩展以太坊的推测性看法,所以具体情况还是需要审慎看待)。
在描述对 Rollup 施加约束如何帮助提供更强的技术论证,从而被视为以太坊可扩展解决方案时,让我们牢记这样的基础 Rollup 规范,探索以太坊中 Rollup 如何工作以及推动其功能的各个部分。
在这一部分中,我们将彻底涵盖 Rollup 内部的核心功能, 包括它们如何管理与以太坊的互动及其实施的各种组成和设计特性,以推动其操作并提供安全性和性能保证。
为了理解推动 Rollup 操作所需实施的功能,我们首先应熟悉使用 Rollup 的生命周期。为此,我们将梳理用户提交交易给 Rollup 后所发生的事情:
需要阐明的一个关键设计细节是用户实际上如何在 Rollup 中支付交易费用。在像以太坊这样的 L1 中,费用始终以本地资产(以太币,在以太坊例子中)计价。相反,Rollup 通常以 ETH 计价交易费用。有三种原因表明这是一种合理的决策:
以 ETH 计价的费用并不是严格的技术要求,但基于上述原因,可以理解为何这么做是合理的。
在区块链中谈到最终性时,容易将其视为一种永不被打破的承诺。在以太坊中,当一个块被添加时,网络做出了承诺,表示其中的交易将不会被撤销,尽管这是一个强大的承诺,但并非不可打破。
如果包含这些交易的特定块被从区块链中重组,则可能会打破这个承诺,而这些交易不再包含在新的规范链记录中。然而,随着以太坊转向 PoS,这种情况不再存在。经过 2 个纪元(64 个区块)后,所有包含在这两个纪元中的区块都会被最终确认,这意味着这个承诺现在是不可打破的(这意味着这些块及其内容和排序将永久存在且不可篡改)。我们将这种终局类型称为 硬最终性。
在我们上面梳理 Rollup 生命周期时,我们引入了几种针对 Rollup 交易的承诺。其中,用户的交易经历了多个阶段,最终通过 L1 的最终确认得以永存。让我们梳理这些阶段,以更好地理解如何在 Rollup 中实现最终性:
以上两个部分为我们提供了有关如何将变更应用于 Rollup 的更多见解,以及当 L1 块包含新发布的 Rollup 批次最终确认后,它们如何最终完成和不可逆转。在此部分中,我们将探索 Rollup 系统中的序列化任务是如何管理的。
序列化在 Rollup 环境中是独特的,因为在像以太坊这样的 L1 中,用户习惯于将其交易发送给网络,区块生产者将其包含在下一个即将到来的区块中,或者不将其包含,届时可能会由未来的区块生产者来包含 – 因此,用户只能在块实际上添加到区块链后才能确认其交易将被执行。与此相反,在 Rollup 中,用户会收到关于执行的即时反馈,以序列器的承诺形式(即 预确认),其中任何关注序列器正在做的操作的参与者都可以在 L2 块甚至从 L1 中衍生出来之前,基于 Rollup 区块链的状态提前采取行动。这种预先执行使 Rollup 能够为用户提供更快的执行体验,并且由于 Rollup 的区块链架构结构,交易的成本显著低于 L1。在这种动态下,用户能够在 Rollup 上获得更快、更便宜的交易结算,而 Rollup 将确保这些交易最终会在 L1 块中得到确认,包含提前 L2 块(编码在批次中,包含预确认交易)的块同时也得到最终确认。
序列器在 Rollup 中扮演至关重要的角色,既提供对用户交易的预确认,也确保 Rollup 网络能够确定性地同步到区块链的最新版本:
上面的图表突显了序列器在推动 Rollup 功能中的核心角色,因此,Rollup 在设计如何管理序列化时必须谨慎,因为如果没有有效实施,这可能成为单点故障,干扰区块链的运行。在接下来的部分中,我们将探讨序列器的设计空间,并描述 Rollup 可以采取的各种不同方法来建立其序列器模型。
如前所述,序列器为 Rollup 提供了创造用户与交易执行反馈之间的极快联系的能力,实际上,这意味着用户可以在最快 100 毫秒内收到他们的交易响应(某些时候甚至更短),这标志着对以太坊的重大改进,后者在最佳情况下,仅能在 12 秒钟内仅提供交易执行反馈。
根据 Rollup 如何设计其序列化系统,提供这些交易预确认的时间将有所不同。例如,如果 Rollup 决定由一个单一、可信的序列器实施其序列化,Rollup 可能会为用户提供极快的预确认,相比之下,采用在特定时间间隔轮换参与者的共识模型的 Rollup 则不然。这是因为将交易发送给单个序列器参与者的过程远比涉及到增加网络通信和阻塞行为的策略简单,后者会减慢序列化的速度。
最终,这突显了性能与安全之间的权衡。理想情况下,我们希望序列器角色去中心化,以确保承担该角色的参与者完成职能的完整性,但同时我们希望为用户提供有价值的预确认属性,这些属性是 Rollup 独特定位可以提供的。考虑到这一点,我们可以更正式地表述希望 Rollup 序列化中具有期望安全性和预确认速度的属性。鉴于我们希望建立描述 Rollup 应如何设计以充分补充和贡献于扩展以太坊的标准,值得指出的是,以太坊 Rollup 应努力提供的安全保证应该尽可能接近以太坊自身的阈值。在有如此协调目标的情况下,它可以指导与设计 Rollup 组件相关的决策,使全球 Rollup 设计的一致性在所有组件和特征的实施中得到体现。
考虑到这一点,让我们阐述一些在设计 Rollup 序列化方案时希望保证的期望安全性:
在更加明确 Rollup 序列化模型中的期望属性之后,Rollup 设计师可以采取不同的方法,具体取决于他们希望优先考虑哪些属性。我们在下方展示了基于信任的序列化水平的基本序列:
尽管上述图表中仅描述了四种不同的序列化模型, 但实际存在超出这些模型的许多其他选项。上述四种模型旨在展示不同序列化模型所应用的差异化范围,而非详尽表达可以在 Rollup 序列化中采取的所有可能方法。为了便于推理在 Rollup 系统中应用不同序列化模型的情况,我们将前面表达的操作图简化如下,展示不同的序列化模型可以应用于粉色/紫色圈元素:
单一的可信角色充当 Rollup 的序列器。此设置最终为用户提供最低的潜在延迟,原因有二:
在仅有一个扮演序列器角色的情况下,用户正与序列器建立一对一的信息连接。这不仅由于上面列出的原因效率高,同时也意味着不会引入显著的网络相关延迟。在以太坊中(除了私有订单流),用户传统上将其交易提交给一个节点,然后该节点通过 P2P 网络传播其存在,自然这使得交易在网络范围内的发现效率低下,意味着用户广播交易与区块生产者发现之间的时间是不容忽视的。在单一可信序列器模型中,这一发现时间显著减少,因为用户(或其钱包代其)与序列器建立了直接连接,并将其交易直接广播给序列器,序列器将立即为其服务。
一组白名单中的参与者在时间上轮换序列器角色。此方法解决了在单一序列器模型中引入的单点故障关注,从而改善了活跃性保证。换言之,此模型通过将序列化转变为具有更强容错能力的模型而进行了改进。但由于这些参与者不是独立的且代表一个授权集,因而仍引入强信任假设。
在此模型中,利用 BFT 协议(例如去中心化共识协议)管理序列器的委派。我们将该模型称为“主权”模型,因为在该模型中,Rollup 启动自己的无许可参与者网络,参与共识过程。
Rollup 使用 BFT 共识的方式因其目的而异,并且不同的方法可能会产生不同的性能和安全保证。为了突显不同性能和安全保证的实现方式,我们可以考虑两个出于不同目的使用 BFT 协议的 Rollup:
与授权集模型相比,主权 BFT 模型从根本上消除了受信单一序列器和授权集模型所面临的单点故障风险,提高了活跃性这一期望安全属性之一。此模型相较于可信的单一序列器和授权集模型的更大优势在于允许不可信的参与者参与序列化,BFT 共识 为 Rollup 提供去中心化的序列化机制提供了相容性和密码证明的手段。
此外,这一模型还能够确保更强的安全属性(审查抗性、问责制)。依赖去中心化的共识,这一模型可能需要将问责机制纳入系统设计,以确保参与者在委员会中遵循透明且一致的标准进行运作。反过来,这有助于确保参与去中心化序列器协议的角色诚实且有效地履行其职责,并为该协议提供了一种手段,使得可以随时将不符标准的行为或表现归因于特定的参与者,并惩罚他们(例如未提供 Rollup 设置的标准性能保证、中伤用户)。
虽然这一序列化方法在信任假设方面较之前两种方法有了显著的提高,但由于运营 BFT 协议所需的工作增加,它给序列化过程引入了更多的延迟。如果 Rollup 决定将 BFT 协议同时用于领导者选择和批次验证,则延迟会进一步增加。这种延迟的增加导致 Rollup 对用户提供的交易预确认速度显著减慢,相比于可信序列器模型。
在我们深入探讨基于序列化的具体含义之前,有必要提醒自己 Rollup 的序列器在将批次发布到以太坊时发生的真正事情。当序列器发布 Rollup 批次到以太坊时,他们实际上是在创建携带该批次的 L1 交易到以太坊。这意味着,他们需要激励以太坊区块生产者将此交易纳入缔结,以便得以使发布批次中的 L2 块赋予软最终性。无论选择哪种序列化模型,Rollup 的序列器都必须将 L1 交易广播到以太坊,并激励区块生产者在其区块中纳入该批次交易:
在理解序列器与以太坊之间的关系后,自然产生了一个想法 - 为什么不让 L1 验证者集合在序列化 Rollup 交易中发挥更积极的作用呢? L1 验证者集合已经在最大范围内实现去中心化,尽管针对构建者的集权和股份集中的情绪存在不同看法,但作为验证者进行登记的参与者的多样性无法轻易被忽略,同时也存在旨在约束中心化参与者代理权的核心协议的机制设计。由于 L1 提供强大的安全属性,如活跃性、审查抗性和问责制,因此,如果能使序列化继承这些属性所提供的某些安全保证,通过更紧密结合的方式实现由 L1 区块生产者驱动的序列化,显然会非常理想。
所以问题是,Rollup 如何利用 L1 能力来协助其序列化,更好地改善围绕序列化的信任假设,同时也增强序列化可以通过向用户发布预确认提供的理想体验。这实际上引领我们进入基于序列化和各种解决方案,这些解决方案致力于向 Rollup 提供此类功能。
基于序列化是一种相对较新的 Rollup 序列器设计方法。从最根本的层面来看,它涉及利用以太坊中 L1 提议者的验证者集合为 Rollup 提供序列化服务。
重要的是,在这里理解序列化 主要的特征是为 Rollup 订购交易并将其发布到提供 DA 的 L1。执行并不是序列化交易所严格要求的前提,它只是使序列化参与方能够根据情况向用户提供预确认的基础。考虑到上述对序列化的描述,我们认为如果处理 Rollup 交易的集合、批量处理并将批量发布到 L1 的任务是由 L1 区块生产者负责的,则我们将其视为基于序列化的 Rollup。我们在下方展示了一个基于序列化的 Rollup 最简单示例:
最简单的基于序列化的 Rollup 使 L1 区块生产者代表 Rollup 执行序列化服务,但从基本定义来看,基于序列化似乎没有提供预确认 此时,这可能会让读者感到困惑,因为序列器难道不是旨在向用户提供预确认吗?
答案是肯定的,但技术上来说,基于序列化的 Rollup 确实提供预确认 – 在这种情况下,预确认和软最终性同时发生。考虑我们之前提供的不同阶段的最终性图示:
让我们观察在实施上述描述的简单基于序列化模型的 Rollup 的不同最终性阶段在时间上的表现:
上述插图帮助阐明预确认在技术上是提供给用户的(通过在硬最终性之前提供反馈),但只是通过发布的批次变得公开知识,使 Rollup 节点能够告知用户其软执行保证。问题在于,当软最终性和预确认之间的时间为零时,我们失去了相对于 L1 区块链的 Rollup 序列化提供的所有宝贵优势 – 它看起来只是在以太坊的块时间中产生的,它的交易费用更便宜。因此我们可以肯定地说,预确认的价值随其与软最终性之间的时间延长而减少。现在的问题是,选择实施基于排序(以换取强安全性属性)的 Rollup 是否永远注定要放弃预确认在软最终时间之前所能提供的潜在好处?这个问题的简短答案是否定的,但需要对驱动 Rollup 基于排序的协议进行更复杂的设计。从与主权 BFT 排序模型如何利用问责工具来帮助强制遵循协议的处罚,以确保去中心化的行为者诚实地执行排序并发出预确认的方式来看,相同的策略可以用于启用从执行基于排序的 L1 区块生产者那里更快的预确认发放。
为了更好地理解如何通过基于排序的模型来实现更快的预确认,首先让我们熟悉一下可信承诺机制的概念。可信承诺机制描述了一种旨在确保承诺或承诺的一方将来会遵守该承诺的系统。它通过经济激励、处罚和/或加密保证,使这一承诺既可验证又可强制执行。由于 L1 区块生产者是不可信任的行为者,可信承诺机制通过为这些代为排序的区块生产者提供更高的激励(以额外收入的形式)来帮助协调 Rollup 的交易者与这些区块生产者的利益,同时在他们违背之前所作的承诺时对其进行追责。在这种情况下,具有约束力的承诺和因服务质量差或恶意提供的服务而可能带来的惩罚,与主权 BFT 模型的排序提供的非常相似。主要区别在于,可信承诺机制是在 Rollup 用户和 L1 区块生产者之间实施的,而不是仅限于 Rollup 网络内的参与者之间。
基于排序设计的世界广泛且正在积极研究中,存在许多令人激动的新想法,例如引入新关键参与者如预确认者和包括者,他们利用 L1 验证者集更可靠地促进一致的排序模式。虽然探索这些主题会很有趣,但它们在这一篇幅中基本上超出了范围,因此值得澄清的是,虽然基于排序的设计空间正在增长,但目标依然是提供最佳的安全属性,以满足涉及排序的 Rollup,并向用户提供能够提升 L2 体验的快速预确认。
以太坊和 Rollup 之间的桥梁对于两个关键原因非常重要:
用户接入 Rollup:如前所述,以太坊 Rollup 大多以 ETH 收取交易费用,因此用户为了开始使用 Rollup,必须以某种方式将 ETH 转到 Rollup。唯一可行的方法是通过以太坊和 Rollup 之间的桥梁机制。即使存在一个符合规范的 Rollup 可以被视为以太坊的实际扩展解决方案,但如果不在 Rollup 上使用 ETH 作为Gas,则仍需存在桥梁连接以启用价值转移,提供最低限度的组合能力,补充以太坊。
以太坊和 Rollup 之间的组合性:为了使以太坊和 Rollup 能够相互组合,它们需要一种相互通信的方式。从根本上来说,桥梁是协调这种通信的媒介。它们帮助用户在两个不同的区块链之间转移资产以及执行任意消息传递,可以触发从一个区块链执行某些操作到另一个区块链。
从根本上讲,桥梁就是在不同区块链之间进行消息传递,以帮助实现原子跨链动作。在这种情况下,原子性意味着确保在链 A 上执行操作 X,只有在链 B 上执行操作 Y 时才会进行,反之亦然。
一个希望执行涉及源和目的地的操作的用户,可以寻求将资产从一个区块链发送到另一个区块链。这将需要在源和目的地都执行原子操作(注意,这里的原子性并不意味着在字面时域意义上的同时执行,它严格受逻辑约束控制。换句话说,同时的原子执行可以提升组合性,因此增加以太坊扩展的好处)。
为了实现这一结果,目的地需要确定在源上执行的操作实际发生。有多种方法可以管理这一点,从完全信任某人证明在源上所发生的事情的正确性,到让信任方提供某种轻量的、可验证的方式来核实其主张,甚至让源运行一个完整的目的地节点,以核实有关该链的每个可能信息。
桥梁启用资产转移和跨不同区块链的智能合约调用等功能。设计空间很广泛,我们观察到许多系统围绕利用桥梁的效用而构建。
虽然这些好处很不错,但桥梁仍然面临许多挑战,如与桥梁实现相关的漏洞和其他风险。我们已经看到数十亿美元因此类漏洞而损失,而 这一数字只会持续增长。这突显了在实现桥梁时最小化安全假设的重要性。其中一个因素涉及 验证 发生在桥梁另一侧的活动,另一个因素涉及桥梁本身的 主权 状态。桥梁通常可升级且由受信方控制,这可以是在服务小心去中心化桥梁操作中的前期步骤,或者是围绕桥梁本身实施的设计决策。
通过了解桥梁的信任假设如何受到参与者如何识别有效性和主权在扩展中的角色的影响,我们对塑造桥梁信任假设的整体情况有了更全面的认识。
Rollup 必须支持信任最小化桥梁,将其与所继承安全性的基础 L1 连接起来。这里的信任最小化是指,桥梁另一侧的任意区块链能够验证在另一侧发布的交易的有效性,而无需无信任地运行全节点以进行验证。有效性主要意味着交易是在 Rollup 状态的正确版本上执行的,以及交易执行的正确性。
在 Rollup 的上下文中,这将意味着提供:
由于 Rollup 已经继承了基础 L1 提供的安全保障,从 L1 到 Rollup 的桥梁从本质上来看默认是信任最小化的(这是因为 Rollup 节点已经被要求运行以太坊全节点以无信任方式跟随 Rollup 区块链)。不幸的是,从 Rollup 到 L1 的桥梁并非如此。例如,以太坊无法验证 Rollup 执行的正确性,也无法确保发布到其上的数据确实反映了 Rollup 区块链的当前状态。这意味着以太坊必须信任那些对 Rollup 链的完整性进行证明的行为者,而以太坊将没有手段去验证这些主张。
如果 Rollup 和其基础 L1 之间没有双向的信任最小化桥梁,则 Rollup 的真实安全级别最终会下降到其可信任的弱点。这促使我们严格要求 Rollup 和其他区块链之间的桥梁必须是信任最小化的。任何其他层级的桥梁实现都被视为非规范的 Rollup 实现,因此代表用户在选择使用它们时接受的风险。这突出强调桥梁实现的安全保障受协议规范所规定的内容约束。默认情况下,提供了最基本的方案,即从提供 DA 的 L1 到 Rollup 本身的一种单向信任最小化桥梁。对于选择保存区块验证双向桥梁的 Rollup(经典 Rollups – 更多关于这些内容将在后续介绍),协议强制的桥梁保障将会增强。我们通过下面的图示来说明这一点:
让我们快速定义一下 信任最小化 在区块链上下文中具体意味着什么。考虑轻客户端如何与区块链交互。他们试图查询和验证区块链的数据,而无需手动执行每个交易以无信任的方式来确认正确性。要做到这一点,轻客户端查询信息并附带能够确定许可证的加密证明。
这体现了信任最小化验证的原则,其中轻客户端不无信任地评估区块链数据来确定信息,但也没有完全信任全节点向其提供的信息 – 相反,他们处于中间状态,可以通过加密证明查核全节点提供的信息(在以太坊和比特币中,这是通过 Merkle 证明来管理的,它为任何人提供了验证区块链数据结构中描述的信息正确性的一种廉价方式)。
如前一节所述,从 L1 到 Rollup 的桥梁实际上是“无信任的”(无信任一词用于在极强的信任最小化与其他形式的信任最小化验证之间进行区分),因为 Rollup 节点已要求运行以太坊全节点,以便与 Rollup 区块链同步,但当涉及从 Rollup 到 L1 的桥梁时,以太坊没有办法验证 Rollup 链的状态 - 这在实质上意味着,通过这种方式进行桥梁的情况下,默认情况下存在较强的信任假设。
幸运的是,有一种策略可以使 Rollup 到 L1 的桥梁更加信任最小化,它依赖于轻客户端进行信任最小化验证时遵循的相同原则。类似于轻客户端如何验证加密证明以确定其区块链的正确性,在 L1 上可以引入类似功能的有效性执行机制,允许 L1 以信任最小化的方式验证 Rollup 区块链。支持 Rollup 到 L1 信任最小化桥梁的这种功能的实现以 L1 上的验证桥梁的形式存在。最终结果是有可能实现 Rollup 与其所继承安全性相同的 L1 之间的双向信任最小化桥梁。在引入此功能后,可以实现对 Rollup 的信任最小化存款和取款。
验证桥梁的目标是通过提供核实 Rollup 区块链及其上执行正确性的信任最小化手段,使从 Rollup 到 L1 的桥梁信任最小化。这意味着,连接 Rollup 与其基础 L1(如以太坊)之间的桥梁的设计方式是,以太坊拥有更可审计的手段来验证 Rollup 链及其上交易的正确性,而不仅仅依赖于有效性确认的受信任证明。
让我们通过看看涉及 Rollup 和 L1 的存款和取款生命周期来简要了解双方信任最小化桥梁的实现。
让我们看看当用户请求将 ETH 存入 Rollup 时发生了什么:
到目前为止,我们还没有看到验证桥做了什么,但如前一节所述,从以太坊到 Rollup 桥梁的设置由于设计上是信任最小化的,因为 Rollup 接受基础 DA 和共识提供的保障。接下来看看从 Rollup 提取到以太坊的操作,以及验证桥在无信任的情况下参与管理的方式:
有效性执行机制的存在是为了给以太坊提供一种验证 Rollup 区块链正确性的方式,使得无论是来自 Rollup 发起的消息(例如,从 Rollup 提取资产到以太坊),都无需以太坊 i) 必须执行 Rollup 交易以验证完整性/正确性 ii) 信任那些声称 Rollup 链的完整性的行为者。
理解有效性执行机制的相关性一个简单的方法是将其与以太坊本身存在的等效构建进行对比,然后将有效性执行机制框定在经典 Rollup 中:
有效性执行机制在单独使用时扮演的角色是:为 L1 提供一种验证 Rollup 执行的信任最小化方法。如前所述,Rollup 通常通过批量更新状态。这意味着我们可以想象一种离散的“验证 Rollup 执行”的事件,看起来可能是这样的:
为了使桥梁的 L1 端能够执行任何操作,我们需要确保从 L2 提交的交易的正确性(这意味着它们的有效性以及它们是在有效版本的 Rollup 区块链上创建的)。为此,Rollup 将在其设计中实施有效性执行系统,其中包括允许以太坊验证执行的链上组件;正是这个链上组件被称为 Rollup 的有效性执行机制。
有两种领先的方法为 L1 提供有效性执行机制,这两者在验证 Rollup 执行的正确性上采取了截然不同的方法。
除了这两种方法的实施细节外,Rollup 有效性执行向 L1 提供信息的关键区别在于 L1 验证 Rollup 离散批量执行事件的时机。
这表明,在乐观 Rollup 中,批次必须等到此挑战窗口过去(平均约为 7 天),而在 ZK Rollup 中,一旦发布了声称它们正确性的 ZK 证明,批次就能立即被验证。经过以太坊对使用任何这些方法的批次的验证后,这些信息能够用来授权来自 Rollup 的行动在以太坊上执行(例如,从 Rollup 提取资产返回以太坊)。
寻求在其区块链与所继承的 L1 之间实现信任最小化验证桥梁的 Rollup 将决定采用哪种方法为其验证桥提供信任最小化的功能,但归根结底,两者都需要信任每种有效性执行机制的健壮性和完整性。因此,虽然这些支持有效性机制提升了围绕桥梁的信任假设,仍然应考虑与这些系统交互时较弱的信任假设。
序列器是用户处理 Rollup 交易的切入点,但如果序列器处于离线状态或故意忽视用户交易,那么会发生什么?如果 Rollup 不提供应对这些情况下的后备措施,其安全性和可靠性实质上就会受到削弱。对上述两种情况的脆弱性展示了活性和抗审查性存在缺陷。
再次考虑活性和抗审查性的广义定义:
假设序列器发生故障,我们希望提供后备/紧急机制,使用户能够绕过里面失败的关键路径,与 Rollup 互动并在这些极端情况下推动其操作。提供用户绕过序列器故障或审查的方法的一个流行方案,是让 Rollup 在 L1 上嵌入强制交易包含机制(为 Rollup 提供 DA)。从这里开始,Rollup 的派生过程中的逻辑可以定期监测以这种方式提交的交易并在 Rollup 区块链上同步。提供这种方式绕过序列器不仅可满足序列器停机,还可防止审查向量,如果序列器有意不包含特定用户的交易。
到目前为止已经讨论了很多,因此最好重申一些有主见的定义:
Rollup被严格定义为——一个完全可从另一底层区块链(L1)推导出的区块链,该底层区块链提供了 Rollup 输入数据的可用性以及对其的排序,使得任何运行 Rollup 节点的参与者都能够在任何时刻无信任并且可确定地计算 Rollup 的状态。
以太坊扩展 Rollup(有主见的分类)被定义为具有以下特点:
在这一点上,我们展示了 Rollup 设计者可以做出的各种设计决策,例如实施其排序模型的方式、在基础 L1 和 Rollup 之间实现验证桥的方式等等。但现在我们达到了一个关键点,一个设计决策将决定我们所讨论的 Rollup 的基本类型。虽然许多人认为排序策略或用于 Rollup 的有效性执行机制选择应该主要界定一个 Rollup,但我相信,分类 Rollup 的主要标准应归结为一个问题 - 它是否嵌入了与其所继承的 L1 之间的验证桥?
验证桥的嵌入是关键标识。在回答上述问题的“是”或“否”时,我们会得到存在的两种 Rollup 类型:
经典 Rollup是指那些和以太坊之间嵌入了验证桥的 Rollup。这实现了以太坊与 Rollup 之间双向、信任最小化的桥梁。因此,嵌入的验证桥是这类 Rollup 的一个决定性建筑组件。由名称显而易见,嵌入的验证桥由两个关键细节构成:
经典 Rollup 与主权 Rollup 之间的技术差异已经表述过,它归结于决定是否将桥梁嵌入到 Rollup 和基础 L1 之间,以提供 DA 和共识保障 – 仅仅是这样简单。
这意味着 Rollup 区块链被定义为具有默认的、规范的桥梁与其基础 L1(此处为以太坊)之间的关系。这个结果使得经典 Rollup 的定义不仅仅是从 L1 上可用数据中推导出来,并且包括必须有一个嵌入的验证桥连接 Rollup 与这一 L1。这个设计决定本质上建立了 Rollup 和底层 L1 之间更紧密的关系。为了更好地理解其含义,请记住,Rollup 基础上由下图定义:
通过经典 Rollup 的嵌入,现在我们将 Rollup 和其底层 L1 之间的关系扩大到不仅仅是关于可用性和共识的交易关系。这个关系现在包括在可用性层和 Rollup 之间建立一个验证桥。Rollup 和 L1 之间的关系现在在 Rollup 协议级别上以这两种形式特征化:
这一设计决定的结果是,以太坊和 Rollup 之间实现了更流畅的互操作性,因为与 L1 和 Rollup 之间的桥梁被嵌植为系统中的一等公民(可以将其视为以太坊上辅助验证者在 Beacon 链上质押的特别智能合约)。
经典 Rollup 的目标因此更容易理解。经典 Rollup 旨在通过扩展 L1 使用的本地体验来扩展以太坊。经典 Rollup 旨在通过制定两个目标来实现这一目标:
当人们通常谈论以太坊中的 Rollup 时,经典 Rollup 通常是人们心中想到的概念 – 一个 L2 区块链,其继承了一些由以太坊提供的安全属性,并且可以相对容易地与以太坊进行交互。
虽然经典 Rollup 的直觉相对容易理解(在合理的背景下),但它往往成为了 Rollup 的代名词。虽然经典 Rollup 在自身权利上是极具威力和实用的解决方案,但它并不完全代表 Rollup 的整个设计空间,即便是在追求以太坊扩展目标方面。必须记住,从其 L1 推导出 Rollup 区块链仍是其定义的关键特征。这意味着 Rollup 在以太坊扩展的方式远不止一个具有紧密互操作性的 L2 区块链。这就是有关主权 Rollup 设计空间的出现。
主权 Rollup可以被描述为那些在其用于提供 DA 和排序的基础 L1 上选择不嵌入验证桥的 Rollup。由于这一设计决定,这使得它们相较于经典 Rollup 容易区分。
以太坊主权 Rollup 的起始蓝图如下图所示:
与经典 Rollup 相比,主权 Rollup 可能是一个令人困惑的概念。但它们教会我们的一件最有用的事情是,Rollup 如何依赖一个区块链来提供 DA 和排序保证,并利用这样一个光客户端的 L1 DA 层来在 Rollup 和完全不同且独立的区块链之间实现信任最小化的桥梁。尽管这并不一定与以太坊扩展相关或互补,但确实对证明 主权 Rollup 的设计空间非常有用。
与经典 Rollups 类似,主权 Rollups 在实现从以太坊(基础 L1)到 Rollup 的信任最小化能力时,区别在于它们无法“本土”提供从 Rollup 到以太坊的信任最小化桥梁。考虑到这一点,以及仅将信任最小化桥接视为 Rollup 接受的条件,是否在实现以太坊扩展目标方面具有一种向以太坊的桥梁的 Rollup 存在任意好处?
答案是肯定的。如先前各节所述,在保留与以太坊执行兼容的同时,减轻执行负担的 Rollup(并继承以太坊的安全保证)为扩展其功能提供了切实的影响。在这种情况下,从 Rollup 返回以太坊的桥接不会可行(除非通过受信任的方法),这对组合性造成伤害,但确立了可能促进更特定于应用的 Rollup 使用的界限(例如,如果从 Rollup 返回的桥接不可行,用户最好确认他们进入 Rollup 域的目的)。这样的代理限制在防止 Rollup 出现 Sybil/非有机活动方面可能是重要的。这一点本身是一个强有力的概念,因为它为用户提供了更便宜、更高效的执行方式,同时也让他们做出是否投资该系统的一些决定。如果他们想要更具组合性的选择,可以直接寻求在以太坊内的经典 Rollup 上参与。
在为一向信任最小化的桥梁在 Rollup 和其基础 L1 之间的实用性辩护时,我们还可以开始看到桥梁如何在主权 Rollup 中以多种方式实施。一个很好的例子是展示一个主权 Rollup 可能如何在其所依赖的 L1 上实现一个验证桥梁。这只需要求 Rollup 的参与者部署实现验证桥功能的智能合约到 L1,使以太坊能够获得信任最小化验证的方法:
这突显了主权 Rollup 如何被模塑以达到与经典 Rollup 相同的结果(所有这些都没有嵌入的确认标识)。
经典 Rollup 和主权 Rollup 之间的关键区别在于每种 Rollup 类型选择其桥接选项的方式。对于 经典 Rollups,可以简洁地理清桥梁动态及其背后的动机。经典 Rollup 的设计具有明确目的,即与其所继承的安全性高度互操作。从这一决定可以合理地确认 Rollup 将保持强烈依赖以太坊的长期目标,因为其承诺嵌入一个验证桥。这与希望扩展以太坊的主权 Rollup 也拥有的目标是相关的。该决定在嵌入上优先考虑组合案例,例如与 L1 的组合性,意味着期望未来会涉及更多频繁的跨域交互,无论是通过资产转移还是通用跨链消息传递。值得注意的是,组合性可能增强对以太坊扩展的努力,但这并不意味着它是提供扩展的严格要求。
关于主权 Rollup 的一个较为显著的论点是,成功实现时与底层 L1 相比,Rollup 生态系统自有的高度主权。主权意指 Rollup 生态系统在无需其底层 L1 或任何其可能建立桥接关系的其他区块链影响下设定其区块链规则。这有助于解释为什么主权 Rollup 不订立与其底层 L1 的验证桥。
然而,对主权 Rollup 与经典 Rollup 之间当前区分的问题在于,它们双方都具备这些能力。真正的区别无非在于经典 Rollup 施加其规则以增强与以太坊的桥接的机制面临更多障碍。除此之外,经典和主权 Rollup 都因其节点中设定的逻辑而定义 – 而不是它们之间或与其底层 L1 之间存在的任何桥梁。无论向底层 L1 提供的 Rollup 数据如何,都以 Rollup 节点所定义的逻辑被加以处理。
以上论述说明经典和主权 Rollup 在其技术主权方面的趋同,经济力量也同样对这两种 Rollup 类型施加压力。虽然我们从技术上说桥梁不会决定 Rollup,但从其所推导的价值中获取的抵押品可影响 Rollup 应成为何种形式的社会共识(类似于人们对某个区块链的某个分叉是否规范化的信号)。
在上一篇中,描述了主权 Rollup 与经典 Rollup 之间的许多相似之处,而这种观点确实与现实一致。尽管这种观点可能会降低大家对主权 Rollup 相对经典 Rollup 的价值信念,接下来还是要对此形成提案。
由于经典 Rollup 表达了对嵌入与以太坊之间的验证桥的坚定承诺,因此它们在桥梁功能实现上采取了谨慎的方式。这表明,虽然它们与嵌入桥梁达成长期(且理想上是永久性)的承诺,但它们采取了一种稳步的方法来巩固验证桥。这样做则是出于风险管理的原因,但同时也引入了主权信任假设(请记住,桥梁的信任假设可以通过有效性如何被判断设定和功能如何被特权方所改变的方式来进行评估)。
桥梁的可变性/可升级性确实引发人们担忧,但并不是为了控制用户,而是为了确保能够立即处理任何潜在的漏洞,保护用户以免遭受潜在的灾难性结果。值得提醒读者的是,Rollup 还不到十年的历史,尽管在研究、出货和报告上已有不少成果,但我们在安全地实现其潜力上仍有很长的路要走。
这就是选择成为主权 Rollup(即不嵌入且致力于 Rollup 的意见导向)显示出独特好处的原因。在不承诺嵌入桥梁的情况下,主权 Rollup 可以采取消除更多不可变桥梁的途径,并在需要升级的情况下,表达变化的需要,以便用户能够表达他们是否同意升级细节。理论上,经典 Rollup 也可以与升级的嵌入桥梁相对进行这一过程,但这需要更中心化的社共识工作以达成同样的结果,并且可能依赖于遵循声明性加升级路径的更多强制压力将更难克服。
值得一提的是,对 Rollup 域的主权增强始终与以太坊扩展工作保持互补性(假设此 Rollup 为 EVM 等效),并仅仅为对关于桥接实现进行的决策提供了更大的用户决策权。
虽然区分 Rollup 是经典型还是主权型的主要方式已经相当明确,但 Rollup 特征/功能周围做出的设计选择也可以进一步分类我们所讨论的 Rollup 类型。绘制 Rollup 设计空间的方式很多,因此本文旨在描述一种可能的方法,考虑到以下几点:
排序:如前所述,Rollup 可选择采用的排序模型范围广泛,但主要的区别最终归结于 Rollup 是独立管理其排序还是让基础 L1 DA 层来帮助这个过程。因此,Rollup 可以根据在这里做出的决策视为基于与非基于。
信任最小化的 Rollup 验证支持和方法:如前所述,Rollup 可以提供类似轻客户端的功能,以启用从 Rollup 到另一区块链的信任最小化桥梁。如果在 Rollup 的设置中提供了此选项,它增强了 Rollup 用户可用的安全桥接机会。如果支持通过何种方式来提供信任最小化验证能力,那么将有助于区分我们所讨论的 Rollup 类型。* 如果 rollup 使用 ZK 证明来帮助提供信任最小化验证,则该 rollup 可被视为 ZK。
基于上述因素,我们可以构建一个矩阵,以更正式地表示 rollup 设计空间:
上面的表格展示了试图帮助导航和更好地分类在实施 rollup 系统时所采取的任何方法的努力。你会注意到,围绕顺序和信任最小化验证能力所做的决定与 rollup 是经典性质还是主权性质无关。值得注意的是,例如在 rollup 系统提供不了信任最小化验证方法的情况下,这使得验证桥的确立变得不可能,在这个特定的列中有效地排除了经典 rollup 的存在——这些列中的 rollup 只是简单的香草或基于主权的 rollup,没有轻客户端支持,可以被其他区块链利用(这意味着 rollup 和其 DA 层之间只存在一个单向的信任最小化桥)。
通过这样的一个系统,我们可以更系统地推理不同的 rollup,并培养出标准化的 rollup,可以被归约到这个矩阵中的单个单元格来描述。本质上,我们可以将所有可能的 rollup 类型(在我们自称的以太坊扩展框架内)映射到这个 3D 矩阵的单个单元格中。
例如,让我们看看以太坊上排名前三的 rollup 如何在这个矩阵中进行分类(根据 L2Beat 描述的市值估计)。这三种 rollup(Optimism、Arbitrum One、Base)都可以被确定为 经典的 Optimistic Rollups,当前采用非基础排序。因此,我们可以看到它们在矩阵中的哪个单元格下:
这个设计框架有两个关键好处:
通过上述分类框架的好处,可以更直观和系统地绘制出以太坊的 rollup 领域。在建立在各个团队和研究者的努力之上,它能为组织和对寻求实现以太坊 rollup 生态系统的愿景的参与者之间的预计对齐提供良好基础。它甚至可以扩展到包括 Vitalik Buterin 概念化并由 L2Beat 更正式阐述的 rollup 阶段等有用的信息。
到目前为止,该框架旨在尽可能多地捕获详细信息和语义,而不对可能涉及主观争议的更微妙细节抱有过多观点。这是为了以尽可能中立的方式呈现分类框架的概念。主要目标是充分倡导采用有足够基础的框架,加以扩展。考虑到这一点,让我们继续探讨围绕以太坊 rollup 的安全性问题,旨在为以太坊提供足够的上下文,以潜在地扩展此框架或其可能激发的任何其他框架。
在理解 rollup 分类框架的有用性时,我们可以开始考虑哪些信息可以增强它作为以太坊 rollup 生态系统的有效工具的价值。安全性仍然是 rollup 的一个重要支柱,旨在使其成为能够增强链上系统实用性的最安全的 L2 区块链。尽管可以明显推断出安全性是指什么,但还是值得简单概述一下安全性实际上旨在实现什么。
Rollup 的安全性是指 rollup 为其用户和各种独立运营商提供对其功能和服务的强有力保证的能力。技术上,rollup 应以定义明确的方式运行,使用 rollup 的体验应对所有用户公平且不偏不倚。
考虑到这一点,让我们回顾一下当前 rollup 面临的一些最紧迫的安全问题,试图绘制出以太坊生态系统应该关注和寻求改善的方面。
技术风险是指围绕启用 rollup 功能并向其用户和独立运营商提供效用的技术的潜在风险。这些风险可能以多种形式突显:
此技术风险部分可以讨论的风险肯定还不止这些,但在很大程度上这些描述我们更为了解的多种类型,并且与下一个风险领域——中心化风险,并没有过多重叠。
中心化风险是指一个单一行为者(或一组行为者)对提供核心功能或可配置性施加的风险。这些风险可能以多种形式突显:
如上所述,在技术和中心化风险的形式中存在多种安全风险,它们往往以复杂的方式交织在一起,使它们加大,并且在理论上应该具有高度安全的区块链上变得更加显眼和突兀。
本节的目标不是为之前部分中描述的许多潜在风险提供完整的解决方案,而是突出出发于可能的几个渠道,以便减少并可能完全消除某些现存的问题。我们从对风险领域进行分组和关注开始,以更好地了解哪些问题希望得到解决,以及哪些潜在解决方案有助于导航这些特定问题空间:
如上所述,工程关注的是技术实施细节。这包括从协议规范到应用层通过智能合约的整个过程。
当涉及协议规范和客户端考虑时,实际上可用的选项并不是很多,但与此同时,这两个领域的成本大幅低于 prover 系统和智能合约。一旦考虑到这一点,关于协议规范和客户端实施的优化风险最小化的策略将涉及扩大对这些内容的严格性测试的既定方法,无论是通过正式验证来证明协议规范的数学正确性,还是针对客户端实施采用常规软件测试实践。
在优化最小化 rollup 的 prover 系统和智能合约实施的风险时,我们进入了更复杂的领域,这种情况更合适地被描述为未知领域。与协议规范和客户端实现不同,这些是一种比较新颖的概念,因此带来了更多不确定性,不知道在减轻技术风险时需要特别留意什么。在实现既新颖又复杂的系统时,需要更好地了解设计空间。遗憾的是,这种努力并不是可以凭一己之力在短时间内突围而出的,即使拥有最好的智力资本也是如此。要理解将新技术从破坏性、创新阶段转变为成熟阶段所需要的条件,在解提出去识别问题配置时已经得知过渡工作需要在资源上(无论是时序、资金和智力)进行大量投资。问题在于,虽然这是正确的,却不意味着直到我们达到这样的阶段,依然以信任为本的实验技术上存在显著风险。自然解决方案就是实施“保护栏”,以便如果遇到问题时能够快速解决。可惜,这样的方法引入强信任假设,将权力置于少数非独立权限紧凑的进程中。这在区块链情境中显然并不理想,因为这些系统被设计成具有开放性和无信任性质(这是推动整个行业努力的渐近目标)。
在哲学上,以上方法与构建基于区块链的系统的整个动机相悖,虽言之无物,显然反映出当前我们在实现 rollup 系统的 prover 系统和智能合约时的现状。讽刺的是,以太坊生态系统和 rollup 设计者并不对此无动于衷,这不幸是没有任何更好解决方案来应对风险的结果。
这有效突显了 rollup 设计者面临的困境,即在放弃对实验技术的控制的压力与预计实验技术如预期有效之间存在矛盾——无论如何,某种形式的信任假设都寄托于这些系统的设计者身上。在此背景下,问题依然是我们如何在不引入更高技术风险的情况下改善目前被迫承担的信任假设?
深度防御被认为是一种通过多层安全策略来保护系统的策略。对于保护实验系统尤其是通过验证桥实现信任最小化桥接的 prover 机制,基于 DiD 的方法提供了一个很好的替代方案,用以在小心管理信任风险的同时确保这些系统的安全性。
在 rollup 中,DiD 改进的大致样子是什么?
在回答这个问题之前,让我们回顾一下可能成为 rollup 的证明系统的最常见的实际示例——在 rollup 和 L1 之间实施验证桥:
在前面的部分中,我们逐步形成了对 prover 系统的直观理解,通过称其为“有效性执行机制”来描述,正如当时所述,这些系统负责提供一种方法,使得任何人都可以验证给定 rollup 的当前状态,而无需运行 rollup 全节点。
这本质上描述了我们试图在其周围最小化信任的实验性技术,同时确保技术风险得到充分考量和规划。此系统涉及将链上逻辑和链下逻辑结合在一起,共同提供上述信任最小化功能。这就是为什么在讨论这些风险时,智能合约和 prover 系统被凝聚到一起,因为智能合约通常是这一“轻客户端”行为对 L1 可及的载体。在未来, 这个载体可能以其他形式出现,例如集成到 P2P 网络层中,为其本土 L1 的轻客户端提供服务——但在目前,我们将在系统图中考虑到,与 rollup 的 prover 系统以智能合约接口进行交互的系统。
考虑到这一点,有两种潜在策略采用 DiD 来改善 rollup 的 prover 系统信任假设。这两种策略都旨在识别并停止依赖 rollup prover 系统的功能。
因此,在通过多 prover 和多验证者引入的 DiD 概念提供的解决方案中,提供了增加更多安全层的新选择,同时为放松信任假设铺平了道路。但是,虽然该解决方案确实有所改善,但其引入的技术冗余确实会带来更高的成本。因此,是否标准化使用此方法将取决于评估它在推动安全改善方面的实际和有用程度,是否足以使耗费的成本值得。
关于可升级性,我们通常是指对 rollup 系统继续运作所必需的关键智能合约。如前所述,这可能涉及 W1和 L2 上的桥合约,以及驱动验证桥功能的 L1 上的验证合约。
可升级性的一个目标是减少与更新核心智能合约相关的必要信任和随之而来的强制性。如果 rollup 要升级智能合约,则应该设置一个窗口,让用户有机会决定是否退出 rollup 系统,并能够这样做,如果他们不同意正在实施的某个升级的细节。
为了向用户提供这一保证,我们需要确保两件事:
在前一部分我们引入了多 prover 和多验证者的想法,以及它们如何帮助最小化信任假设,同时仍为抵御技术风险提供保护。通过多层安全机制的引入改善信任最小化,这可以平缓紧急升级的要求。
确保抗审查性时,我们力求确认没有恶意行为者能够阻止用户在即将升级事件时得到退出。当前情况下的解决方案大多是为用户提供手段,通过 L1 DA 层迫使交易纳入(在这种情况下,她们是 rollup 交易请求提取资本),而 rollup 协议提供的方法跳过信任行为者如排序者,确保交易请求在升级事件之前可以得到处理。
弹性在计算机系统中指的是一个系统自适应影响并增强自身可用性和适应意外挑战的能力。当我们谈到 rollup 的弹性时,我们指的是两个方面:
需要表达的是,操作弹性和对抗抵御并不是互相排斥的领域,实际上相当多所期望的操作弹性特征都依赖于对抗抵御的保证。对抗抵御仅关注于解决某些特定问题,一会儿会对此进行讨论。
活动性是实现操作弹性的关键要求,因此 rollup 系统需要确保能独立探测和处理潜在活动性问题,而无需信任干预。我们来评估可能在 rollup 系统中出现活动性问题的地方。
为了帮助提高排序的操作弹性,rollup 系统应提供给用户一种紧急机制,使其能够绕过排序者并自我排序交易。这是L1 强制交易纳入机制的基本原则。通过该机制,用户可以通过 L1 合约发布其 rollup 交易,该交易将被排队并最终作为同步流程的一部分在 rollup 上执行。通过 L1 强制纳入机制执行的交易通常将在 12 小时至 24 小时内纳入,具体取决于 rollup 选择以此可选的备份机制进行实施。他们因此能在诸如临时或长期排序者失效的最糟情况下提供“最终交易纳入”的保证。
状态根提议可以是无权限或有权限的,目前我们在实践中看到这两种方法。就有权限的情况而言,活动性保证可以通过为提议状态根增加提议者备用机制来进行改进,在此情况下,一组有权限提议者的状态根处于不活动状态超出一定时限可以启用备用机制提议状态节点。
对抗抵御是提供抵御恶意攻击的方法。恶意攻击指的是任何试图利用 rollup 功能或审查用户交易的行为:
如上所述,rollup 功能可能在验证桥处受到利用。其工作原理是,恶意行为者可能会欺骗桥从 L1 智能合约释放资金(例如在经典 rollup 上),使其误以为有一个无效的 rollup 状态转换。这将导致桥接资产在 rollup 中的抵押物不足。这对 rollup 造成了重大系统性风险,因为桥接资产的抵押不足传递了传播效应,破坏依赖于验证桥安全性正常驱动的多个应用。
出于这个原因,确保 rollup prover 机制在保持验证桥顺畅工作方面的正常运行至关重要,因此,足够的降低此风险向量的方法是确保 rollup prover 系统的技术稳健性及其抵御恶意尝试以维护验证桥安全实施的能力。
我们要提供的的第二个主要防线,就是抵御恶意攻击。交易审查是指恶意排序者阻止用户的交易达到目标。当我们谈到用户交易时,我们可以直观地认为它表征了两件事情:
我们认为交易审查是成功的,如果恶意排序者导致用户的交易载荷未能实现用户的意图。未能满足用户意图可能通过两个不同的方式发生:
上述信息帮助说明了,交易审查问题不仅仅在于防止交易被纳入 rollup 的通知,更广泛的关注是用户交易请求周围未能满足意图。由此可见,像 L1 强制纳入机制这样的旁路措施并不足以给用户提供足够的审查抵御保证。
因此,rollup 系统的目标是提供防范措施,以对抗用户可能面临的这一审查向量问题。当恶意排序者出现时,最主要的策略之一就是分散排序者并提供一些责任标准消强对及时纳入转换的保障。通过分散排序者角色,我们可以确保保证排序者角色的活动性,并保持中立性,确保在单个参与者手中暂时保持该角色并周期性轮换。责任标准可以提供一些手段归属活动性(停机)和恶意故障(审查)至具体的排序者角色,以便经验这些行为者从而制裁其干扰系统的保障属性。补充到基于去中心化排序的 rollup 模型中的此类工具,可以包括帮助识别潜在被审查交易的某种形式的纳入列表功能,或者甚至是那些试图使用网络发现以集中不同节点的多个交易视图位于反应链数据包中的更复杂的方案。最后,对于这个方向的解决方案,可以引入更复杂的预确认系统到排序者,实现绑定承诺(通过某种形式的可信承诺机制——例如质押或重新循环质押系统)以满足用户的交易意图,交互为更高效的交易服务以及提高审查抵御(尤其对于对时间敏感的交易)。
上述的另一种解决方案(这可能会借用某些责任性和 BFT 共识元素)是通过加密内存池减少交易信息的浮现,使得选择性审查更为困难。不过,目前我们正在早期阶段探索这类型方法,因此,可能值得 rollup 考虑探索此方法,以管控审查问题。
最终,这些仍然只是潜在的方案,并不是充分完善的解决方案,因此我们留给其他可能在此提供的信息上建立实现一条前进的道路。
最后,让我们重申一下这篇文章中涉及的内容以及创建它的目的:
rollup 领域确实相当广阔,因此为用户和开发者提供更有效的途径以导航和推理不同解决方案,比以往任何时候都重要,类似于人们在帮助他们评估不同 L1 之间的差异时,为他们提供有关投入时间、努力和财务资源的信息,同时帮助他们深入了解所承载的风险。我希望,本文确立的基础能够在推动以太坊的 rollup 生态系统整体达到更高程度的成熟性中扮演更为重要的角色。
- 原文链接: research.2077.xyz/the-pr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!