关于数据可用性的十问十答:以Celestia为例
什么是 DA 数据可用性?
数据可用性解决的问题是:这些数据已经发布了吗?具体来说,当节点接收到一个新的即将添加到链上的区块时,它会验证数据的可用性。节点会尝试下载新区块的所有交易数据以确认其可用性。如果节点能够下载所有交易数据,那么它就成功地验证了数据可用性,证明了区块数据确实已经发布到网络上。
如你所见,模块化区块链,例如 Celestia (可通过此链接了解更多信息:https://docs.celestia.org/learn/how-celestia-works/data-availability-faq) 利用其他原语让节点更高效地验证数据可用性。数据可用性对于任何区块链的安全至关重要,因为它确保任何人都可以检查交易账本并进行验证。当区块链规模扩大时,数据可用性尤其成问题。随着区块变大,普通用户下载所有数据变得不切实际,因此用户无法再验证链的真实性。
数据可用性的问题是什么?
这个问题发生在新区块的交易数据不能被网络上的节点下载和验证时。一个可能的情况是,区块的生产者故意不公布交易数据,这被称为数据隐匿攻击。如果交易数据没有被发布,那么网络上的节点就不能确认并接受新区块,导致区块链更新到最新状态的过程中断。
由于节点不能验证新区块的数据,这可能导致区块链运行停止,或者更糟糕的是,攻击者可能利用这个漏洞盗取资金。后果的严重程度将取决于区块链的类型(L1 或 L2)以及数据可用性是保持在链上还是链下。在 Layer 2 的扩展方案中,比如 rollups 和 validiums,数据可用性问题尤为常见。这些技术尝试通过在链上扩展处理能力来提高区块链的性能,但这也可能引发新的数据可用性挑战。
在 Celestia 中节点怎么验证数据可用性?
在大多数区块链中,节点通过下载一个区块的所有交易数据来验证数据的可用性。如果节点能够下载所有数据,那么它们就验证了数据的可用性。在 Celestia 中,轻节点(light nodes)可以使用一种新的机制来验证数据可用性,而无需下载一个区块的所有数据。这种验证数据可用性的新方法称为数据可用性抽样。
数据可用性抽样是什么?
数据可用性抽样是一种使轻节点无需下载区块的全部数据即可验证数据可用性的机制。数据可用性抽样(DAS)的工作原理是让轻节点进行多轮随机抽样,以获取区块数据的小部分。随着轻节点完成更多轮的数据抽样,它对数据可用性的信心就会增加。一旦轻节点成功达到预定的信心水平(例如 99%),它将认为区块数据是可用的。
想要一个更简单的解释吗?查看这个讨论帖子,了解数据可用性抽样就像掷硬币一样。https://twitter.com/nickwh8te/status/1559977957195751424
Celestia 在数据可用性抽样方面的一些安全假设是什么?
Celestia 区块链网络中数据可用性抽样(Data Availability Sampling,简称 DAS)的两个安全假设:
轻节点数量假设: Celestia 假定网络中存在足够数量的轻节点,这些轻节点会对新生成的区块进行数据可用性抽样。这是基于对数据进行随机样本检查的机制,即轻节点不需要下载整个区块的数据,而是下载一部分数据来验证整个区块的数据是否可用。这个假设保证了如果区块数据确实发布到了网络上,那么完整节点能够通过聚合轻节点抽样的数据部分来重构出完整的区块。这种假设下,对于更大的区块,相应地需要更多的轻节点来确保数据可用性。
连接到诚实完整节点: 第二个假设是每个轻节点至少能够连接到一个诚实的完整节点。这样做是为了保证轻节点能够接收到错误擦除编码块的欺诈证明(fraud proofs)。欺诈证明是一种安全机制,用于验证区块数据是否被正确处理。如果轻节点在日食攻击期间(这是一个网络攻击类型,攻击者尝试将目标节点隔离,让它只能连接到恶意节点)不能连接到至少一个诚实的完整节点,它将无法验证区块是否被不当构建,因而网络的安全性和可靠性会受到威胁。
为什么区块重构对安全性是必要的?
在区块链中,”重构区块”意味着如果我们没有一次性获得整个区块的数据,我们也能通过手中已有的数据碎片来复原出完整的区块内容。这就好比我们手里有一张撕碎了的纸,如果每一片撕碎的部分都有一些重叠,我们就有可能把整张纸拼回原样。
在 Celestia 这样的系统中,通过数据擦除编码(erasure coding),即使我们没有拿到完整的区块数据,只要有足够的数据片段,也可以把整个区块的数据复原出来。数据擦除编码会创建一些额外的数据冗余,这样即便部分数据丢失,剩下的信息也足够我们重构出完整的区块。
为什么这样做对安全性很重要呢?因为这确保了即使在不完美的情况下 —— 比如说有恶意节点试图隐藏数据或者网络不稳定导致数据无法完整传输 —— 我们仍能验证交易的完整性和正确性。如果有人试图篡改或隐藏交易数据,只要我们能重构出区块,就可以发现并证明这种篡改,保障整个区块链的透明度和可信赖性。
什么是数据存储?关于数据存储的问题是什么?
数据存储涉及到存储和访问过去交易数据的能力。
数据存储和检索需要用于多个目的,例如:
阅读之前交易的信息
同步节点
索引和提供交易数据服务
检索 NFT 信息
数据存储的问题在于是否可以存储过去的交易数据,并在以后成功地检索。如果无法检索历史交易数据,可能会导致一些问题,比如用户无法访问他们过去交易的信息,或者节点无法从创始区块同步数据。幸运的是,关于存储和访问过去数据的假设要求不高。只需要能够访问区块链历史记录的单一副本,用户就可以获得历史交易数据。换句话说,数据存储安全是一个 1 对 N 诚实假设。
数据可用性和数据存储有什么区别?区块链状态如何融入这个问题?
数据可用性是关于验证新区块的交易数据是否公开可用的问题。相比之下,数据存储涉及到存储和访问旧区块的过去交易数据。
到目前为止,我们讨论的都是交易数据,但区块链状态是一个相关的话题。状态与交易数据不同。具体来说,状态就像是网络的当前快照,包括了账户余额、智能合约余额和验证者集合信息等。由状态大小引起的问题在性质上与数据可用性和可检索性问题不同。
为什么 Celestia 不鼓励存储历史数据?如果没有奖励,谁可能存储历史数据?
大多数区块链不鼓励数据存储,因为保证历史数据永久可检索不应该是区块链的责任。此外,数据存储问题只需要一个当事人来存储和提供数据给用户,这不是一个强烈的问题。因此,Celestia 的目标是提供一种安全且可扩展的方法来验证数据的可用性。一旦数据被验证为可用,存储和检索历史数据的任务就留给了需要数据的其他实体。幸运的是,即使 Celestia 本身不直接提供激励措施(例如,通过支付代币或其他奖励)来鼓励数据的存储和检索,还是有其他因素促使某些组织或个人出于他们自己的利益存储历史数据,并将其提供给需要它的用户。
可能会存储历史数据的参与者有多种类型。其中一些包括:
提供对过去交易数据访问的区块浏览器。
为过去的数据提供 APi 查询的索引器。
需要历史数据来进行某些处理的应用程序或者 Rollup。
希望保证能够访问其交易历史的用户。
区块链可以做些什么来提供更强的数据可检索性保证?
根据节点存储的交易数据量和它们服务的数据请求来奖励节点(一些数据存储区块链,如 Filecoin,就是这种情况)。
将交易数据发布到激励存储和提供历史数据请求服务的数据存储区块链上。
参考链接:https://docs.celestia.org/learn/how-celestia-works/data-availability-faq
阅读更多:
从单链到模块化:Avail 如何改变区块链应用开发
新手小白如何在 30 秒内安装运行 Celestia 轻节点?
速看!关于模块化区块链的 7 个误解及真相!
区块链