2.用户如果要检查可用性,无需下载全部数据,而是随机选择区块中的位置(常数,例如30),并且仅当在区块中找到所有选定位置的数据时,才接受这个区块。 通过纠删码,我们能够将问题从“检查100%数据可用性” (即保证每条数据均可用) 转变为“检查50%数据可用性” (即至少一半数据可用)。随机抽样则解决了50%可用性问题。如果可用数据量少于50%,那么这两种检查手段中至少一个不可行,并且如果至少50%的数据可用,那么,尽管某些节点可能无法得知一个区块的可用性,但只需要一个诚实节点运行纠删码重构程序,就能恢复剩余50%的区块数据。因此,为了检查1 MB区块的可用性,你无需下载1 MB数据,只需下载几KB。这样每个区块都能接受数据可用性检查。有关如何使用P2P子网有效进行数据检查,请参见这篇文章 通过ZK-SNARK证明,数据纠删码的正确性也能够得到验证,然后利用默克尔树的分支来验证各个数据块。另一种验证方式是使用多项式承诺 (polynomial commitment),例如 Kate commitments (KZG承诺),本质上,该承诺通过一个简单组件进行纠删编码,证明每个要素和正确性验证,这就是以太坊分片所使用的技术。 总结:如何保证所有数据的正确性? 假设有100个区块,并且你不想依赖委员会有效地验证所有区块的正确性。为了实现这个目标,我们需要进行以下措施: ➤ 每个客户端在每个区块上进行数据可用性采样,以验证每个区块中的数据是否可用,同时需要下载每个区块几KB的数据,即使区块的整体大小为MB或更大。仅在所有数据可用性挑战得到正确回应后,客户点才会接受区块。 ➤ 数据可用性得到验证后,那么验证其正确性将变得更加容易。验证正确性要通过以下两种技术: 我们可以使用欺诈证明,一些质押了保证金的参与者可以提供签名,证明每个区块的正确性。其他挑战者或者是渔夫节点会进行随机检查,并尝试完整处理整个区块。因为数据可用性已经经过检查,所以其他节点始终可以下载数据,并对任何特定区块进完全处理。如果发现无效区块,节点会发布一个所有人都可以验证的挑战。如果该区块被证明是坏块,则基于这一区块的所有区块都需要重新经过运算。我们可以使用 ZK-SNARK 技术。这样每个区块的正确性都能得到这种技术的验证。➤ 在以上两种情况中,无论区块有多大,每个客户端仅需要对区块进行少量验证工作。对于欺诈证明,区块偶尔需要在链上得到充分验证,但这种情况很少发生,因为就算发起一个挑战,成本也十分高昂。 (责任编辑:admin) |