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