你可能听说了,Ethereum的分片路线图已经基本上取消了执行分片,如今只专注于数据分片,从而使Ethereum的数据空间吞吐量最大化。
你可能也看到了最近关于模块化区块链的讨论,深入地研究了Rollup,了解了volitions与validiums,然后也听说了「数据可用性解决方案」。
但是,在这个过程中你可能也会产生一个疑问:「到底什么是数据可用性?」。
在我们开始解释这个问题之前,我们可以先来回顾一下大多数区块链的工作原理。
交易、节点与恶名昭著的区块链三难困境问题
当你遇到了一个新的OHM分叉,如果它有着高得惊人的年利率,那你肯定会毫不犹豫的按爆「质押」那个按钮。但是,当你在上Metamask提交交易时会发生什么?
简单来说,你的交易会进入到内存池当中,假设你给矿工或验证者的贿赂足够高,你的交易会被放入到下一个区块中,并被添加到区块链上供后人查阅。然后,这个包含着你交易的区块会被发送到区块链的节点网络中。之后,全节点将下载这个新的区块,执行并计算这个区块中包含的每一笔交易,同时确保这些交易都是有效交易。比如,在你的交易中,这些全节点可能会验证你是否有从其他人那里窃取资金,以及你是否有足够的ETH来支付Gas费等等。因此,全节点的重要任务便是对矿工和验证者执行区块链的各项规则。
正是因为这一机制,传统区块链便出现了扩容的问题。由于全节点会检查每笔交易以验证它们是否遵循区块链的规则,因此区块链无法在不提高硬件水平的情况下每秒钟处理更多的交易。但是,如果运行全节点的硬件要求提高了,那么全节点的数量就会变少,而去中心化的进程也会受到影响——如果能够确保矿工/验证者遵守规则的人少了的话,那情况就相当危险了。
数据的可用性是我们不能同时拥有扩容、安全与去中心化的主要原因之一
这种机制也说明了在传统单片式区块链中保证数据可用性的重要性:区块生产者必须公布并提供他们生产区块的交易数据,以便全节点来检查他们的工作。如果区块生产者不提供这些数据的话,全节点就无法检查他们的工作,而且也就无法确保他们有在遵守区块链规则。
现在你应该理解了为什么数据可用性在传统单片式区块链中非常重要了,接下来让我们来探讨一下它在人见人爱的可扩展性解决方案——Rollup中扮演着怎样的角色。
在Rollup背景下,数据可用性发挥着怎样的重要性
让我们先来重温一下Rollup是如何解决可扩展性问题的:与其提高运行全节点的硬件要求,为什么我们不去减少全节点需要验证有效性的交易数量?我们可以将交易的计算和执行工作从全节点交由给一个更强大的计算机来完成。
但这是否也意味着我们必须信任序列器?如果全节点的硬件要求要保持在较低水平,那么在检查工作时,它们的速度肯定会慢于序列器。那么,我们如何确保这个序列器提出的新区块是有效的呢。鉴于这个问题一直被反复提及,我相信你已经知道了这个问题的答案,但也请你继续耐心读完接下来的内容:
对于OptimisticRollup,我们可以靠欺诈证明来维持序列器的可靠性。但是,如果我们想让其他人也能计算欺诈证明,那么他们便会需要序列器所执行的交易数据,以便提交欺诈证明。换句话说,序列器必须提供交易数据,否则没人能保证OptimisticRollup序列器的可靠性。
擦除代码技术和游戏《堡垒之夜》中能让你在那次吓到猫以后继续欺负你那个讨人厌的表弟和他的朋友,使用的是一个技术。
不过请注意,交易数据块进行了擦除编码处理以后,序列器要想做出不当行为必须扣留该区块50%以上的数据。但如果该区块没有被擦除编码的话,那么序列器只留存1%的数据就可以做出不当行为了。所以说,通过对数据进行擦除编码处理,全节点就更能确保序列器能够实现数据可用性了。
尽管如此,我们也想尽可能确保序列器能提供全部数据。在理想情况下,我们希望序列器能达到的可靠性与我们直接下载整个交易数据块一样高,而事实上,这是完全可以实现的:全节点可以随机从该区块下载一些数据。如果序列器行为不端,全节点将有小于50%的几率被,即在序列器试图扣留数据时随机下载一部分数据。这是因为,如果序列器意图行为不当、扣留数据,那么它们必须扣留大于50%擦除编码的数据才行。
与此同时,这也就意味着,如果全节点可以两次进行该操作的话,就可以大幅降低被的可能性。全节点通过随机选择另一块数据进行第二次下载,就可以把被的概率降到25%以下。事实上,全节点第七次随机下载数据时,其未能检测到序列器扣留数据的几率将小于1%。
这一过程被称为使用数据可用性证明的抽样,或者也可以直接称为数据可用性抽样。它的效率非常高,因为该抽样可以让节点在只下载序列器于主链上发布的一小部分数据的情况下,就可以保证其效果与下载并检查整个区块相一致。为了让大家有一个更直观的感受,你可以想象一下,如果你在小区散步10分钟就能消耗和跑步10公里一同样多的热量,是不是就能感受到数据可用性抽样的强大了。
如果主链全节点可以进行数据可用性采样的话,我们就能确保Rollup序列器不出现错误行为。我们现在都应该感到高兴,因为我们已经可以确信Rollup的确能够扩展我们最喜爱的区块链。但在你想退出这个网页之前,是否还记得我们仍需要找到一种方法来扩展数据可用性本身?如果我们想让世界上所有人都加入到区块链当中,从而挣到更多的钱,那我们就需要建设Rollup;如果我们想用Rollup来扩展区块链,那我们不仅需要限制序列器做出不当行为,而且我们还必须扩展数据空间的吞吐量,从而降低序列器转储交易数据的成本。
数据可用性证明也是扩展数据空间吞吐量的关键
近期,一个有着专注于扩展数据空间吞吐量路线图的layer1便是Ethereum了。它希望通过数据分片来扩展数据空间的吞吐量,这也就意味着不是每个验证器都会像目前的节点那样继续下载相同的交易数据。相反,Ethereum将从本质上把它的验证器网络分为不同的分区,该操作也被称为「分片」。假设你有1000个验证器,并且它们都用来存储相同的数据,那么如果你把它们分成4组,每组250个验证器,你一瞬间就将Rollup转储数据的空间增加了4倍。这看起来很简单,对吗?
Ethereum在其「近期」数据分片路线图中正尝试设置64个数据分片
然而,问题是,一个分片内的验证器只能下载被转储到他们分片上的交易数据。而且这意味着一个分片内的验证器不能保证序列器转储的全部数据都可用——它们只能保证转储到他们分片的数据是可用的,但不能保证其他分片的数据可用。
因为,我们可能会遇到这样的情况:一个分片中的验证器不能确定序列器是否发生了错误行为,因为他们不知道其他分片中发生了什么,而这一问题也可以用数据可用性抽样来解决。如果你是一个分片中的验证者,那么你就可以使用其他每一个分片中的数据可用性证明进行数据抽样。这样一来,你就相当于是每个分片的验证者了,数据可用性也就因此得到了保证,而Ethereum也可以安全地进行数据分片了。
其他一些区块链,也就是Celestia和PolygonAvail也想大规模扩展其数据空间吞吐量。与其他大多数区块链不同的是,Celestia和PolygonAvail都只做两件事:下单区块与交易,以及成为数据可用性层。这意味着,为了保证Celestia与PolygonAvail验证者的可靠,我们非常需要一个去中心化的节点网络,以确保其验证者有在正确存储和订购交易数据。但是,由于这些数据不需要做任何处理,你就并不需要使用全节点来保证他们的可靠性了。相反,能够完成数据可用性采样的轻节点将也可以完成全节点的工作,而如果有很多轻节点都可以用数据可用性证明进行采样的话,就足以让验证者在保证数据可用性方面负起责任了。也就是说,只要有足够的节点使用数据可用性证明进行数据可用性采样,你就可以扩大区块,提升验证者的硬件要求,从而提高数据空间的吞吐量。
现在让我们来回顾一下:数据可用性问题也许是区块链三难困境的关键,对我们所有在扩展方面的努力都造成了影响。幸运的是,我们能够利用数据可用性证明这一核心技术来解决数据可用性问题。这让我们得以大规模扩展数据空间的吞吐量,降低了Rollup转储大量交易数据的成本,以便其处理足够多的交易,从而让全世界的人都能参与进来。此外,数据可用性证明也让我们可以在无需信任Rollup序列器的情况下,就可以保证它的可靠性。希望这篇文章能让你理解为什么要想充分发挥Rollup的全部潜力,数据可用性是如此的重要了。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。