以太坊联合创始人Vitalik Buterin和伦敦大学学院的两名博士生Mustafa Al-Bassam和Alberto Sonnino发布了一篇关于欺诈证明(fraud proof)的论文,以便“轻客户端可以获得接近全节点等效的区块有效性保证”。
轻客户端就是智能手机上的以太坊钱包。它们非常轻,对矿工非常信任,自身也不验证协议规则。到目前为止,一切都很顺利,但是分片对安全性的要求更高,这一要求也会让轻型钱包更加安全。论文中说:
“我们的论文对于使用分片对区块链进行扩容的工作也能发挥重要作用,因为在分片系统中,网络中单个节点不会下载并验证所有分片的状态,因此必须使用欺诈证明来检测来自恶意分片的无效区块。”
这篇高度技术性但也能让人理解的论文描述了一种方法,通过该方法,节点可以验证区块,然后发布这种有效性的证明。然后,轻钱包或分片可以验证该证明,如果有任何错误,它们会拒绝该区块。但是有一个问题:“恶意区块生产者可以通过扣留重新计算dataRooTI所需的数据并仅将区块头释放到网络来阻止整个节点生成欺诈证明。区块生产者能在区块发布后很长时间后释放可能包含无效交易或状态转换的数据,使区块无效。这将导致未来区块分类账上的交易回滚。”
证明部分可以说是相对容易的,但这个数据扣留问题很难解决。 Buterin说:“基本上,现在会使用抹除码和欺诈证明将‘100%数据可用性’问题转换为‘75%数据可用性’问题,转换后的问题可以通过随机抽样技术更容易地解决。”
Vitalik的论文更深入地描述了这个过程,本文也在某种程度上引用了论文中的相关内容,以便于让读者更容易理解:“区块生产者编译由k个share组成的数据块,使用Reed-Solomon编码将数据扩展到2k个share,并在扩展数据(每个叶对应一个share)上计算Merkle root(dataRooTI)。
当轻客户端使用dataRooTI接收区块头时,它们会从dataRooTI所代表哈希树中随机采样share,并且只有在收到所有请求的share后才接受区块。如果一个对抗性的区块生产者使超过50%的share无法使用,从而使完整数据无法恢复,则有50%的可能性客户将在第一次抽样中随机抽取不可用的share,两次抽样后有25%的概率,三次后为12.5%,依此类推。这是使用替换抽样时的情况,在完整的方案中,会在没有替换的情况下进行抽样,因此概率会更低。
请注意,要使此方案正常工作,网络中必须有足够的轻客户端采样足够的share,以便区块生产者需要释放超过50%的share才能通过所有轻客户端的抽样挑战,从而可以恢复整个区块。”
有了完整的区块以后,我们可以创建欺诈证明,轻节点可以检查它,而轻型节点实际上可以变成一个完整的节点。
这里假设至少有一个完整节点是诚实的,显然诚实的完整节点越多越好。在分片的情况下,则假设每个分片至少有一个诚实的节点,这意味着分片中的节点将是非常重要的,并且在某种程度上可以理解为为节点越多,容量越大。
前Blockstream CTO和现比特币核心开发人员Gregory Maxwell的反应是:“错误编码的反扣留问题已被多次讨论过——而且我一直很沮丧,因为我无法激发人们对这个想法的兴趣。”
论文中也表示:“网络上一直有关于如何设计欺诈证明系统的讨论,但是没有提出处理所有区块无效案例和数据可用性的完整设计。”
Vitalik的论文包含一个欺诈证明原型和一个数据可用性原型。由于欺诈证明一直被认为是公共区块链扩容的主要瓶颈,因此这似乎是一种技术上的突破。按照当前的方案,资源使用消耗量为每1MB区块14kb,验证时间大约为1秒。
轻客户端必须为每个区块执行上述 *** 作,但它们不需要存储这些证明。 一旦它们检查发现该区块是有效的,它们就可以忽略14kb的资源使用消耗量,因此看起来似乎不会消耗存储空间。这意味着在这种设计中,轻节点可以自动拒绝无效区块,从而让矿工不能欺骗它们,因为在这种设计中,轻节点将像完整节点一样支持协议规则。
如果情况确实如此的话,那么完整节点存储和同步可能不再是问题,可扩展性问题有能得到解决。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)