数据可用性是保证区块链网络安全性的关键挑战,技术如摄取证明验证器、数据分片和简明证明可以降低信任要求,但无法完全消除。去中心化区块链网络可以防止数据可用性成为限制其可扩展性和抗审查性的障碍。
原文作者:YQ
原文标题:DataAvailabilityinBlockchains
原文来源:mirror
编译:Yvonne,火星财经
分片、rollup和轻客户端等新方法将交易处理分散到分片或rollup链上,而不是让每个节点都处理所有交易。这样可以分散工作量,提高吞吐量。但这样做的后果是,没有一个节点能看到所有数据。这意味着单个节点不再能完全验证每笔交易,如果某些交易数据丢失或被隐瞒,它们也无法生成欺诈/有效性证明。如果数据的可用性得不到保证,轻客户端就会容易受到攻击。
因此,保证必要数据的可访问性已成为区块链扩展的关键挑战。目前各类技术正在涌现,以在不产生过多冗余开销的情况下提供这类保证。
数据可用性问题
在比特币和以太坊(POS之前)等传统工作量证明区块链中,每个区块都包含一个元数据头和一个交易列表。这些网络中的全节点会下载并验证每个区块中的每笔交易,方法是独立执行交易并根据区块链的协议规则检查它们是否有效。这一独立执行交易的方式允许全节点计算验证和处理下一个区块所需的最新状态。由于全节点执行交易执行和验证,因此它们可以执行关键的交易有效性规则,防止矿工或区块生产者在区块中加入无效交易。
轻量级客户端(也称为 SPV(简化支付验证)客户端)采用与全节点不同的方法,以节省带宽和存储空间。SPV 客户端只下载和验证区块头。它们不执行或验证任何交易。相反,SPV 客户端依赖于一种假设,即区块链共识算法青睐的链,即比特币中最长的链,只包含正确遵循协议规则的有效区块。这样,SPV 客户端就可以将实际的交易执行和验证工作外包给区块链的共识机制本身。
SPV 客户端的安全模型从根本上取决于是否有诚实的多数共识参与者(例如工作量证明区块链中的矿工)正确应用交易有效性规则并拒绝少数人提出的任何无效区块。如果大多数不诚实的矿工或区块生产者串通一气,他们就会协调创建具有非法状态转换的区块,从而凭空创造代币、违反资产保护或实现其他形式的盗窃或剥削。SPV 节点自身无法检测到这种恶意行为,因为它们实际上并不验证交易。与此相反,无论共识机制如何,全节点都会执行所有协议规则,因此它们会立即拒绝由不诚实的多数节点创建的无效区块。
为改善 SPV 客户端的安全假设,一种名为欺诈/有效性证明的警报机制可以让全节点生成加密证明,向轻客户端显示给定区块明确包含无效的状态转换。收到有效的欺诈/有效性证明后,即使共识机制错误地接受了无效区块,轻客户端也可以拒绝该无效区块。
然而,欺诈/有效性证明从根本上要求创建这些证明的全节点能够访问区块中引用的全套交易数据,以便重新执行交易并识别任何无效的状态变化。如果区块生产者选择性地只发布区块头,而不发布特定区块的完整交易数据集,那么完整节点将无法获得构建欺诈/有效性证明所需的信息。这一网络无法获得交易数据的情况被称为 “数据可用性问题”。
在无法保证数据可用性的情况下,轻客户端再次被迫简单地相信区块生产者的行为是诚实正确的。这种对信任的完全依赖违背了欺诈/有效性证明的初衷,破坏了轻客户端模式的安全优势。因此,数据可用性对于维持区块链网络中欺诈/有效性证明的预期安全性和有效性绝对至关重要,尤其是当它们扩展到更高的交易量时。
扩展解决方案对数据可用性的需求
除现有网络对数据可用性的需求外,数据可用性在新的扩展解决方案(如旨在提高交易吞吐量的分片和rollup)中变得更加重要。目前有许多倡议和项目,如 proto-danksharding、EIP 4484、Celestia、EigenDA 和 Avail,它们在为rollup提供高效、经济实惠的数据可用性方面取得了很大进展。
在分片区块链架构中,验证器的单一网络被分割成更小的组或 “分片”,每个组或“分片”只处理和验证一部分交易。由于分片不处理或验证来自其他分片的交易,因此单个分片节点只能访问自己特定分片的交易数据。
在rollup中,交易的执行是在优化的环境中进行的,可以大大提高交易吞吐量。只有经过压缩和汇总的交易数据才会被rollup运营者定期发布到主链 1 层。与直接在L1执行所有交易相比,这种方法减少了L1的费用和拥堵。
在分片和rollup中,没有任何一个节点能验证甚至观察到整个系统中的全部交易。以前传统单体区块链的数据可用性假设被打破了。如果排序器运营商扣留了一个滚动区块的完整交易数据集,或者一组恶意串通的验证者在一个分片中生成了一个无效区块,其他分片或L1的完整节点将无法访问缺失的数据。没有这些数据,它们就无法生成欺诈/有效性证明,以发出无效状态转换的信号,因为无法获得识别问题所需的数据。
除非引入新的稳健方法来保证数据的可用性,否则恶意者就会利用这些新的扩展模型有选择性地隐藏无效交易,同时保持足够的可见区块有效性以避免被发现。用户不得不简单地相信分片节点和rollup运营商在任何时候都会诚实行事,但相信一大批分布式参与者始终诚实行事是有风险的,而这正是区块链通过激励机制、去中心化和加密技术所要避免的。
在跨分片交易和L2解决方案的背景下,要保持轻客户端模型和有效欺诈/有效性证明的预期安全优势,就必须更有力地保证全套交易数据在网络中的某个地方应要求随时可用。数据本身并不需要被所有分片上的所有节点下载,但如果参与者希望验证区块并生成有关潜在问题的欺诈/有效性证明,至少必须可以随时访问这些数据。
数据可用性解决方案
人们提出并探索了许多方法,这些方法有助于提供 “数据可用性”,而无需分片网络或第二层网络中的所有节点冗余下载和存储完整的交易数据集:
数据可用性抽样
数据可用性抽样指的是一类技术,它允许轻客户端只下载整个交易数据集的随机片段,从而以概率方式检查交易数据是否可用。proto-danksharding、Celestia、EigenDA 和 Avail 等项目尝试了各种新技术,如 KZG 承诺和 ZK 证明,以实现更好的采样。
通常,数据可用性抽样方案依赖于纠删码(erasure coding),这是一种将完整的交易数据集经过数学转换,通过添加计算出的冗余来转换成更长的编码数据集的方法。只要有足够的编码片段子集可用,就可以通过反转数学变换从编码数据重建原始数据。
轻客户端会随机获取并验证少量纠删码数据片段。如果任何采样片段丢失或不可用,则表明整个网络可能无法使用完整的纠删码数据集。客户端能从数据集的随机片段中收集的样本越多,客户端检测到任何丢失数据的可能性就越大。可以对纠删码参数进行调整,使轻客户端只需对很小比例的片段(约 1%)进行随机采样,就能以极高的统计置信度验证完整数据集的可用性。
这种通用方法允许轻客户端非常高效地检查即使是非常大的交易数据集的可用性,而无需实际下载整个数据集。样本也会与网络上的完整节点共享,以帮助重建任何缺失的数据块,并在必要时恢复不可用的数据块。
数据可用性委员会
基于委员会的数据可用性方案将交易数据可用性验证的责任分配给相对较小的一组可信节点,称为数据可用性委员会(DAC)。委员会节点存储区块交易数据的完整副本,并通过在主链上发布加密签名来表明数据确实完全可用。轻量级客户端可以低成本地验证这些签名,以确保数据对委员会节点可用,而无需真正处理或存储数据。
数据可用性委员会的基本权衡是,轻客户端最终必须相信委员会节点会正确发出数据可用性信号。依赖一个中心化的、经过许可的委员会会给网络带来一定程度的中心化风险和单点故障。不过,使用由 "摄取证明"(Proof-of-Stake)验证器组成的 DAC,并对不当行为进行严厉惩罚等技术,可以降低但不能完全消除轻客户端的信任要求。
数据分片
在数据分片方案中,交易数据被分成多个分片,轻客户端从所有分片中进行概率采样,以验证整个系统的数据可用性。但是,实施跨分片采样通常会大大增加数据可用性协议的复杂性,而且可能需要复杂的网络拓扑结构来防止单点故障。
简明证明
零知识证明和 zk-SNARK 等新兴加密证明可用于证明区块中状态转换的有效性,而不会泄露任何底层交易数据。例如,有效性证明可以证明rollup区块转换是完全有效的,而不会泄露rollup本身使用的任何私有交易数据。
不过,从根本上说,数据仍然需要在某个地方提供,以便完整节点正确更新其本地状态。如果区块生产者完全不提供区块的底层交易数据,全节点就无法准确跟踪最新的状态平衡和完整性。简洁证明可以保证状态变化的有效性,但不能保证驱动这些变化的底层数据的可用性。
结论
随着区块链交易量的扩大以及向碎片和rollup等先进架构的过渡,数据可用性是一个必须解决的关键挑战。无论如何,令人鼓舞的是,随着去中心化区块链网络的发展,存在多种可行的途径来防止数据可用性成为永久限制其可扩展性和抗审查性的障碍。