共识至上:重新思考 ZK 时代的基础层
作者:krane, lamby (Asula), sylve, lancelot (Hyle) 来源:bedlam research 翻译:善欧巴,金色财经
介绍
在过去一周,我们看到了多项关于以太坊共识层路线图的提案。最值得注意的是,Justin Drake在 Devcon 2024 的演讲中阐述了他对以太坊 ZK 时代的愿景。它被称为beam 链或beam 分叉,为以太坊批量实现了许多重大升级,包括缩短 slot 时间、加快最终确定性和以太坊共识的“snarkification”。人们对该提案的雄心和这些变化的时间表反应不一。然而,考虑到以太坊的经济规模,我们也应该承认,谨慎对待以太坊有多么重要。尽管承认这一点,但考虑一下以 rollup 为中心的生态系统的基础层的最大雄心勃勃的未来是什么样的还是很有用的。本着“不为过去的所累,只为未来”的精神,本文介绍了一种利用 ZK 和共识研究进展的未来。
我们将首先从基本原理的角度研究基础层,然后探索共识研究中的核心概念。最后,我们将深入探讨如何将这项研究应用于新一代基础层设计,尤其是在 ZK 机制下。
基础层
如今,大多数 Rollup 都采用中心化排序器来对交易进行排序和执行。排序器生成区块后,还负责生成执行证明以供其他人验证。为了使执行可验证,第三方需要 Rollup 的状态数据以及执行证明。状态数据和证明通常发布到数据可用性 (DA) 层,状态转换由验证层(通常被误称为结算层)验证。
早期,以太坊制定了以 rollup 为中心的路线图,并成为最初的基础层,同时执行 DA 和验证。以太坊的独特状态(即在以太坊上发行的大量有价值资产)使其成为 rollup 的天然验证或结算层。通过使用以太坊作为基础,rollup 不仅可以继承其安全性,还可以继承其流动性。无论如何,当时市场上没有专门的结算或 DA 选项。
即使在当今拥有许多专门层的世界里,拥有最大 PoS 验证器集和blob 支持的以太坊作为 DA 层也是一个非常安全的选择。此外,以太坊上的资产家族的数量和市值一直在持续增长。由于“结算”是特定于资产的,因此对于允许强制退出的 rollup,必须在发行资产的链上进行验证。如果 rollup 想要允许强制退出以太坊发行的资产,它必须使用以太坊进行验证。
今天的以太坊看起来是这样的:
然而,专门的 DA 层和结算层也确实在与以太坊直接竞争执行这些操作。例如,Celestia和EigenDA已经提供了明显更高的 DA 吞吐量(尽管安全模型不同)。同样,Initia正在扩展验证或结算中心的概念,通过提供预言机、统一的钱包体验和内置互操作性,为生态系统内的用户提供更无缝的体验(这也成为过去几个月以太坊路线图上的一个重要点)。
所有这些系统都采用与以太坊相同的形式,基础层被分解为数据可用性和验证,每个层都作为各自操作的专门枢纽:
新设计的关键见解在于 DA 层和验证层必须进行的优化分离。区块链的最初作用是在两个互不信任的交易对手之间实现可信第三方的去中心化。在以 rollup 为中心的系统中,基础层的作用是充当 rollup 之间去中心化的可信第三方,以实现它们之间的互操作性。一旦基础层验证了 rollup 的状态,所有其他 rollup 都可以隐式信任基础层。以 rollup 为中心的设计的另一个核心属性是,它允许应用程序在平均情况下(通过某种程度上中心化的排序器)为用户提供快速且廉价的交易确认访问权限,而不会在最坏情况下(通过强制退出基础层)损害最终的审查阻力。
鉴于我们理解了数据可用性和验证之间的分离,以及基础层在提供最终的审查阻力、Rollup之间的互操作性和资产发行方面的核心功能,我们可以推断如何构建更好的基础层。目前,Rollup每隔几个小时将状态数据发布到基础层,这意味着Rollup排序器提供的预确认仅在此时间范围内在基础上完成。数据吞吐量高于以太坊 L1 的基础层可以让Rollup更频繁地发布数据,减少从Rollup预确认到基础层确认的时间,从而提高Rollup的安全性。同样,以更高的速度进行验证可以实现Rollup之间的更快互操作性,从而无需流动性桥梁和做市商。我们可以利用对基础层必须处理的工作负载形状的具体见解来构建具有更高吞吐量和更快Rollup间通信的基础层。
集成区块链具有“热状态”区域,例如经常受到攻击的 DEX 池。这使得所有参与者的交易的相对排序变得非常重要。另一方面,rollup 通常在很大程度上独立的状态空间上运行,大多数交易仅影响其自己的 rollup 内的状态。虽然跨 rollup 交互确实会发生(例如,当用户在 rollup 之间转移资产或 rollup 相互组合时),但这些交互是明确的、定义明确的并且是提前知道的。由于每个 rollup 中的绝大多数交易都在脱节的状态下运行,并且跨 rollup 交易是通过特定的互操作性机制处理的,因此在基础层上对所有 rollup 数据进行严格的全排序的必要性较小。相反,只有在 rollup 明确交互的情况下才能有选择地执行排序:
两个Rollup向基础层发布状态差异列表和其状态转换的 ZK 证明
注意:我们假设Rollup 在此处发布状态差异列表以及其Rollup状态转换的 ZK 证明。
这里的核心见解围绕着交易之间的因果关系,并支撑了围绕有向无环图 (DAG) 共识模型所做的大量工作。一般来说,DAG 算法试图明确指出依赖关系,以便计算/处理可以并行进行。借鉴这些想法,我们预计 rollup 基础层将会出现,其中共识在很大程度上被放宽,以支持更高的吞吐量和更低的延迟。
Rollup 状态的自然划分表明,强制所有 Rollup 交易遵循总顺序可能是一种不必要的开销。delta和Hylé等系统利用了这一洞察力,允许 Rollup 独立进行,只需要协调跨域资产转移。然而,这并不是完全消除共识;相反,这是对真正需要共识的地方的改进。创新之处在于认识到这种排序可以局限于实际需要的地方,而不是在所有交易中全局强制执行。
这种分区的最大影响是创建一个优雅的Rollup 解决方案,以增加专门执行环境的吞吐量,而不会牺牲与其他的Rollup 可组合性。
因果排序与全排序
在进一步讨论之前,让我们先回顾一下排序。广义上讲,共识是网络中所有节点对有效交易排序的一致意见:
线性区块链必须就交易的全序达成一致,即在所有参与节点看来,事件发生的完整线性顺序。彼此无关的交易仍会整齐地置于全局顺序中。
另一方面,因果排序只是对交易进行排序,即先发生的交易排在依赖于其输出的交易之前。没有因果关系的交易不需要相互排序。这也称为偏序。DAG 只是在一组交易中实现偏序的数据结构。偏序还为 DAG 中不相交部分之间的并行交易执行打开了大门。在这里,没有所有节点都同意的单一、全局的交易排序。
全序可以建立在 DAG 之上。它需要额外的共识机制来就并发事件的顺序达成一致。Narwhal And Tusk协议或 Sui 的Mysticeti中较新的演进就是一个例子。
DAG 内的交易可以独立于其他不相关的交易进行确认。一旦交易获得大多数验证者的认可,它就被视为有效。允许单独确认交易而不是在区块内确认交易可以大大提高交易吞吐量,因为可以并行提出和确认许多交易。这可以被认为是单一领导者共识的泛化,其中任何验证者都可以提出新交易(注意:这也可以被视为提出一个包含一个单独交易的区块)。
总结一下 DAG 中交易验证的工作原理:
用户将交易广播给验证器节点的子集。
当节点收到交易时,它首先根据图的本地视图检查该交易是否与其当前知道的任何交易相冲突。
如果存在冲突,例如试图花费相同的资金,则交易会被拒绝。
如果没有冲突,接收节点将与网络中的其他节点进行交互,以就交易的有效性达成某种形式的一致。其中一种方法是子采样,其中节点通过对其他节点的子集进行采样并询问他们是否根据自己的本地观点认为该交易有效来开始几轮查询。如果采样节点的阈值为肯定响应,则查询轮次被视为成功,并且表示已达到法定人数。重复此采样过程,直到节点对交易有效性充满信心。此过程允许节点快速就交易有效性达成概率共识,而无需全局一致。重复采样有助于确保整个网络达成共识,使得冲突交易极不可能同时被接受。
对交易验证进行子采样
需要重申的是,任何节点在任何给定时间都可以运行此交互式过程来实现法定人数,从而允许有多种路径来达成共识。从某种意义上说,每个验证器或副本都在运行自己的区块链,并定期与其他节点同步。这种在协调之前先推进多个不同区块链的想法也在非 DAG 设计中进行了探索,例如Autobahn(仍然依赖于数据传播和排序的分离)。在 Autobahn 中,每个验证器维护自己的交易通道,然后在同步过程中进行协调。虽然本文中没有明确将它们称为区块链,但我们认为通道与区块链非常接近,同步过程类似于合并多个区块链。
基础层中的因果关系
现在,既然我们理解了因果关系的概念,我们可以尝试拼凑出这个概念与基础层的关系。如前所述,rollup 通常会发布状态数据或状态差异列表,这些列表对应于其自身持久分区状态上的状态更新。两个 rollup 发布的数据不会对某些“热状态”产生争用,因为数据彼此完全不相交。这放宽了基础层对全局排序的需求。此外,要验证新的 rollup 状态,只需验证先前发布的 rollup 状态。因此,基础层可以自由地对这些 rollup 交易进行排序,使它们能够彼此独立地进行,而不必等待全局排序:
从更广义上讲,rollup 应该能够自由地将数据和证明发布到基础层,而无需担心费用。当数据在网络中传播时,基础层的验证者将验证 rollup 排序器发布的证明。如果一定数量的验证者验证了该证明,则假定交易已确认。这样的系统将允许 rollup 以数据通过基础层传播的速度实现确认。从理论上讲,这也应该缩短排序器预确认和基础层确认之间的时间。
上述系统取决于基于 ZK 的执行分片,而不是复制执行作为可验证应用程序的未来。
在两个 rollup 之间移动数据的跨分片交易需要排序,但这也是部分的。例如,将资产 X 从 rollup A 转移到 rollup B 需要 rollup A 的提款交易达到法定人数,然后 rollup B 才能包含存款交易。来自基础层的快速确认将为同一生态系统中 rollup 之间的互操作性提供可靠的保证,从而为基础层创造网络效应。快速的互操作性加上大量有价值的资产可能足以使基础层对潜在的 rollup 具有吸引力。总而言之,这种专门的设计将允许:
Rollup交易的确认时间快速。
Rollup之间的快速互操作性(无需流动性桥梁或做市商)。
用于Rollup的专用 DA 吞吐量。
用于Rollup的专用验证工具(更多证明系统)。
简要说明:基础资产的价值累积
上述讨论为 rollup 提供了一个廉价、快速且安全的基础层。然而,目前围绕以 rollup 为中心的路线图的大部分讨论都围绕着 rollup 存在下 ETH 和以太坊的价值累积。拥有用户关系的 L2(如 Base)能够对其区块空间收取溢价,并且只需将其收入的一小部分以 DA 费用的形式返还给以太坊。
通过允许 rollup 更频繁地发布状态数据来实现快速互操作性,基础层可以获得一些原本会损失给做市商和流动性桥梁的收入。尽管更好的互操作性系统为基础层带来的价值完全取决于需要相互通信的 rollup 数量。在 rollup 不满足多个应用程序需求的设置中,基础层的价值累积变得更加清晰。应用程序只需使用基础层进行交互即可实现可组合性。应用程序可以获得高吞吐量和对自己空间的控制权,而不会牺牲可组合性。
还有一些论点认为,通过改进基础层的执行来提高原生代币的价值累积。这实际上允许基础层与 rollup 竞争,违背了以 rollup 为中心的设计原则。包含执行的另一种方法(也可能是我们的首选方法)是构建enshrined rollup,其中基础层资产通过重新质押来保护 rollup 排序器。如果需要,基础层验证者集甚至可以充当 rollup 的排序器集(尽管验证者集不必相同)。事实上,在Martin Köppelmann 在 Devcon 2024 上的演讲之后,enshrined 或原生 rollup 的话题开始升温。对于像以太坊这样的生态系统,它将允许 ETH 赚回一些损失的价值,同时也允许开发人员在 rollup 上更自由地进行实验,因为 rollup 的质押可能会比以太坊 Layer-1 低得多。
结论
总的来说,我们认为 ZK 时代代表着以太坊和整个区块链真正令人兴奋且具有前瞻性的未来。在这篇文章中,我们概述了 ZK 与最先进的共识的结合如何代表以 rollup 为中心的系统中基础层的潜在新方向。通过将零知识证明与借鉴自基于 DAG 的共识机制的想法相结合,我们可以重新构想真正针对 rollup 进行优化的基础层。共识仅应用于实际共享状态的地方,而不是作为所有操作的统一要求。随着生态系统继续向模块化设计发展,我们预计这种更细致入微的基础层共识方法将成为模块化区块链的标准。
总的来说,我们认为,鉴于几项新的支持技术刚刚投入生产,基础层必须采用这项技术才能保持竞争力。
我们不能害怕拥有更大的梦想。