一文详解区块链数据可用性方案

推荐阅读
2023-11-10 13:28:21
收藏
保证必要数据的可访问性已成为区块链扩容的关键挑战。目前正在出现各种技术,以在不产生过多冗余开销的情况下提供这种保证。

原文标题:Data Availability in Blockchains
原文作者:AltLayer 创始人 YQ
编译:倩雯,ChainCatcher


数据可用性是指保证区块链网络中的所有参与者都有权限接触到区块中包含的全套交易数据。这一概念对于维护安全性至关重要,尤其是当区块链系统扩容到更大的交易量时。

分片、roll-up 和轻客户端等新方法将交易处理分散到分片或roll-up链上,而不是让每个节点都处理所有交易。这样可以分摊工作,提高吞吐量。但这样做的后果是,没有一个节点能看到所有数据。这意味着单个节点无法再完全验证每笔交易,如果某些交易数据丢失或被隐瞒,它们也无法生成欺诈/有效性证明。如果数据可用性得不到保证,轻客户端就会特别脆弱。

因此,保证必要数据的可访问性已成为区块链扩容的关键挑战。目前正在出现各种技术,以在不产生过多冗余开销的情况下提供这种保证。


数据可用性问题

 

在比特币和(POS之前的)以太坊等传统工作量证明区块链中,每个区块都包含一个元数据头和一个交易列表。这些网络中的全节点会下载并验证每个区块中的每笔交易,主要是独立执行交易并根据区块链的协议规则检查它们是否有效。这种独立执行交易的方式允许全节点计算验证和处理下一个区块所需的当前状态。由于全节点执行这种交易执行和验证,可以执行关键的交易有效性规则,防止矿工或区块生产者在区块中加入无效交易。


轻客户端


轻客户端也称为 SPV(“Simplified Payment Verification”简化支付验证)客户端。采用与完整节点不同的方法,以节省带宽和存储空间。SPV 客户端只下载和验证区块头,不执行或验证任何交易。相反,SPV 客户端依赖于一种假设;区块链共识算法偏好的链,即比特币中最长的链,只包含正确遵循协议规则的有效区块。这样,SPV 客户端就可以将实际的交易执行和验证工作外包给区块链的共识机制本身。

SPV 客户端的安全模型从根本上取决于公式参与者者中是否存在“诚实的大多数”,例如工作量证明区块链中的矿工会正确应用交易有效性规则,并拒绝少数人提出的无效区块。如果大多数不诚实的矿工或区块生产者串通起来,他们就会一起创建具有非法状态转换的区块,从而凭空创造代币、违反资产保护或实现其他形式的盗窃或剥削。SPV 节点自身无法检测到这种恶意行为,因为它们实际上并不验证交易。与此相反,无论共识机制如何,完整节点都会执行所有协议规则,因此它们会立即拒绝由不诚实的多数节点创建的无效区块。

为改善 SPV 客户端的安全假设,一种名为欺诈/有效性证明的警报机制能够实现全节点生成加密证明,向轻客户端显示给定区块明确包含无效的状态转换。收到有效的欺诈/有效性证明后,即使共识机制错误地接受了无效区块,轻客户端也可以拒绝该无效区块。

然而,欺诈/有效性证明从根本上要求创建这些证明的全节点能够访问区块中引用的全套交易数据,以便重新执行交易并识别任何无效的状态变化。如果区块生产者选择性地只发布区块头,而不发布特定区块的完整交易数据集,那么完整节点将无法获得构建欺诈/有效性证明所需的信息。这种网络无法获得交易数据的情况被称为“数据可用性问题”。

在没有数据可用性保证的情况下,轻客户端不得不只能相信区块生产者的行为是诚实正确的。这种对信任的完全依赖违背了欺诈/有效性证明的初衷,破坏了轻客户端模式的安全优势。因此,数据可用性对于维持区块链网络中欺诈/有效性证明的预期安全性和有效性至关重要,尤其是当扩容到更大的交易量时。


扩容解决方案对数据可用性的需求

 

除了现有网络对数据可用性的需求外,数据可用性在分片和roll-up等旨在提高交易吞吐量的新扩容解决方案中变得更加重要。目前有许多倡议和项目,如 proto-danksharding、EIP 4484、Celestia、EigenDA 和 Avail,都在为 roll-up 提供高效、经济的 DA 方面取得了很大进展。

在分片区块链架构中,验证者的单一网络被分成更小的组或“分片”,每个组或“分片”只处理和验证一部分交易。由于分片不处理或验证来自其他分片的交易,因此单个分片节点只能访问自己特定分片的交易数据。

在 roll-up 过程中,交易的执行是在优化环境下链外进行,从而大大提高了交易吞吐量。只有经过压缩和汇总的交易数据才会被 roll-up 操作员定期发布到主链 L1。与直接在 L1 执行所有交易相比,这种方法减少了 L1 的费用和拥堵。

在分片和 roll-up 中,没有任何一个节点能验证甚至观察到整个系统中的全部交易。以前传统单体区块链的数据可用性假设被打破了。如果排序器操作员扣留 roll-up 区块的整交易数据集,或者一组恶意串通的验证者在分片中生成了一个无效区块,其他分片或 L1 的完整节点将无法访问缺失的数据。没有这些数据,它们就无法生成欺诈/有效性证明,表明是无效状态转换,因为它们无法获得识别问题所需的数据。

除非引入新的稳健方法来保证数据的可用性,否则不良行为者可能会利用这些新的扩容模型来选择性地隐藏无效交易,同时保持足够的可见区块有效性以避免被发现。用户不得不相信分片节点和 roll-up 操作员在任何时候都会诚实行事,但相信一大批分布式参与者始终诚实行事是有风险的,而这正是区块链通过激励机制、去中心化和加密技术所要避免出现的情形。

在跨分片交易和 L2 解决方案的背景下,要保持轻客户端模型和有效欺诈/有效性证明的预期安全优势,就必须更有力地保证全套交易数据在网络中的某个地方随时可以。数据本身并不需要被所有分片上的所有节点下载,但如果参与者希望验证区块并生成有关潜在问题的欺诈/有效性证明,至少必须可以随时访问这些数据。


数据可用性解决方案

 

人们提出并探索了许多方法,这些方法有助于提供“数据可用性”,而无需分片式网络或 L2 网络中的所有节点过度下载和存储完整的交易数据集:


数据可用性抽样

数据可用性抽样指的是一类技术,允许轻客户端只下载整个交易数据集的随机片段,以概率方式检查交易数据是否可用。proto-danksharding、Celestia、EigenDA 和 Avail 等项目尝试了各种新技术,如 KZG 承诺和 ZK 证明,以实现更好的抽样。

通常,数据可用性抽样方案依赖于擦除编码,这种方法采用完整的交易数据集,并通过增加计算冗余将其在数学上转换为更长的编码数据集。只要有足够的编码片段子集可用,就可以通过逆转数学变换从编码数据重建原始数据。

轻客户端会随机获取并验证少量擦除编码数据片段。如果任何抽样片段丢失或不可用,则表明整个网络可能无法使用完整的擦除编码数据集。客户端能从数据集的随机片段中收集的样本越多,客户端检测到任何丢失数据的可能性就越大。可以对擦除编码参数进行调整,使轻型客户端只需对很小比例的片段(约 1%)进行随机抽样,就能以极高的统计置信度验证完整数据集的可用性。

这种通用方法可以让轻客户端非常高效地检查哪怕是非常大型交易数据集的可用性,而无需实际下载整个数据集。样本也会与网络上的完整节点共享,以帮助重建任何缺失的数据块,并在必要时恢复不可用的数据块。


数据提供委员会

基于委员会的数据可用性方案将交易数据可用性验证的责任分配给相对较小的一组可信节点,这些节点被称为数据可用性委员会(DAC)。委员会节点存储区块交易数据的完整副本,并通过在主链上发布加密签名来表明数据确实完全可用。这样,轻客户端就能以低成本验证这些签名,从而确信委员会节点的数据是可用的,而无需自己实际处理或存储数据。

数据可用性委员会根本要做的取舍是,轻客户端必须相信委员会节点会正确发出数据可用性信号。依赖于集中式许可委员会会给网络带来一定程度的集中风险和单点故障。使用由 Proof-of-Stake 验证器组成的 DAC 技术,并对不当行为进行严厉惩罚,可以降低但不能完全消除轻客户端的信任要求。


数据分片

在数据分片方案中,交易数据被分成多个分片,轻客户端从所有分片中进行概率抽样,以验证整个系统的数据可用性。然而,实施跨分片抽样通常会大大增加数据可用性协议的复杂性,而且可能需要复杂的网络拓扑结构来防止单点故障。


简明证明

零知识证明和 zk-SNARK 等新兴加密证明可用于证明区块中状态转换的有效性,而不会泄露任何底层交易数据。例如,有效性证明可以证明 roll-up 区块转换是完全有效的,而不会泄露 roll-up 本身所使用的任何私有交易数据。

不过,从根本上说,数据仍然需要在某个地方提供,全节点才能正确更新其本地状态。如果区块生产者完全不提供区块的底层交易数据,全节点就无法准确跟踪最新的状态平衡和完整性。简洁证明可以保证状态变化的有效性,但不能保证驱动这些变化的底层数据的可用性。


结论

 

随着区块链交易量的扩大以及向分片和 roll-up 等先进架构的过渡,数据可用性是一个必须解决的关键挑战。不过令人鼓舞的是,随着去中心化区块链网络的发展,存在多种可行的途径来实现数据可用性,防止该问题成为永久限制可扩容性和抗审查性的障碍。


链捕手ChainCatcher提醒,请广大读者理性看待区块链,切实提高风险意识,警惕各类虚拟代币发行与炒作, 站内所有内容仅系市场信息或相关方观点,不构成任何形式投资建议。如发现站内内容含敏感信息,可点击“举报”,我们会及时处理。
banner
ChainCatcher 与创新者共建Web3世界