通过纠删码,我们能够将问题从「检查 100% 数据可用性」 (即保证每条数据均可用) 转变为「检查 50% 数据可用性」 (即至少一半数据可用)。随机抽样则解决了 50% 可用性问题。如果可用数据量少于 50%,那么这两种检查手段中至少一个不可行,并且如果至少 50%的数据可用,那么,尽管某些节点可能无法得知一个区块的可用性,但只需要一个诚实节点运行纠删码重构程序,就能恢复剩余 50% 的区块数据。因此,为了检查 1 MB 区块的可用性,你无需下载 1 MB 数据,只需下载几 KB。这样每个区块都能接受数据可用性检查。有关如何使用 P2P 子网有效进行数据检查,请参见这篇文章 通过 ZK-SNARK 证明,数据纠删码的正确性也能够得到验证,然后利用默克尔树的分支来验证各个数据块。另一种验证方式是使用多项式承诺 (polynomial commitment),例如 Kate commitments (KZG 承诺),本质上,该承诺通过一个简单组件进行纠删编码,证明每个要素和正确性验证,这就是以太坊分片所使用的技术。 总结:如何保证所有数据的正确性? 假设有 100 个区块,并且你不想依赖委员会有效地验证所有区块的正确性。为了实现这个目标,我们需要进行以下措施: 每个客户端在每个区块上进行数据可用性采样,以验证每个区块中的数据是否可用,同时需要下载每个区块几 KB 的数据,即使区块的整体大小为 MB 或更大。仅在所有数据可用性挑战得到正确回应后,客户点才会接受区块。 数据可用性得到验证后,那么验证其正确性将变得更加容易。验证正确性要通过以下两种技术:
两种情况中,无论区块有多大,每个客户端仅需要对区块进行少量验证工作。对于欺诈证明,区块偶尔需要在链上得到充分验证,但这种情况很少发生,因为就算发起一个挑战,成本也十分高昂。 以上就是全文的总结!就以太坊分片而言,短期计划是让分片中的区块只包含数据。也就是说,这些分片的作用纯粹是「数据可用性引擎」,Layer2 rollup 的工作则是使用安全的数据空间,另外还会利用欺诈证明或 ZK-SNARK 技术,实现高交易吞吐量,同时维持安全性。但是,我们还可以创建一个内部系统,「原地」实现高吞吐执行,这是完全有可能实现的。 (责任编辑:admin) |