本文第二部分探讨了区块链网络及其二层滚动方案的数据可用性问题。尽管以太坊提供链上数据可用性,但二层滚动方案处理交易时极易受到数据可用性不足的影响,这会影响用户验证状态、提交欺诈证明或提取资金的能力。解决这一问题的关键在于提供有效的离链数据可用性解决方案,以确保可靠性和高并发性能。
DA系列的第2部分探讨了困扰区块链网络和第二层Rollup解决方案的数据可用性问题。
在以太坊上,数据本质上在链上可用。但Rollup在链外处理交易,存在可用性问题 - 聚合交易的顺序器缺乏长期保持数据可用的激励。
这阻止了用户验证状态、提交欺诈证明或提取资金,如果顺序器限制造数据的访问。示例显示在乐观Rollup和ZK Rollup中,数据的隐匿尽管有有效证明也模糊了真实状态。
初始的Rollup设计将所有数据作为calldata发布到以太坊以便可用。但是,calldata成本高昂且容量有限,限制了Rollup的扩展。以太坊缺乏修剪也增加了无限期保持Rollup数据在链上可用的成本。
为了实现真正的去中心化和无需许可,Rollup需要提供高效的解决方案,
可验证的链外数据可用性,而不会产生过高的链上成本。
有前景的技术包括数据可用性方案和数据可用性抽样。
强健的数据可用性对于Rollup提供其承诺的可扩展性、可审计性和用户主权至关重要。对可用性方案的持续研究旨在防止顺序器中心化风险,并释放第二层的全部能力。
上周,我们深入探讨了这一三部分系列中数据可用性是什么。
我们通过深入分析探讨了数据可用性为何重要:
PoW和PoS中的交易生命周期 - 显示在验证和共识阶段可用性瓶颈出现的位置。
比较以太坊和Rollup - 以太坊提供内在的链上可用性。Rollup面临激励顺序器的“数据可用性问题”。
Rollup密码学 -欺诈和有效性证明根本依赖于可用数据以安全运行。
用户需要可用性来验证余额、提交交易和独立审计。对于Rollup而言,可用性 enables open participation, state derivation, and security. 它使可扩展性与数据方案相关,而不仅仅是吞吐量。
在第2部分中,我们探索了数据可用性周围存在的问题。
第一层区块链努力实现挑战性的“可扩展性三重难题” - 同时提供去中心化、安全性和可扩展性。这在以太坊等当前第一层链的限制下仍然困难,以太坊以强有力的去中心化为代价,仅提供微弱的每秒15笔交易的吞吐量。第二层Rollup已经成为改善区块链可扩展性的一种领先技术,通过在主链之外处理交易,同时继承其安全保证。Rollup在第一层外部处理执行,但定期发布简洁的证明,以利用基础链的去中心化和安全性进行验证。
数据可用性(DA)问题是区块链网络中的一个重要关注点,尤其是当考虑到像Rollup这样的可扩展性解决方案的不断发展的格局时。这个问题根本上围绕确保网络中的每个人都可以访问新添加区块中的所有数据。为什么这如此重要?如果数据并不完全可用,它就会打开潜在风险的大门,包括区块生产者隐藏的恶意交易,可能会破坏系统的安全性和完整性。
从本质上讲,数据可用性问题对区块链网络提出了一个关键问题:“我们如何确信在新提议的区块中的所有数据确实对每个参与者可用?”无法保证这种可用性可以严重危及任何区块链的可靠性。
因此,数据可用性问题是指确保在像Rollup这样的第二层解决方案中,交易数据保持可靠地可供所有网络参与者访问的挑战。
由于本DA系列仅关注以太坊,我们可以确定,在以太坊中,数据可用性是内在的 - 完整的交易数据直接存储在链上并在所有节点间复制。但Rollup在链外处理交易,仅将压缩的证明发布到L1。这节省了成本但危及可用性。
Rollup依赖于一个顺序器在链外聚合交易并生成简洁的证明以提交到以太坊。然而,顺序器没有激励将完整数据长期提供给用户。他们旨在最大化吞吐量和最小化成本。
然而,原始交易数据必须在Rollup中仍然可供用户访问,以便他们导出当前状态余额、在需要时提交欺诈证明并提取资金。如果顺序器限制对数据的访问,审计和争议将受到阻碍。
因此,Rollup面临一个困境 - 由于费用和膨胀,交易数据不能像以太坊一样完全存储在链上。但链外可用性依赖于激励顺序器保留数据并提供数据访问。
在Rollup领域,作为旨在提升区块链可扩展性的先进第二层解决方案,这个问题变得更加显著。
乐观Rollup需要在链上发布原始交易数据,以便节点可以监控活动,并在检测到无效状态转换时提交欺诈证明。如果没有全面的数据可用性,恶意或错误可能在Rollup中被忽视,因为节点无法在没有底层数据的情况下主动检查欺诈。完整的交易细节必须在链上可供访问,以便诈骗证明和乐观的安全模型有效运行。
相反,ZK Rollup得益于有效性证明,不需要链上的交易数据。然而,原始数据仍然必须在链外进行可用,使用户能够导出他们账户和余额的实际状态。如果在ZK Rollup中交易数据对用户不可用,可能导致资金在有效性证明中被确定性和可验证地发送到某用户的账户,但该用户没有办法查找或确定其更新的账户余额和当前持有,因为他们无法访问底层数据。即使有效性证明确保了正确性,但数据可用性对于导出Rollup的状态仍然至关重要。
让我们通过几个示例来分析一下:
ZK Rollup顺序器收集并批量处理以下交易:
Ryan将3 ETH发送给Arhat
Charlie将5 ETH发送给Dan
Eve将2 ETH发送给Fabian
顺序器生成有效的零知识证明,证明这些交易的正确性,并在以太坊上发布。然而,顺序器没有在链上或链外公开实际的交易细节。在没有底层数据的情况下,用户无法验证其余额或已执行的交易,即使证明是有效的。顺序器可以通过隐匿数据来模糊真实的Rollup状态,尽管发布了有效的证明。
在此ZK Rollup场景中,顺序器扮演着关键角色:
协议功能:顺序器收集并处理一系列交易。然后生成一个零知识证明,证明这些交易是正确的,并将此证明发布到以太坊主链。
数据可用性问题:尽管证明有效,顺序器没有在线或链外提供实际交易细节。这一遗漏造成了重大透明度和可验证性缺口。
用户影响:Ryan、Charlie、Dan、Eve和Fabian等用户没有任何手段能够验证他们的最新余额或交易的执行。有效的零知识证明确保了交易在原则上的有效性,但未能透露关于交易的任何具体细节。
潜在恶用:通过隐匿完整交易数据,顺序器可以模糊Rollup的真实状态。这造成了一种情况:有效证明已发布,但缺乏数据可用性使得用户无法独立核实其交易和余额。
乐观Rollup顺序器批量处理以下链外交易:
Ryan将3 ETH发送给Arhat
Charlie将5 ETH发送给Dan
Eve将2 ETH发送给Fabian
顺序器向以太坊发布一笔交易,其中包含:
表示捆绑交易的哈希承诺
发布该批次所需的任何签名
在挑战期内,顺序器提供所有交易细节,除了Ryan的交易。没有数据,用户无法对此无效的遗漏提出挑战。当挑战期到期后,顺序器使用他的签名,从Ryan的账户中提取了3 ETH的无效提款。没有遗漏的数据,Ryan无法对其进行争议。
乐观Rollup示例突显了数据可用性问题的另一个方面:
顺序器的角色:顺序器批量处理链外交易并将此捆绑的哈希承诺发布到以太坊。这一行动意图代表Rollup的新状态。
挑战期动态:在挑战期中,顺序器提供大部分交易细节,唯独Ryan交易的关键信息未对外披露。这种选择性披露妨碍用户有效挑战状态转换的能力。
利用挑战系统:在挑战期到期的情况下,又没有任何成功的挑战,顺序器从Ryan的账户提取无效资金,利用他的签名。缺乏完整的数据可用性使得Ryan或其他用户无法对这一行为提出争议。
系统完整性受损:顺序器的这种行为可能会削弱用户对系统的信任。用户无法验证或对交易进行挑战,从而导致Rollup的机制可能被恶意利用。
这些示例生动地说明了两种Rollup类型中的数据可用性问题 - 有效的证明或承诺并不保证用户能够实际访问导出真实状态和审计账户所需的底层数据。可用性方案对于防止运营者审查、遗漏或错误不被察觉至关重要。这也突显了有效的密码学承诺单独并不足以保证去中心化安全。用户在证明后需要数据访问,以便自主审计结果。
我们通常关注支撑如Rollup系统的优雅密码学。然而,锚定这些证明与现实之间的原始数据同样重要。如果数据被操控或隐蔽使得输出失衡,先进的密码学将毫无意义。
数据可用性纠结于“无信任”系统的核心含义。无信任要求用户获得与操作员相同的信息以独立推导结果。在没有这样的审计能力的保证下,这些保证变成了基于“信任”的。
在应对数据可用性(DA)问题所带来的挑战时,乐观Rollup和零知识Rollup最初采取了一种策略,涉及运营者将完整的交易详细信息提交到以太坊区块链作为‘calldata’。这一策略在短期内有效地规避了DA问题,通过确保所有必要的交易数据在以太坊链上可访问。
注:我们在之前的文章中讨论了即将推出的 EIP-4844的calldata 更新。
然而,随着Rollup中处理的交易量不断增加,这一方法在可扩展性方面遇到了限制。交易数量越多,作为calldata提交的数据量也越大。数据提交的增加直接影响以太坊网络的容量,最终对Rollup旨在实现的可扩展性构成潜在瓶颈。增加的数据量可能导致交易费用上涨和网络拥堵,从而抵消Rollup的可扩展性优势。
进一步复杂化的是这些系统中数据不可用的性质。它被描述为一个非唯一可归责的故障,这意味着参与者很难向网络的其他成员确凿地证明某特定数据丢失。
例如,考虑一个场景,Ryan宣布Arhat提交的一个区块缺少某些数据。然而,如果Charlie直接接触Arhat以获取该信息,并且他提供了,就会使数据不可用的说法产生争议。这个场景突显了一个关键问题:即使特定数据对某些参与者缺失或不可获取,但对所有人而言可能并非如此,使得普遍验证数据遗漏的主张变得困难。
功能:以太坊中的calldata充当智能合约函数调用的信息载体。它包含合约执行特定功能所需的所有必要数据,包括函数的参数。
传播与存储:作为以太坊交易过程的一部分,calldata在网络中的传播。它成为区块链记录的永久部分,由所有节点存储。这种calldata的普遍性和不可变性使其成为一个可靠的数据可用性来源。
用例:calldata的使用超出了简单合约执行的范围。它还可用于广播来自去中心化应用(dApps)的更新。通过将数据编码到calldata中,开发者可以确保其在以太坊区块链上的可用性和持续性。
作为交易传播过程的一部分,所有以太坊节点都会复制和永久存储calldata在交易记录中。这使得calldata成为内在的链上数据可用性的便利来源。
例如,一个dApp可以部署一个简单的“updateData”函数的合约,并在需要广播数据时调用它,将数据编码到calldata中。这确保数据在所有节点之间复制,并在链上对任何人可用。
然而,这种通过calldata的数据可用性在Rollup中使用时存在缺点。随着Rollup交易量的增加,通过calldata发布所有数据的费用变得极端昂贵。以太坊缺乏修剪也意味着旧的Rollup数据必须通过calldata无限期保持可用,进一步增加了成本。
过度依赖calldata提供数据可用性对Rollup造成了重大的可扩展性问题,主要是由于两个关键限制:
1. 高成本:通过calldata交易发布数据会产生基于Gas成本的标准以太坊交易费用。
每个字节的calldata费用为16Gas。这意味着数据可用性的费用与数据量呈线性增长。对于处理成千上万交易的Rollup批次,累计的calldata费用变得昂贵。
在某一交易量下,费用本身会超出以太坊的能力限制。这一成本负担抵消了Rollup所设计的吞吐量提升。
例如,带有50 KB calldata的Rollup批次在16Gas/字节的情况下,calldata费用将达到~800,000Gas。以100 gwei的Gas价格计算,仅为calldata可用性每批次将花费0.08 ETH或100美元以上。
显然,单靠calldata提供Rollup数据可用性在成本上并不具备可扩展性,随着交易数量的增加,负担重重,增加了以太坊的费用,同时抑制了Rollup的吞吐量。
2. 有限的区块空间:除了线性成本扩展,calldata还存在硬性容量限制。
以太坊的区块大小受到限制,当前约为每个区块10-15 KB的累积。
这种有限的容量限制了通过calldata能够发布的Rollup数据的量。以太坊的最大吞吐量限制了Rollup单凭calldata所能够实现的数据可用性带宽。
尽管通过调整Gas限制可以改变具体限制,但在某个时刻,随着Rollup交易量的增加,calldata空间将会被压垮。必须寻找不加重以太坊基础层负担的可用性解决方案。
因此,Rollup在长远方面需要更有效的链外数据可用性方案,以免过量数据复制给以太坊带来负担。密码学承诺和擦除编码是正在探索的一些解决方案,以满足这些需求。
我们可以从上表中推断出
对于ZK rollups,calldata允许证明的可用性,但产生大量费用,威胁到可扩展性。需要链外创新以补充calldata。
在乐观Rollup中,calldata提供了在挑战期内提交欺诈证明所需的交易细节,但其持久性加重了网络负荷问题。
Rollup去中心化的关键是
可扩展的链外可用性,最小化对calldata区块空间的依赖。
另一种解决方案是即将推出的EIP-4844更新,我们在这里做了详细覆盖:通向danksharding的道路。
根本上,区块链依靠去中心化和分布式共识提供安全性和不可变性的保证。然而,数据可用性的不足可能会破坏这些基础,特别是影响到不能自行进行完整交易验证的轻客户端。典型区块链中的区块由两个关键组件组成:
区块头:区块头是一个紧凑的段,包含有关区块中交易的重要元数据和摘要。它本质上是区块的标识,概括了其内容并将其链接到区块链的其他部分。
区块体:区块的这一较大部分包含了所有的交易数据。这是大部分区块大小的组成部分,并包含了处理的所有交易的详细信息。
现在,完整节点是传统区块链协议的支柱。它们下载并同步整个区块,验证所有状态转换。完整节点在验证交易和存储区块时消耗大量资源。其关键优势在于它们的自主权 - 由于全面验证过程,无法被迫接受任何无效交易。
完整节点通过持有区块链的完整记录显著提升了数据可用性。此全面数据集使它们能够向其他参与者提供有关网络状态的准确和完整的信息。
它们在验证和转发交易及区块方面至关重要,确保区块链的完整性和一致性。
另一方面,轻客户端的运作资源有限。这些节点主要关注于确认网络的当前状态,并确保相关交易的包含。它们不验证每笔交易,而是依靠其他机制来保持信息和安全。
轻客户端通过提供一种更节省资源的方式参与网络,支持数据可用性。它们允许存储和带宽有限的用户验证交易并与区块链进行交互。
尽管它们依赖完整节点提供完整的交易数据,但通过区块头验证数据的完整性,使得保持信任成为可能。
如我们之前所述,欺诈证明是简明的证据,表明特定区块包含无效交易。任何完整节点都可以生成这些证明,为轻客户端提供了一种验证交易有效性的方式,而无需信任任何单个完整节点。然而,当区块生产者隐匿数据时,系统会 falter。完整节点会拒绝这样的区块,识别其为不完整。仅有区块头的轻客户端可能无法检测缺失的数据。此外,没有完整数据,完整节点无法生成欺诈证明。
轻客户端验证的挑战:如果发生数据隐匿攻击,或数据不可随即可用,轻客户端可能没有足够的信息来确认区块链状态或特定交易的有效性。
欺诈证明和数据可用性:在乐观Rollup中,生成欺诈证明(以争议不正确的状态转换)高度依赖于数据可用性。完整节点需要访问完整数据以生成这些证明,而轻客户端则依赖于这些证明以确保安全。
我们仅讨论了轻客户端和完整节点的问题,但如下提到了一些DA的其他挑战。
以下内容为针对数据可用性问题的解决方案提供全面视图,以及确保数据以安全和可扩展的方式可访性和可验证的不同方法。每种方法应对了与区块链网络,特别是以太坊及类似架构相关的数据可用性所面临的具体挑战。
然而,我们在这篇文章中将仅讨论链外数据可用性的子类:数据可用性方案和数据可用性抽样,并在该系列的第三部分中进一步深入探讨数据可用性层。此处所指的链外意味着“非主链”,即以太坊。
数据可用性方案是允许像Rollup这样的第二层网络证明和验证交易数据的可用性而无需依赖单独的数据可用性层的一类协议和密码学方法。
它们旨在提供高效和可扩展的数据可用性,同时最小化对底层第一层区块链的负担。一些关键的数据可用性方案实例包括:
机制:涉及通过添加冗余奇偶校验数据来扩展原始数据集,然后将其碎片化。关键优势是可以从这些碎片的子集中重建原始数据。
验证:网络中的节点可以随机抽取这些碎片以验证整体数据的可用性,而无需获取整个数据集。
优点:增强数据冗余和容错能力,使得验证可用性证明有效。
数据编码:该方法将交易数据编码为一个多项式函数。 然后使用密码学哈希技术承诺数据,生成整个数据集的紧凑表示(承诺)。
验证过程:节点可以通过评估多项式的部分来验证特定数据的可用性。KZG承诺利用双线性对用于此目的,从而实现高效和安全的验证。
优势:提供处理大数据集的可扩展方式,以减少计算开销进行可用性证明。
动态证明:这些涉及区块生产者根据随机挑战提供数据可用性证明。该过程是交互式的,验证者智能合约发起挑战并评估响应。
激励:通过罚款系统对正确的响应进行激励,确保区块生产者对提供准确的可用性证明感到有动力。
特点:证明动态生成,为验证过程增加了灵活性。
非交互式证明:zk-SNARKs(零知识简洁非交互式知识论证)使得创建证明成为可能,在不透露数据本身的情况下验证数据可用性的问题。
复杂性:虽强大,但需要信任设置,并且生成证明时可能计算开销较大。
用例:适用于隐私至关重要的场景,在设置和计算方面的权衡是合理的。
在第二层可扩展性中的角色:通过将这些数据可用性方案与欺诈和有效性证明结合,第二层解决方案如Rollup可以取得显著的可扩展性提升。他们能够确保安全性和数据完整性,而不会给第一层区块链的容量带来过大压力。
DAS是指一个有效验证完整数据可用性的方法,而不必检索整个数据集。它通过对经过擦除编码的数据集执行随机抽样进行工作。
该过程首先通过擦除编码扩展原始数据集,这不仅增加了冗余,还允许通过数据的子集重建整个数据集。扩展的数据集随后被碎片化,并分布在不同的节点上。轻客户端或其他参与节点通过请求来自这个分布式数据集的特定片段来执行随机抽样。
让我们通过示例来探索这点:
假设一个L1需要验证一个1 GB的数据块的可用性。
使用擦除编码,这1 GB的数据块被编码为一个2 GB的数据集。编码过程增加了冗余,从而使得可以通过扩展数据集的部分重建原始数据。
碎片化与分发:
将2 GB的数据集拆分为四个每个为0.5 GB的碎片。
这些碎片分布在网络中不同的节点上,确保没有单个节点持有整个数据集。
轻客户端的抽样过程:
轻客户端并未下载完整区块链,参与验证数据可用性。
轻客户端随机请求来自不同节点的几个0.5 GB的碎片。
如果节点成功提供这些碎片,则轻客户端便能够确认该完整的1 GB区块可能在网络中的某处可用。成功提取的碎片越多,越能确定该区块的可用性。通过成功提取随机选择的碎片,节点可以统计推断整个数据集的可用性。随着每个成功提取的样本,完整的数据集可用的概率增加,使得轻客户端在无需访问完整数据的情况下,高度自信。
为何这种方法有效:
这一方法的优势在于,它允许轻客户端在无需下载和存储完整的2 GB的情况下验证该区块的可用性。这一过程显著减少了轻客户端的负担。
它为节点,特别是那些容量有限的节点提供了一种有效的方式来参与维护网络的完整性并确保数据不被隐匿。
主要要求是:
碎片通过擦除编码以准随机的方式分配到节点上。这防止了特定的不可用性。
抽样协议和随机源必须是不可预测的,以防止操控。通常使用可验证随机函数来实现。
如果节点无法提供它们被挑战的碎片,必须有惩罚,以经济 compel 可用性。
只要挑战是稳健的,同时概率得到仔细管理,数据可用性抽样就允许轻客户端以最小的数据转移效率检查可用性。开销与样本数量成正比,而不是整个数据集的大小。这样,轻客户端便能够在不超额消耗资源的情况下验证大型区块链数据集。
碎片的伪随机分布:碎片必须以伪随机的方式分布在网络中,确保没有单个节点或节点组合可以预测他们将负责哪些碎片。这一分配策略防止了故意的数据隐秘或特定的不可用性。
不可预测的抽样协议:选择哪些碎片进行抽样的协议必须是不可预测且抗操控的。通常使用可验证随机函数(VRF)实现这种不可预测性。确保抽样过程的随机性对维护DA方法的完整性和可靠性至关重要。
经济激励和惩罚:节点必须有经济激励来准确地存储和提供数据碎片。如无法提供请求的碎片,必须有惩罚来迫使节点维持数据的可用性。这些经济机制确保节点被激励诚实地参与数据可用性过程。
现已探讨了链上DA,以及链外DA的子集,以下是关于DA策略的比较指南:
数据可用性问题是确保区块链可扩展性解决方案如Rollup的安全性和有效性的重大障碍。
强制要求将所有交易细节提交到主链是一种权宜之计,但在长期不具可扩展性。此外,普遍证明数据缺失的困难也使得这一挑战加重,因为这是一种非可归责的故障性质。
解决这一问题对于维护区块链网络的完整性、安全性和期望的可扩展性至关重要。
在本系列的最后一部分中,我们将详细探讨不同的数据可用性层—Celestia、Avail、EigenDA和NearDA。
在 l2iterative.com 查找L2IV,并在Twitter上关注 @ l2iterative
- 原文链接: l2ivresearch.substack.co...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!