本文转载自公众号「以太坊爱好者」,作者:Mustafa Al-Bassam,翻译:闵敏、阿剑,文章版权归原作者一切,如有侵权请联系删去。
「数据可得性(data availability)」和「数据可得性问题」指的是一些区块链扩容方案所面对一个问题。具体来说,便是当新的区块创建时,节点怎么保证该区块中的一切数据都已发布到网络上?困难之处在于,假如区块生产者没有发布区块中的一切数据,就没人能发现该区块中是否躲藏了歹意买卖。
在本文中,我将深入探讨数据可得性问题的重要性,以及相关处理方案。
区块链节点是怎么运转的?
区块链上的每个区块都由两部分组成:
1、区块头,即区块的元数据,由一些关于区块内容的基本信息组成,包含买卖的默克尔根。
2、买卖数据,即,区块的主要组成部分,由实际的买卖数据组成。
区块链网络中主要有两类节点:
全节点(又称彻底验证节点)。这类节点会下载区块链中的每笔买卖并验证其有用性。这需求耗费很多资源和数百 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% 的概率。经过这种方法,客户端只需下载区块中的一小部分数据,即可有用查看整个区块的数据可得性。
数据可得性证明的全部细节会更杂乱一些,而且依靠于其它假定,例如,网络中的轻客户端数量不能低于某个下限,这样就有满足多的轻客户端恳求数据块,以便恢复整个区块的数据。假如你想了解更多信息,能够查看关于数据可用性证明的论文。
视野开拓
Democacy does ot equie pefect equality, but it does equie that citizes shae i commo life. What mattes is that people of diffeet backgouds ad social positios ecoute oe aothe, ad bump up agaist oe aothe, i the couse of eveyday life. Fo this is how we lea to egotiate ad abide ou diffeeces, ad how we come to cae fo commo good.-《What Moey Ca't Buy》