时间:2022-01-16|浏览:7291
用戶喜愛的交易所
已有账号登陆后会弹出下载
你可能听说了,Ethereum 的分片路线图已经基本上取消了执行分片,如今只专注于数据分片,从而使 Ethereum 的数据空间吞吐量最大化。
你可能也看到了最近关于模块化区块链的讨论,深入地研究了 Rollup,了解了 volitions 与 validiums,然后也听说了「数据可用性解决方案」。
但是,在这个过程中你可能也会产生一个疑问:「到底什么是数据可用性?」。
在我们开始解释这个问题之前,我们可以先来回顾一下大多数区块链的工作原理。
交易、节点与恶名昭著的区块链三难困境问题
当你遇到了一个新的 OHM 分叉,如果它有着高得惊人的年利率,那你肯定会毫不犹豫的按爆「质押」那个按钮。但是,当你在上 Metamask 提交交易时会发生什么?
简单来说,你的交易会进入到内存池当中,假设你给矿工或验证者的贿赂足够高,你的交易会被放入到下一个区块中,并被添加到区块链上供后人查阅。然后,这个包含着你交易的区块会被发送到区块链的节点网络中。之后,全节点将下载这个新的区块,执行并计算这个区块中包含的每一笔交易(其中当然也包括你的那笔交易),同时确保这些交易都是有效交易。比如,在你的交易中,这些全节点可能会验证你是否有从其他人那里窃取资金,以及你是否有足够的 ETH 来支付 Gas 费等等。因此,全节点的重要任务便是对矿工和验证者执行区块链的各项规则。
正是因为这一机制,传统区块链便出现了扩容的问题。由于全节点会检查每笔交易以验证它们是否遵循区块链的规则,因此区块链无法在不提高硬件水平的情况下每秒钟处理更多的交易(更好的硬件会强化全节点的功能,而更强大的全节点可以验证更多交易,这样就能有更多可以包含大量交易的区块了)。但是,如果运行全节点的硬件要求提高了,那么全节点的数量就会变少,而去中心化的进程也会受到影响——如果能够确保矿工/验证者遵守规则的人少了的话,那情况就相当危险了(因为信任假设数量就会增加)。
数据的可用性是我们不能同时拥有扩容、安全与去中心化的主要原因之一
这种机制也说明了在传统单片式区块链中保证数据可用性的重要性:区块生产者(矿工/验证者)必须公布并提供他们生产区块的交易数据,以便全节点来检查他们的工作。如果区块生产者不提供这些数据的话,全节点就无法检查他们的工作,而且也就无法确保他们有在遵守区块链规则。
现在你应该理解了为什么数据可用性在传统单片式区块链中非常重要了,接下来让我们来探讨一下它在人见人爱的可扩展性解决方案——Rollup 中扮演着怎样的角色。
在 Rollup 背景下,数据可用性发挥着怎样的重要性
让我们先来重温一下 Rollup 是如何解决可扩展性问题的:与其提高运行全节点的硬件要求,为什么我们不去减少全节点需要验证有效性的交易数量?我们可以将交易的计算和执行工作从全节点交由给一个更强大的计算机(也被称为序列器)来完成。
但这是否也意味着我们必须信任序列器?如果全节点的硬件要求要保持在较低水平,那么在检查工作时,它们的速度肯定会慢于序列器。那么,我们如何确保这个序列器提出的新区块是有效的呢(也就是说,要保证该序列器并没有在窃取大家的资金)。鉴于这个问题一直被反复提及,我相信你已经知道了这个问题的答案,但也请你继续耐心读完接下来的内容(如果你想不起来了,不妨读读Benjamin Simon和Vitalik的这两篇文章来重温一下):
对于 Optimistic Rollup,我们可以靠欺诈证明来维持序列器的可靠性(除非有人提交了欺诈证明,表明序列器中包含有一个无效或恶意的交易,我们一般都默认序列器能够可靠运作)。但是,如果我们想让其他人也能计算欺诈证明,那么他们便会需要序列器所执行的交易数据,以便提交欺诈证明。换句话说,序列器必须提供交易数据,否则没人能保证 Optimistic Rollup 序列器的可靠性。
有了 ZK Rollup,保证序列器的可靠性就变得简单多了——序列器在执行一批交易时必须提交有效性证明(ZK-SNARK 或 ZK-STARK),而这个有效性证明便可以保证序列器中不会出现无效或恶意交易。此外,任何人(甚至是智能合约)都可以轻易地验证这些证明。但对于 ZK-Rollup 的序列器来说,数据可用性依然是举足轻重,这是因为我们作为 Rollup 的用户,如果想快速投资于 Shitcoin 的话,就需要知道我们在 Rollup 上有多少账户余额。但如果交易数据不可用的话,我们就无法知道我们的账户余额,也就无法再与 Rollup 进行互动。
上文让我们明白了,人们一直以来推崇 Rollup 的原因。鉴于全节点不一定要能跟上序列器的速度,那我们为什么不直接把它变成一台功能强大的计算机?这一改变将让序列器每秒执行大量的交易,从而降低了 Gas 费,并令所有人都感到满意。但是,序列器还是需要提供交易数据,也就是说,即使序列器是一台真正的超级计算机,它实际能计算的每秒交易数量仍将受到它所使用的底层数据可用性解决方案或数据可用性层的数据吞吐量的限制。
简而言之,如果 Rollup 所使用的数据可用性解决方案或数据可用性层无法储存 Rollup 序列器想要转储的数据量,那么序列器(以及 Rollup)即使想处理更多的交易,也都无能为力了。与此同时,这也会让 Ethereum 上的 Gas 费用升高。=
这正是数据可用性之所以极其重要的原因——如果数据可用性得到了保证,我们就可以规范 Rollup 序列器的行为,而如果 Rollup 准备最大化其交易吞吐量,数据可用性解决方案或数据可用性层数据空间吞吐量的最大化也将变得至关重要。
但你可能已经意识到,我们尚未完全解决序列器能否正常运作的问题。如果 Rollup 主链全节点的计算速度不需要跟上序列器的话,序列器就可以扣留很大一部分的交易数据。问题在于,主链节点如何才能强制序列器将数据转储到数据可用性层之上?而如果节点不能做到这一点的话,我们就根本不会在可扩展性方面取得任何进展,因为这样的话我们就不得不去信任序列器或自己出资购买超级计算机了。
上述问题也被称为「数据可用性问题」。