“数据可得性(data availability)”和“数据可得性问题”指的是一些区块链扩容计划所面对一个问题。详细来说,便是当新的区块创建时,节点怎么保证该区块中的一切数据都已发布到网络上?困难之处在于,假如区块生产者没有发布区块中的一切数据,就没人能发现该区块中是否躲藏了歹意买卖。

在本文中,我将深入探讨数据可得性问题的重要性,以及相关处理计划。

区块链节点是怎么运转的?

区块链上的每个区块都由两部分组成:

  • 区块头,即,区块的元数据,由一些关于区块内容的基本信息组成,包含买卖的默克尔根。
  • 买卖数据,即,区块的首要组成部分,由实践的买卖数据组成。

区块链网络中首要有两类节点:

  • 全节点(又称完全验证节点)。这类节点会下载区块链中的每笔买卖并验证其有用性。这需求消耗大量资源和数百 GB 的磁盘空间,可是这些节点的安全性最高,由于它们不会接受包含无效买卖的区块。
  • 轻客户端。假如你的核算机没有足够的资源来运转全节点,你能够运转轻客户端。轻客户端不需求下载或验证任何买卖。它们只下载区块头,并认定区块中包含的买卖都是有用的。因此,轻客户端的安全性低于全节点。

走运的是,有一种办法能够让轻客户端直接查看区块中的一切买卖是否有用。轻客户端能够依赖全节点向其发送关于无效买卖的诈骗证明,无需自己查看买卖的有用性。诈骗证明是一个很小的证明,能够证明区块中的某个买卖是无效的。关于诈骗证明的运作原理,本文不做详细介绍,请阅读这篇文章。

这里只要一个问题:全节点假如要为某个区块生成诈骗证明,需求知道该区块的买卖数据。假如区块生产者只发布区块头,没有发布买卖数据的话,全节点就无法验证买卖的有用性,并针对无效买卖生成诈骗证明了。这就要求区块生产者发布区块的一切数据,可是咱们需求找到一种办法来强制实行。

为了处理这个问题,轻客户端需求找到某种办法来查看区块的买卖数据是否真的发布到了网络上,以便全节点进行验证。可是,咱们又要避免让轻客户端下载整个区块,由于这会使得轻客户端丧失存在的含义。

咱们该怎么处理这一问题?首要,咱们先来评论数据可得性问题的相关性,以及怎么采取处理措施。

数据可得性问题与哪些计划有关

在上一节中,咱们介绍了数据可得性问题。让咱们来评论一下它对可扩展性处理计划的重要性。

添加区块巨细

在比特币等区块链中,绝大部分一般的手提电脑都能运转全节点并验证整条链,由于存在人为规则的区块巨细上限,来避免区块链变得过大。

可是,假如咱们想要添加区块巨细上限该怎么办?那就只要更人才干负担得起运转全节点并独立验证区块链的本钱,大多数人都会运转安全性更低的轻客户端。这并不利于去中心化,由于这会让区块生产者更简单更改协议规则,刺进无效买卖来欺骗轻客户端。因此,为轻客户端供给诈骗证明支持很重要,可是正如咱们已经评论过的,轻客户端需求一种办法来验证区块中的一切数据是否都已发布至网络。

分片

进步区块链吞吐量的一种办法是,将区块链分红多条链,即,分片。这些分片都有自己的区块生产者,并且能够彼此通讯,以便在分片之间搬运代币。分片的含义在于,将网络中的区块生产者分组,这样就不需求每个区块生产者处理每个买卖,只需将他们涣散到不同的分片上即可。每个分片只需处理部分买卖。

一般来说,在分片式区块链上,验证者只需求为一个或少量几个分片运转全节点,并为其它分片运转轻客户端。究竟,假如每个验证者都要为每个分片运转一个全节点,就无法完成分片的目的 —— 将网络的开销分割给不同节点。

可是,这种办法自身存在缺陷。假如分片上的区块生产者作恶,开始接受无效买卖怎么办?相比分外片式体系,分片式体系更有可能发生这种状况,由于后者的每个分片上只要少量区块生产者,攻击起来更简单。请记住,区块生产者会被不断分配到不同的分片上。

为便于发觉是否存在分片接受无效买卖的状况,咱们必须保证分片中的一切数据都是公开可得的,以便运用诈骗证明来证明一切无效买卖。

Rollup

Optimistic rollup是一种根据 rollup 侧链(相似分片)的新型可扩展性策略。这些侧链有自己专属的区块生产者,可与其它侧链相互搬运资产。

可是,假如有歹意的区块生产者将无效买卖打包进区块,将侧链上一切用户的资金盗走怎么办?为处理这一问题,咱们能够运用诈骗证明来发现这种状况。可是,仍是那个老问题,侧链用户需求找到某种办法来保证侧链上一切区块的数据都公开可见,以便发现无效买卖。为了处理这一问题,以太坊上的 Rollup 将一切 rollup 区块都发布到以太坊区块链上,依赖以太坊来完成数据可得性。也便是说,将以太坊作为数据可得性层。

ZK-rollup 与 optimistic rollup 相似。差异在于,前者并非运用诈骗证明来发现无效区块,而是运用有用性证明来证明区块的有用性。有用性证明自身不需求数据可得性。可是,总的来说,ZK-rollup 需求数据可得性,由于假如区块生产者创建了一个有用区块,并为其生成有用性证明,却没有发布区块数据,用户就无法知道区块链的状态以及他们的余额,也就无法与区块链进行交互。

进一步探究

rollup 的规划旨在将区块链作为数据可得性层来存储买卖,可是实践的买卖处理和核算都发生在 rollup 上。这是一种很有趣的思路:区块链实践上不需求进行任何核算,可是至少需求将买卖分装到区块中,并保证买卖的数据可得性。

这也是LazyLedger的规划思路,即,一种“懒散的”区块链,只需求完成区块链的两个核心使命 —— 经过可扩展办法对买卖进行排序,并完成买卖的数据可得性。这使得LazyLedger成为 rollup 等体系中的最小“可拔插”组件。

数据可得性问题的处理计划

下载一切数据

正如上文所评论的那样,处理数据可得性问题的最直接办法便是,要求一切人(包含轻客户端)下载一切数据。显然,这种办法不具备良好的可扩展性。比特币和以太坊等大多数区块链均采用这种办法。

数据可得性证明

数据可得性证明是一种新技术:客户端只需下载区块中的一小部分数据,即可查看该区块中一切数据是否均已发布。

数据可得性证明采用了一种被称为纠删码的数学元件。纠删码被广泛应用到了从 CD-ROM 到卫星通讯再到二维码等信息技术中。纠删码能够将原本 1 MB 的区块数据扩充成 2MB,其中多出的 1 MB 便是叫做纠删码的特殊数据。假如区块中的任何字节丢掉,纠删码都能够帮你找回它们。即使整个区块的数据丢掉, 纠删码也能够帮你找回一切数据。同样地,有了纠删码,即使 CD-ROM 中的数据都被擦除,你的核算机也能够读取到(译者注:纠删码并不能帮你节约带宽,假定 1MB 的数据被扩充成了 2 MB,你仍然需求获得至少 1MB 的数据才干康复出原始数据,虽然并不要求这 1 MB 的数据是连续的)。

这就意味着,要完成 100% 的数据可得性,区块生产者只需将区块中 50% 的数据发布到网络上。 假如歹意区块生产者想要成功隐秘 1% 的数据,就必须隐秘超越 50% 的数据,否则这 1% 的数据能够经过剩下 50% 的数据找回(译者注:此段榜首句存疑)。

有了这个知识,客户端就能采取措施来保证区块中的数据不会被躲藏。客户端能够尝试随机下载区块切分而成的数据块,假如他们未能成功下载数据块(即表明,该数据块归于歹意区块生产者未公开的那 50% 的数据),它们就会拒绝承认该区块的数据可得性。假如下载一个随机数据块,客户端就有 50% 的概率发现无效区块。假如下载两个数据块,就有 75% 的概率。假如下载三个数据块,就有 87.5% 的概率。以此类推,直到下载七个数据块之后,就有 99% 的概率。经过这种办法,客户端只需下载区块中的一小部分数据,即可有用查看整个区块的数据可得性。

数据可得性证明的全部细节会更杂乱一些,并且依赖于其它假定,例如,网络中的轻客户端数量不能低于某个下限,这样就有足够多的轻客户端恳求数据块,以便康复整个区块的数据。假如你想了解更多信息,能够查看关于数据可用性证明的论文。

定论

在本文中,咱们介绍了数据可用性问题,评论了数据可用性对区块链可扩展性的重要性,并提出了处理计划。

假如你想了解更多信息,请查看以下资料:

  • John Adler’s whiteboard session about fraud and data availability proofs
  • Original fraud and data availability proofs paper
  • Coded Merkle Trees paper on an alternative data availability scheme
  • Ethereum Research wiki post on the data availability problem

(完)


原文链接:https://coinmarketcap.com/alexandria/article/what-is-data-availability
作者:Mustafa Al-Bassam
翻译&校对:闵敏 & 阿剑

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注