深入分析:模块化区块链能更好的解决三难困境吗?
“模块化区块链”正在成为围绕可扩展性和区块链基础设施的一中类别定义叙述。
主题很简单:通过分解第 1 层区块链的核心组件,我们可以在各个层进行 100 倍的改进,从而形成一个更具可扩展性、可组合性和去中心化的系统。在我们详细讨论模块化区块链之前,我们必须了解现有的区块链架构以及区块链在当前的实现中所面临的限制。
什么是区块链?
让我们简要回顾一下区块链的基础知识。区块链中的块由两部分组成:块头和与该头关联的交易数据。区块通过“全节点”进行验证,这些节点解析和计算整个区块数据,以确保交易有效,并且用户发送的以太币不会超过他们的账户余额。
让我们再简要概述构成区块链的功能“层”。
执行层事务和状态更改最初在此处处理。用户通常还通过该层通过签署交易、部署智能合约和转移资产与区块链进行交互。
结算层结算层是验证卷叠(rollups )执行和解决争议的地方。该层不存在于单体链中,它是模块化堆栈的可选部分。可以美国法院系统,将结算层视为美国最高法院,对争议提供最终仲裁。
共识层区块链的共识层通过下载和执行区块的内容的全节点网络提供排序和最终确定性,并就状态转换的有效性达成共识。
数据可用性层用于验证状态转换是否有效的数据应发布并存储在该层上。当发生恶意区块生产者扣留交易数据的攻击时,该层可以很容易完成验证。数据可用性层是区块链可扩展性三难困境的主要瓶颈,我们稍后会探讨原因。
例如,以太坊是单体的,这意味着基础层负责上述所有组件的功能。
区块链目前面临一个称为“区块链可扩展性三难困境”的问题。与分布式系统的 Brewer 定理类似,区块链架构通常会在去中心化、安全性或可扩展性上做出妥协,以便为其他两者提供强有力的保证。
安全性是指网络在受到攻击时运行的能力。这个原则是区块链的核心信条,永远不应该妥协,所以真正的权衡通常是在可扩展性和去中心化之间。
让我们在区块链系统的背景下定义去中心化:为了让区块链去中心化,对硬件的要求不应成为参与的限制条件,验证网络的资源要求应该很低。
可扩展性是指区块链的吞吐量除以其验证成本:区块链处理越来越多的交易量同时保持较低的验证资源需求的能力。增加吞吐量的主要方法有两种。首先,你可以增加块的大小,从而增加可以包含在块中的交易容量。不幸的是,更大的块大小会导致网络的中心化,因为运行完整节点的硬件要求会随着对更高计算输出的需求而增加。单体区块链就遇到了这个问题,因为吞吐量的增加与验证链的成本增加相关,从而导致去中心化程度降低。其次,你可以将执行转移到链下,将计算负担从主网络上的节点转移,然后在链上使用证明来进行验证计算。
借助模块化架构,区块链可扩展性的三难困境可以通过关注点分离的原则来解决。通过模块化执行层和数据可用性层,区块链能够扩展吞吐量,同时通过打破计算和验证成本之间的相关性来保持使网络去信任和去中心化的特性。接下来让我们通过引入错误证明、卷叠以及它们与数据可用性问题的关系来探索这是如何实现的。
错误证明(Fault Proofs)和乐观卷叠(Optimistic Rollups)
Vitalik 在 Endgame 中指出的中心化和去中心化之间的一个可能的折衷方案是这样的:出于可扩展性目的,未来的区块生产可以中心化地集中于矿池和专业生产者,但区块验证(保持生产者诚实)应该继续保持去中心化。这可以通过将区块链节点拆分为全节点和轻客户端来实现。该模型有两个相关问题:区块验证(验证计算是否正确)和区块可用性(验证所有数据已发布)。我们先来探讨一下它在区块验证中的应用。
全节点下载、计算和验证区块中的每笔交易,而轻客户端仅下载区块头并假设交易有效。然后,轻客户端依赖全节点生成的错误证明来进行交易验证。这反过来又允许轻客户端自主识别无效交易,使它们能够在与全节点几乎相同的安全保证下运行。默认情况下,轻客户端假定状态转换是有效的,并且可以通过接收错误证明来质疑状态的有效性。当一个节点的状态受到错误证明的挑战时,共识会通过一个全节点重新执行相关交易来达成,这将导致不诚实节点的权益被削减。
轻客户端和错误证明模型在诚实少数假设(至少存在一个诚实的具有链的完整状态且提交错误证明全节点)下是安全的。该模型与分片(sharded)区块链(例如以太坊的合并后架构)特别相关,因为验证者可以选择在一个分片上运行完整节点,在其余分片上运行轻客户端,同时在所有分片上保持 N 个中的 1 个安全保证。
乐观卷叠利用此模型将区块链执行层安全地抽象为排序器(sequencers),这是捆绑和执行多个事务并定期将压缩数据发布回父链的强大计算机。将此计算转移到链外(相对于父链)可以使交易吞吐量增加 10-100 倍。我们如何才能相信这些链下排序器保持良性?我们引入了债券,一种操作者必须质押以运行排序器的代币。由于排序器将交易数据发布回父链,因此我们可以使用验证器,一种用来监视父链与其卷叠之间的匹配状态的节点,发布错误证明并随后削减恶意排序器的质押。由于乐观卷叠使用错误证明,因此只要网络中存在一个诚实的验证者,它们就是安全的。错误证明的这种使用就是乐观卷叠名字的由来,即假设状态转换都是有效的,除非在结算层处理的争议期间被证明并非如此。
这就是我们如何在最小化信任的同时扩展吞吐量:允许计算变得中心化,同时保持验证的去中心化。
数据可用性问题
虽然错误证明是解决去中心化块验证的有用工具,但全节点依赖于区块可用性来生成错误证明。恶意出块者可以选择只发布区块头,并保留部分或全部相应数据,从而阻止全节点验证和识别无效交易,进而产生错误证明。这种类型的攻击对于全节点来说是微不足道的,因为它们可以简单地下载整个块,并在发现不一致或隐瞒数据时从无效链中分叉出去。但是,轻客户端将继续跟踪可能无效链的去块头,并从完整节点分叉出去。(记住,轻客户端不会下载整个区块,且假设状态转换默认有效。)
这是数据可用性问题的本质,因为它与错误证明有关:轻客户端必须确保所有交易数据在验证之前已经在区块中发布,这样全节点和轻客户端必须自动就主链的相同去块头达成一致。
解决方案
看起来我们又回到了原点。轻客户端要如何在不下载整个区块的情况下确保一个区块中的所有交易数据都能被发布。
实现这一点的一种方法是通过一种称为纠删编码(erasure coding)的原始数学方法。通过复制块中的字节,即使有一定百分比的数据丢失,纠删码也可以重建整个块。该技术用于执行数据可用性采样,允许轻客户端通过随机抽样区块的一小部分来概率确定区块的整体发布状态。这允许轻客户端确保所有交易数据都包含在特定块中,然后再接受它为有效区块,并跟随相应的区块头。但是,这种技术有一些需要注意的事项:数据可用性采样具有很高的延迟,并且类似于诚实少数假设,安全保证依赖于假设有足够的轻客户端来执行采样以能够在概率上确定区块的可用性。
数据可用性抽样的简化
有效性证明和零知识卷叠(Zero Knowledge Rollups)
去中心化块验证的另一个解决方案是取消状态转换所需的交易数据。相比之下,有效性证明比错误证明相采取了更悲观的观点。通过消除争议过程,有效性证明可以保证所有状态转换的原子性,代价则是需要为每个状态转换提供证明。这是通过利用新的零知识技术 SNARKs 和 STARKs 来实现的。与错误证明相比,有效性证明需要更多的计算强度来换取更强的状态保证,从而影响可扩展性。
零知识卷叠是利用有效性证明而不是错误证明进行状态验证的卷叠。它们通过排序器/证明者模型遵循与乐观卷叠类似的计算和验证模型(尽管使用有效性证明而不是错误证明作为架构),其中排序器处理计算,证明者生成相应的证明。例如,Starknet 推出了用于引导目的的中心化排序器,并在路线图上逐步对开放式排序器和证明者进行去中心化。由于排序器的链下执行,计算本身在 ZK 卷叠上是无限的。然而,由于这些计算的证明必须在链上进行验证,最终性仍然是证明生成的瓶颈。
需要注意的是,利用轻客户端进行状态验证的技术仅适用于错误证明架构。由于通过有效性证明可以保证状态转换是有效的,因此节点不再需要交易数据来验证区块。然而,有效性证明的数据可用性问题仍然存在,并且稍微更微妙:尽管有保证的状态,但有效性证明的交易数据仍然是必要的,以便节点能够更新状态转换并将其提供给最终用户。因此,使用有效性证明的卷叠仍然受到数据可用性问题的约束。
我们现在到哪一步了
回想一下 Vitalik 的论文:条条大路通向中心化的区块生产和去中心化的区块验证。虽然我们可以通过区块生产者硬件的进步以指数方式增加卷叠吞吐量,但真正的可扩展性瓶颈是区块可用性而不是区块验证。这导致了一个重要的见解:无论我们使执行层多么强大或我们使用什么证明实现,我们的吞吐量最终都会受到数据可用性的限制。
我们目前确保数据可用性的一种方法是在链上发布区块链数据。卷叠利用以太坊主网作为数据可用性层,定期在以太坊上发布所有卷叠块。这种权宜之计面临的主要问题是以太坊当前的架构依赖于全节点来保证数据可用性,而不是执行数据可用性采样的轻客户端。当我们增加区块大小以增加吞吐量时,这不可避免地会导致对验证数据可用性的全节点的硬件要求增加,进而 导致网络中心化。
未来,以太坊计划利用数据可用性采样向分片架构发展,该架构由全节点和保护网络的轻客户端组成。(注意 - 以太坊分片在技术上使用 KZG 承诺而不是错误证明,但无论如何数据可用性问题都是相关的。)然而,这只能解决部分问题:卷叠架构面临的另一个基本问题是卷叠块被转储到以太坊主网作为呼叫数据(calldata)。这引入了一些问题,因为呼叫数据在规模上是昂贵的,无论卷叠交易批量大小如何,都会以每字节 16 个 gas 的成本成为 L2 用户的瓶颈。
“这意味着即使在最终用户利用卷叠的情况下,将呼叫数据发布到以太坊也将使他们因固定比率而依旧面临高昂的 gas 成本(见下图)。”
“随着使用量的增长,发布到以太坊的 calldata 数量也会增加。这让我们回到了原点 —— 以太坊真的很贵,即使最终用户使用卷叠,他们也依然会感受到这种成本。”
Validiums 是另一种提高可扩展性和吞吐量同时保持数据可用性保证的方法:细粒度的交易数据可以在链下(相对于来源)发送到数据可用性委员会、PoS 监护人或数据可用性层。通过将数据可用性从 Ethereum calldata 转移到链下解决方案,validiums 绕过了与增加卷叠的使用而导致的固定字节 gas 成本。
Rollup 架构也带来了独特的见解,即区块链本身不需要提供执行或计算,而只是对块进行排序并保证这些块的数据可用性的功能。这就是第一个模块化区块链网络 Celestia 背后的主要设计理念。Celestia 以前称为 LazyLedger,最初是一个“惰性区块链”,将执行和验证留给其他模块化层,并专注于通过数据可用性采样为交易排序和数据可用性保证提供数据可用性层。中心化区块生产和去中心化区块验证者是 Celestia 设计背后的核心前提:甚至手机也能够作为轻客户端并参与保护网络。由于数据可用性采样的特性,作为数据可用性层插入 Celestia 的卷叠能够随着 Celestia 轻节点数量的增长支持更大的块大小(进而提升吞吐量),同时保持相同的概率保证。
今天的其他解决方案还包括 StarkEx、zkPorter 和 Polygon Avail,其中 StarkEx 是目前唯一在生产中使用的 validium。无论如何,大多数 validiums 都包含对数据可用性源的信任的隐含假设,无论是通过受信任的委员会、监护人还是通用数据可用性层进行管理。这种信任还表明,恶意操作者可以阻止用户资金被提取。
仍在开发中
Celestium 架构
模块化区块链架构是当前加密领域中一个备受争议的话题。由于与分散的结算和数据可用性层相关的安全问题以及额外的信任假设,Celestium 对模块化区块链架构的愿景受到了重大阻碍。
与此同时,区块链堆栈的各个方面都取得了重大进展:Fuel Labs正在开发执行层的并行虚拟机,而Optimism 的团队正在研究分片、激励验证和去中心化排序器。乐观和零知识混合解决方案也在开发中。
以太坊合并后的发展路线图包括统一结算和数据可用性层的计划。具体来说, Danksharding 是以太坊路线图中的一个有前途的发展,旨在将以太坊 L1 数据分片和块空间转换和优化为“数据可用性引擎”,从而允许 L2 卷叠实现低成本、高吞吐量的交易。
Celestia 的无主见架构还允许广泛的执行层实现将其用作数据可用性层,为替代的非 EVM 虚拟机(如 WASM、Starknet 和 FuelVM)奠定基础设施。这种用于各种执行解决方案的共享数据可用性允许开发人员在 Celestia 集群之间创建信任最小化的桥梁,解锁跨链和跨生态系统的可组合性和互操作性,类似于以太坊及其卷叠之间的可能性。
由 Starkware 开创的 Volitions 为链上与链下数据可用性的困境引入了一种创新的解决方案:用户和开发人员可以选择使用 validiums 将交易数据发送到链下,或者将交易数据保存在链上,每个选择都有他们自己的独特的优点和缺点。
此外,第 2 层解决方案的使用和普及率的增加解锁了第 3 层:分形扩展。分形扩展允许将特定于应用程序的卷叠部署在第 2 层 - 开发人员现在可以部署他们的应用程序,完全控制他们的基础设施,从数据可用性到隐私。部署在第 3 层还解锁了第 2 层上所有第 3 层应用程序之间的互操作性,而不是像应用程序特定的主权链(例如 Cosmos)那样昂贵的基础链。卷叠上加卷叠!
与网络基础设施如何从本地服务器演变为云服务器类似,去中心化网络正在从单一区块链和孤立的共识层演变为具有共享共识层的模块化、特定于应用程序的链。无论哪种解决方案和实施最终流行起来,有一点很清楚:在模块化的未来,用户将是最终的赢家。
Scan QR code with WeChat