由于不可能区分谁对谁错,因此不可能有一个有效的数据可用性欺诈证明方案。 常见问题:如果某些数据不可用怎么办?通过 ZK-SNARK,你就可以确定一切都是有效的,这还不够吗? 不幸的是,仅仅只有有效性是不足以确保正确运行区块链的。这是因为,如果区块链是有效的,但是所有的数据都是不可用的,那么用户就没有办法更新他们所需的数据来生成用于验证未来区块的有效性的证明。如果一个攻击者生成了一个有效但不可用的区块,然后该攻击者又消失了,那么他就可以有效地暂停这条链。某个人可能会劫持某个特定用户的账户数据,直到该用户支付赎金,所以这个问题并不纯粹是区块链活性问题。 有一些强有力的信息-理论观点认为这个问题十分重大,没有什么明智的方式来规避。详情请参阅这篇文章: https://eprint.iacr.org/2009/612.pdf 那么,如何在不下载的情况下检查 1MB 数据是否可用呢?这听起来不可能! 其中的关键是一种称为数据可用性抽样 (data availability sampling) 的技术[6]。数据可用性抽样的工作方式如下:
![]() 纠删码将“检查100%可用性”(即检查每一段数据都是可用的) 这一问题转变成了“检查50%的可用性”(即至少有一半的数据是可用的)。随机抽样解决了 50% 的可用性问题。如果不到 50% 的数据是可用的,那么至少有一次检查几乎肯定会失败;如果至少 50% 的数据是可用的,同时某些节点可能无法识别出某个区块是可用的,那么只需要一个诚实节点运行纠删码重构过程,就能将该区块剩余的 50% 数据恢复。因此,不需要下载 1 MB 来检查 1MB 区块的可用性,你只需要下载几 KB。这使得对每个区块进行数据可用性检查是可行的。可以通过这篇文章来了解这种检查如何在 P2P 子网络中有效地实现: https://hackmd.io/@vbuterin/sharding_proposal#Blob-publication-process 可以使用 ZK-SNARK 来验证对一段数据进行的纠删码是否正确地被执行,然后可以使用 Merkle 分支来验证单个数据块。或者,你可以使用 (责任编辑:admin) |