对数据可用性进行可扩展性验证难度更高欺诈证明不能用于验证数据可用性。运算的欺诈证明基于这样一种条件,即原始声明一旦提交,运算的输入数据要在链上发布,因此,如果有人发起挑战,该挑战的执行与原始执行的「环境」完全一致。对于数据可用性检查,上述操作无法实现,因为如果要在链上发布,需要检查的数据量太多。因此,针对数据可用性,如何生成欺诈证明方案变成了一个关键问题,有人可以声称「数据 X 可用」,但不在链上发布,等待挑战者出现,发起挑战后,再向整个网络发布该数据,使得网络中的其他参与者认为挑战者是不正确的 下图的「渔夫困境」能够很好阐释其中道理: 「渔夫困境」的核心理念涉及到两种情况,一种情况是 V1 是恶意发布者,但 V2 是一个诚实挑战者,而另一种情况是 V1 是诚实发布者,而 V2 是恶意挑战者。两种情况对于当时未尝试下载该特定数据的任何人来说都没有区别。当然,在可扩展的去中心化区块链中,每个个人节点只期望下载一小部分数据,因此只有一小部分节点能够了解分歧之外的所有状况。 由于不可能辨识出哪一方是正确的,所以也无法为数据可用性生成有效的欺诈证明解决方案。 不幸的是,仅仅保证数据有效性还不足以维持区块链正常运行。原因是如果区块链能经过验证,但所有数据均不可用,则用户将无法更新数据,生成证明验证未来的区块。攻击者如果能生成一个区块,该区块虽然能够经过验证,但数据不可用,可以有效阻碍区块链运行。有的攻击者还可以不上传特定用户的帐户数据,直到该用户支付赎金为止,因此这不仅仅是一个活性问题。 有一些强有力的信息论观点认为这个问题是根本性问题,没有优良解决方案 (例如密码学累加器的应用)。有关详细信息,请参见本文。 关键的解决方案是一种称为数据可用性采样 (data availability sampling) 的技术。该技术的工作方式如下:
通过纠删码,我们能够将问题从「检查 100% 数据可用性」 (即保证每条数据均可用) 转变为「检查 50% 数据可用性」 (即至少一半数据可用)。随机抽样则解决了 50% 可用性问题。如果可用数据量少于 50%,那么这两种检查手段中至少一个不可行,并且如果至少 50%的数据可用,那么,尽管某些节点可能无法得知一个区块的可用性,但只需要一个诚实节点运行纠删码重构程序,就能恢复剩余 50% 的区块数据。因此,为了检查 1 MB 区块的可用性,你无需下载 1 MB 数据,只需下载几 KB。这样每个区块都能接受数据可用性检查。有关如何使用 P2P 子网有效进行数据检查,请参见这篇文章 (责任编辑:admin) |