一种面向区块链的紧凑Merkle多值证明并行生成及验证方法技术

技术编号:26530891 阅读:25 留言:0更新日期:2020-12-01 14:10
本发明专利技术公开了一种面向区块链的紧凑Merkle多值证明并行生成及验证方法,包括Merkle Forest的构建、紧凑Merkle多值证明的生成以及基于紧凑Merkle多值证明的验证。为快速并行获取Merkle多值证明,充分利用当代计算机多核处理器的特性,以及更好适用于海量数据集下的Merkle多值证明的相关操作,本发明专利技术提出了一种支持多线程方式的称之为Merkle Forest的数据结构。本发明专利技术克服了现有技术下稀疏的多值证明在生成及验证证明时,需要更多的内存和CPU周期上的缺陷,以及解决了稀疏的多值证明难以并行地生成和验证上的问题,实现了快速高效的多值证明生成及验证。

【技术实现步骤摘要】
一种面向区块链的紧凑Merkle多值证明并行生成及验证方法
本专利技术属于区块链
,尤其涉及Merkle证明技术,具体是一种面向区块链的紧凑Merkle多值证明并行生成及验证方法。
技术介绍
默克尔树(Merkletree,MT)是一种哈希二叉树,1979年由RalphMerkle专利技术。在计算机领域,Merkle树大多用来进行完整性验证处理。在处理完整性验证的应用场景中,特别是在分布式环境下进行这样的验证时,Merkle树会大大减少数据的传输量以及计算的复杂度。Merkle哈希树是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值。Merkle树由于可快速比较大量数据,即当两个默克尔树根相同时,则意味着所代表的数据必然相同(哈希算法决定的),而常用于区块链系统中来快速归纳和校验区块数据的完整性。区块链中的Merkle树是二叉树,用于存储交易信息。每个交易两两配对,构成Merkle树的叶子节点,进而生成整个Merkle树。Merkle树使得用户可以通过本文档来自技高网...

【技术保护点】
1.一种面向区块链的紧凑Merkle多值证明并行生成及验证方法,其特征在于,包括以下具体步骤:/n步骤1:Merkle Forest的构建;/n步骤2:紧凑Merkle多值证明的生成;/n步骤3:基于紧凑Merkle多值证明的验证。/n

【技术特征摘要】
1.一种面向区块链的紧凑Merkle多值证明并行生成及验证方法,其特征在于,包括以下具体步骤:
步骤1:MerkleForest的构建;
步骤2:紧凑Merkle多值证明的生成;
步骤3:基于紧凑Merkle多值证明的验证。


2.根据权利要求1所述的面向区块链的紧凑Merkle多值证明并行生成及验证方法,其特征在于,所述步骤1具体包括:
步骤1-1:将初始数据集按照区间范围进行切分,得到多个数据块data-block,并将其按序放入队列中;
步骤1-2:多个线程依次从队列中获取数据块data-block,并基于获得的数据块构建Merkle树,直到队列为空,生成新一层的一组子树;
步骤1-3:获取所有步骤1-2中得到的子树的树根;若子树的个数等于1,则表明是最后一棵子树,终止迭代过程,跳转到步骤1-4;否则,将所有的树根作为新一轮迭代的初始数据集并跳转到步骤1-1的操作;
步骤1-4:多轮的子树并行向上迭代得到多层级子树,最终汇总得到MerkleForest。


3.根据权利要求2所述的面向区块链的紧凑Merkle多值证明并行生成及验证方法,其特征在于,所述步骤2具体包括:
步骤2-1:关注于与数据集I中数据有关的部分子树获得被验证的数据集I的多值证明multiproofs;对于数据集I中数据无关的子树不进行处理;
步骤2-2:根据数据集I中数据的有序索引index,将其按照区间范围进行切分,与MerkleForest构建时候的范围保持一致,根据切分得到的index区间就可以计算出所有与数据集I中数据有关的第一层子树;
步骤2-3:从下向上迭代遍历每一层中所涉及到的子树,对于同一层的多个子树用不同的线程同时并行的处理来获得单个子树内的证明;
步骤2-4:如果某一层的某个子树是被涉及的,则它的根是一定能够通过已得到的证明计算得到,并且这个根将作为下一层迭代中被验证的输入数据;
步骤2-5:多轮的子树并行向上迭代生成子树内的证明,最终得到数据集I的multiproofs。


4.根据权利要求3所述的面向区块链的紧凑Merkle多值证明并行生成及验证方法,其特征在于,所述步骤2-3具体包括:
步骤2-3-1:从下至上按层遍历这棵子树,如果当前层被验证的数据集I’的大小等于当前层sub-tree的节点数,则对该层中被验证的所有数据提供证明,即当前层之后的每一层的证明都是可以通过该层的得到的证明被计算出来的而不用额外提供其它证明,则无需继续遍历可跳转到步骤2-3-6;否则,进行步骤2-3-2;
步骤2-3-2:为了确保完整性,将遍历数据集I’以得到相对应的证明,此时会有两种不同的情况:如果当前遍历到的值的索引值index为偶数,则首先判断其是否是数据集I’中的最后一个值,如果是,并且它不是sub-tree当前层的最后一个值,则维护这个值的证明;否则,若该值是当前层的最后一个值,则其可以通过与它自身一起来计算得到父亲节点的值;如果不是最后一个值,则进行步骤2-3-3;
步骤2-3-3:首先判断与该值相邻的下一个值即索引值为index+1的值是否在数据集I’中,如果在,可以使用该值以及数据集I’中index+1对应的值一起来计算得到它们的父亲节点的值,无需做任何操作可直接在遍历过程中跳过它和下一个值;否则,则应该添加对于该值的证明;

【专利技术属性】
技术研发人员:方敏张召金澈清
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1