【背景介绍】
前文《打破K/V存储的性能瓶颈》中,我们提到用一个哈希值来反映区块链系统中所有对象的当前状态集合,并称之为“世界状态”。现在大多数区块链底层平台为了支持与其他链集成,或者为了部署在更小的终端,都会提供轻节点的功能,轻节点也就是存储少量数据的“轻量级节点”,但因为没有存储全量数据,无法对其他节点的数据进行正确性的验证。这里便需要其他节点生成一份数据证明,配合轻节点本地保存的“世界状态”来进行数据的验证。
这份数据证明是什么?又是怎么实现的?带着这份疑问,本文将详细介绍目前主流的数据证明的实现以及解决方案和优化思路。
【默克尔证明】
介绍数据证明前,我们先要了解传统的默克尔树,以及对应的证明生成和验证的流程。
默克尔树(Merkle Tree),因发明人叫Merkle,并且是树形结构而得名。如下图,默克尔树的叶节点存储数据或者数据的哈希值,任一父节点包含了其子节点总和的哈希值。

默克尔树最大的作用便是快速校验部分数据是否在原始数据中。
举个例子,要想验证L2在上图的这棵树上,只需要节点列表[L2,Hash0-0,Hash1]即可,通过L2可以计算出Hash0-1,通过Hash0-1与Hash0-0可以计算出Hash0,再通过Hash0与Hash1,便可以得到一个树根,再把该树根与Top Hash进行比对即可快速验证L2是否在树中。默克尔树生成数据证明以及验证数据证明的原理就是如

本文详细探讨了在区块链中,如何通过默克尔B+树解决轻节点的数据验证问题,介绍了MPT的局限性和MerklePatriciaTree的改进,以及在联盟链场景下提出的优化策略,包括磁盘读写性能提升和数据证明的高效生成与验证。
最低0.47元/天 解锁文章
460

被折叠的 条评论
为什么被折叠?



