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