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