为什么「数据可用性」对区块链扩容来说至关重要?( 二 )


对于OptimisticRollup , 我们可以靠欺诈证明来维持序列器的可靠性(除非有人提交了欺诈证明 , 表明序列器中包含有一个无效或恶意的交易 , 我们一般都默认序列器能够可靠运作) 。 但是 , 如果我们想让其他人也能计算欺诈证明 , 那么他们便会需要序列器所执行的交易数据 , 以便提交欺诈证明 。 换句话说 , 序列器必须提供交易数据 , 否则没人能保证OptimisticRollup序列器的可靠性 。
为什么「数据可用性」对区块链扩容来说至关重要?
文章图片
有了ZKRollup , 保证序列器的可靠性就变得简单多了——序列器在执行一批交易时必须提交有效性证明(ZK-SNARK或ZK-STARK) , 而这个有效性证明便可以保证序列器中不会出现无效或恶意交易 。 此外 , 任何人(甚至是智能合约)都可以轻易地验证这些证明 。 但对于ZK-Rollup的序列器来说 , 数据可用性依然是举足轻重 , 这是因为我们作为Rollup的用户 , 如果想快速投资于Shitcoin的话 , 就需要知道我们在Rollup上有多少账户余额 。 但如果交易数据不可用的话 , 我们就无法知道我们的账户余额 , 也就无法再与Rollup进行互动 。
上文让我们明白了 , 人们一直以来推崇Rollup的原因 。 鉴于全节点不一定要能跟上序列器的速度 , 那我们为什么不直接把它变成一台功能强大的计算机?这一改变将让序列器每秒执行大量的交易 , 从而降低了Gas费 , 并令所有人都感到满意 。 但是 , 序列器还是需要提供交易数据 , 也就是说 , 即使序列器是一台真正的超级计算机 , 它实际能计算的每秒交易数量仍将受到它所使用的底层数据可用性解决方案或数据可用性层的数据吞吐量的限制 。
简而言之 , 如果Rollup所使用的数据可用性解决方案或数据可用性层无法储存Rollup序列器想要转储的数据量 , 那么序列器(以及Rollup)即使想处理更多的交易 , 也都无能为力了 。 与此同时 , 这也会让Ethereum上的Gas费用升高 。
这正是数据可用性之所以极其重要的原因——如果数据可用性得到了保证 , 我们就可以规范Rollup序列器的行为 , 而如果Rollup准备最大化其交易吞吐量 , 数据可用性解决方案或数据可用性层数据空间吞吐量的最大化也将变得至关重要 。
但你可能已经意识到 , 我们尚未完全解决序列器能否正常运作的问题 。 如果Rollup主链全节点的计算速度不需要跟上序列器的话 , 序列器就可以扣留很大一部分的交易数据 。 问题在于 , 主链节点如何才能强制序列器将数据转储到数据可用性层之上?而如果节点不能做到这一点的话 , 我们就根本不会在可扩展性方面取得任何进展 , 因为这样的话我们就不得不去信任序列器或自己出资购买超级计算机了 。
上述问题也被称为「数据可用性问题」 。
「数据可用性问题」的解决方案
数据可用性问题最直接的解决方案是 , 强制全节点下载由序列器转储的所有数据到数据可用性层或解决方案上 。 但与此同时 , 我们也清楚这对我们并无帮助 , 因为这需要全节点跟上序列器的交易计算速度 , 并提高运行全节点的硬件要求 , 最终会阻碍去中心化的发展 。
因此很明显 , 我们需要一个更好的解决方案来解决这个问题 , 而且幸运的是 , 我们碰巧就有一个 。
数据可用性证明
每当序列器转储一个新的交易数据块时 , 节点可以通过数据可用性证明来进行数据「采样」 , 以确保这些数据确实是由序列器所提供的 。
虽然数据可用性证明的工作原理涉及大量数学计算以及技术术语 , 但我还是会尽力向大家解释清楚(参见JohnAdler) 。