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