“数据可用性”和“数据可用性问题”是用于指代各种区块链扩展策略中面临的特定问题的术语。这个问题问:节点如何确定当一个新块产生时,该块中的所有数据实际上都发布到了网络上?困境在于,如果一个区块生产者不释放一个区块中的所有数据,那么没有人可以检测到该区块中是否隐藏着恶意交易。
在本文中,我们将深入探讨数据可用性问题、为什么它很重要以及存在哪些解决方案。
区块链节点如何运作 在区块链中,每个区块由两部分组成:
- 块头。这是区块的元数据,包含区块的一些基本信息,包括交易的默克尔根。
- 交易数据。这构成了区块的大部分,并由实际交易组成。
区块链网络中通常还有两种类型的节点:
- 完整节点(也称为完全验证节点)。这些节点下载并检查区块链中的每笔交易是否有效。这需要大量资源和数百 GB 的磁盘空间,但这些节点是最安全的节点,因为它们不会被诱骗接受具有无效交易的块。
- 轻客户端。如果您的计算机没有运行完整节点的资源,那么您可以运行轻客户端。轻客户端不下载或验证任何交易。相反,他们只下载块头,并假设该块只包含有效交易,因此轻客户端不如完整节点安全。
幸运的是,有一种方法可以让轻客户端间接检查区块中的所有交易是否有效。如果一个块包含无效交易,他们可以依靠完整节点向他们发送欺诈证明,而不是自己检查交易。这是一个小证明,证明一个区块中的特定交易是无效的。我们不会在本文中介绍这个证明是如何工作的,但本文会更详细地解释它。
只有一个问题——为了让全节点为一个区块生成欺诈证明,他们需要知道该区块的交易数据。如果区块生产者只发布区块头而不发布交易数据,那么全节点将无法检查交易是否有效,如果交易无效则无法生成欺诈证明。区块生产者必须发布其区块的所有数据是一项要求,但我们需要一种方法来强制执行这一点。
为了解决这个问题,轻客户端需要某种方式来检查一个块的交易数据是否真的发布到网络上,以便全节点可以检查它。但是,我们希望避免要求轻客户端下载整个块本身以检查它是否已发布,因为这违背了轻客户端的观点。
我们如何解决这个问题?首先,让我们讨论与数据可用性问题相关的其他地方,然后我们将深入研究解决方案。
一. 数据可用性问题与哪里相关
在第一节中,我们介绍了数据可用性问题。让我们讨论一下它对哪些可扩展性解决方案很重要。
1.增加块的大小
在像比特币这样的区块链中,大多数标准笔记本电脑都能够运行一个完整的节点并验证整个链,因为有一个人为的块大小限制来保持区块链的小。
但是如果我们想增加块大小限制呢?更少的人将负担得起运行完整节点并独立验证链的费用,而更多的人将运行不太安全的轻客户端。这不利于去中心化,因为区块生产者更容易更改协议规则并插入轻客户端将接受为有效的无效交易。因此,为轻客户端添加欺诈证明支持变得非常重要,但正如所讨论的,轻客户端需要一种方法来检查块中的所有数据是否已发布以使其正常工作。
2. 分片
增加区块链吞吐量的一种方法是将区块链拆分为多个称为分片的链。这些分片有自己的区块生产者,并且可以相互通信以在分片之间转移代币。分片的重点是将网络中的区块生产者分开,这样他们就不再是每个区块生产者都处理每笔交易,而是将他们的处理能力分成不同的分片,只处理一些交易。 通常,分片区块链中的完整节点将为一个或几个分片运行一个完整节点,并为每个其他分片运行一个轻客户端。毕竟,任何为每个分片运行一个完整节点的人都违背了分片的目的,即将网络资源分配给不同的节点。
然而,这种方法有其问题。如果分片中的块生产者变得恶意并开始接受无效交易怎么办?这在分片系统中比在非分片系统中更可能发生,因为分片系统更容易受到攻击,因为它在每个分片中只有几个块生产者。请记住,区块生产者被分成不同的分片。
为了解决检测任何分片是否接受无效交易的问题,您需要能够保证该分片中的所有数据都已发布并可用,以便任何无效交易都可以用欺诈证明来证明。
3. 汇总
乐观汇总是一种新的扩展策略,它基于称为汇总的侧链,可以将其视为分片。这些侧链有自己的专用区块生产者,可以将资产转移到其他链或从其他链转移。
但是,如果区块生产者行为不端并制作包含无效交易的区块,并窃取侧链中用户的所有资金怎么办?为了解决这个问题,可以使用欺诈证明来检测这一点。但是再一次,侧链用户需要某种方式来确保所有侧链区块的数据都被实际发布,以确保可以检测到任何无效交易。以太坊上的汇总通过简单地将所有汇总块发布到以太坊链上并依靠它来提供数据可用性来处理这个问题,因此使用以太坊作为数据可用性层来转储数据。
零知识 (ZK) 汇总类似于乐观汇总,但不是使用欺诈证明来检测无效块,而是使用称为有效性证明的加密证明来证明一个块是有效的。有效性证明本身不需要数据可用性。然而,ZK rollup 作为一个整体仍然需要数据可用性,因为如果一个区块生产者制作了一个有效的区块并用有效性证明来证明它,但没有发布该区块的数据,那么用户将不知道区块链的状态是什么是以及它们的余额是什么,因此将无法与链进行交互。
4. 走得更远
Rollups 是一种仅使用区块链作为数据可用性层来转储事务的设计,但所有实际的事务处理和计算都发生在 rollup 本身上。这导致了一个有趣的见解:区块链实际上不需要进行任何计算,但它至少需要将交易排序到块中并保证交易的数据可用性。
这就是Celestia的设计理念,它是一个“惰性”区块链,只做区块链需要做的两个核心事情——以可扩展的方式订购交易并使其可用。这使得它可用作汇总等系统的最小“可插拔”组件。
二. 数据可用性问题有哪些可用的解决方案
1. 下载所有数据
如前所述,解决数据可用性问题的最明显方法是简单地要求每个人(包括轻客户端)下载所有数据。显然,这不能很好地扩展。这就是大多数区块链(例如比特币和以太坊)目前所做的。
2. 数据可用性证明
数据可用性证明是一项新技术,它允许客户通过仅下载该块的一小部分来以非常高的概率检查该块的所有数据是否已发布。
它使用一种称为纠删码的数学原语,从 CD-ROM 到卫星通信再到 QR 码,它在信息技术中无处不在。纠删码允许您获取一个块,例如 1MB 大,然后将其“放大”到 2MB 大,其中额外的 1MB 是称为纠删码的特殊数据。如果块中的任何字节丢失,您可以通过代码轻松恢复这些字节。即使多达 1MB 的块丢失,您也可以恢复整个块。即使 CD-ROM 被划伤,它也可以让您的计算机读取所有数据。 这意味着,为了让一个区块 100% 可用,区块生产者只需将其中的 50% 发布到网络。如果恶意区块生产者想要保留 1% 的区块,他们必须保留 50% 的区块,因为这 1% 可以从 50% 中恢复。
有了这些知识,客户可以做一些聪明的事情来确保区块的任何部分都没有被扣留。他们可以尝试从块中下载一些随机块,如果他们没有成功下载这些块中的任何一个(即该块在恶意块生产者未发布的 50% 的块中),那么他们将拒绝块不可用。在尝试下载一个随机块后,他们有 50% 的机会检测到该块不可用。两块之后,有 75% 的机会,三块之后,有 87.5% 的机会,依此类推,直到七块之后,有 99% 的机会。这非常方便,因为这意味着客户端可以通过仅下载一小部分来检查整个区块是否已发布的可能性很高。
数据可用性证明的完整细节有点复杂,并且依赖于其他假设,例如要求网络中的轻客户端数量最少,以便有足够的轻客户端发出样本请求,以便它们可以共同恢复整个块。如果您想了解更多信息,可以查看原始数据可用性证明文件。
三. 结论
在本文中,我们介绍了数据可用性问题,说明了为什么它对区块链可扩展性很重要,并描述了一个解决方案。
要了解更多信息,请查看以下资源: