CN108846133B - 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 - Google Patents

基于b-m树的区块链存储结构、b-m树建立算法及查找算法 Download PDF

Info

Publication number
CN108846133B
CN108846133B CN201810721873.XA CN201810721873A CN108846133B CN 108846133 B CN108846133 B CN 108846133B CN 201810721873 A CN201810721873 A CN 201810721873A CN 108846133 B CN108846133 B CN 108846133B
Authority
CN
China
Prior art keywords
tree
node
block
leaf
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810721873.XA
Other languages
English (en)
Other versions
CN108846133A (zh
Inventor
信俊昌
贾大宇
刘禄
郝琨
白砚领
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University China
Original Assignee
Northeastern University China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Northeastern University China filed Critical Northeastern University China
Priority to CN201810721873.XA priority Critical patent/CN108846133B/zh
Publication of CN108846133A publication Critical patent/CN108846133A/zh
Application granted granted Critical
Publication of CN108846133B publication Critical patent/CN108846133B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的一种基于B‑M树的区块链存储结构、B‑M树建立算法及查找算法,存储结构包括:数据序列化后的哈希值或合并后的哈希值、其包含所有叶子节点记录发起者地址的最大值和叶子节点记录发起者地址的最小值、该位置在平衡二叉树映射节点地址、指向叶子节点的左指针和右指针;梅克尔树的根是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的。本发明的基于B‑M树的区块链存储结构,既实现了梅克尔树的特点,又提高了在一条完整区块链上的数据查询效率,并使区块链支持数据范围查询。并给出了B‑M树的建立算法和基于B‑M树的查找算法。区块链基于B‑M树的存储结构,会在区块链进行在块内的局部查找时,提高区块链的查询速度。

Description

基于B-M树的区块链存储结构、B-M树建立算法及查找算法
技术领域
本发明属于计算机数据库技术领域,具体涉及基于B-M树的区块链存储结构、B-M树建立算法及查找算法。
背景技术
区块链技术起源于2008年,因为具有去中心化、透明性、开放性、自治性、匿名性和信息不可篡改等特点,被认为是继大型机、个人电脑、互联网、移动社交网络之后计算范式的第五次颠覆式创新,是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第四个里程碑。区块链技术为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。目前,区块链数据在每个块中以梅克尔树的形式存储。梅克尔树的特点是一个数据利用其生成的哈希值,可以快速的验证是否存在于区块链中。当用户想要访问区块链中的一条具体数据信息时,对于一个完全节点就需要遍历区块内利用梅克尔树存储的全部数据。但是,随着区块链应用的广泛普及,区块链中保存的数据量也会急剧增加,在一条完整的区块链上进行数据查询效率随之越来越慢。因此,如何提高在一条完整区块链上的数据查询效率则越来越重要。
发明内容
为解决上述技术问题,本发明提供一种基于B-M树的区块链存储结构、B-M树建立算法及查找算法,以提高在一条完整区块链上的数据查询效率。
本发明提供一种基于B-M树的区块链存储结构,包括:数据序列化后的哈希值或合并后的哈希值、其包含所有叶子节点记录发起者地址的最大值和叶子节点记录发起者地址的最小值、该位置在平衡二叉树映射节点地址、指向叶子节点的左指针和指向叶子节点的右指针;
梅克尔树的根是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值;
hash表示梅克尔树中的数据序列化后的哈希值或合并后的哈希值;
Min表示叶子节点记录发起者地址的最小值;
Max表示叶子节点记录发起者地址的最大值;
K表示平衡二叉树映射节点地址;
L1表示指向叶子节点的左指针;
R1表示指向叶子节点的右指针。
本发明还提供一种B-M树建立算法,包括以下步骤:
步骤1:系统先确认在一个区块产生的固定时间里要写入区块的数据;
步骤2:将每个记录发起者的用户地址根据ASCII表转换成唯一的一串十进制的数字;
步骤3:根据每个转换数字的大小,建立起一个平衡二叉树,保证树中每个节点左右两个子树的高度差的绝对值不超过1;
步骤4:从树的底部开始,逐层地将这个平衡二叉树的叶子节点的哈希值两两进行合并,组成新的哈希值,并同时保存所有合并的记录包括:发起者地址的最小值和发起者地址的最大值、该位置在平衡二叉树映射节点地址和指向叶子节点的左指针与指向叶子节点的右指针;
步骤5:重复步骤4直到合并成一个哈希值,将最终合并的结果作为B-M树根,保存在区块头中。
在本发明的B-M树建立算法中,所述步骤4具体为:
在哈希值两两合并过程中,从平衡二叉树的底部开始,左叶子节点和其父节点先做一次合并,然后将得到的合并哈希值与右叶子节点再次合并,得到父节点和左右两个叶子节点的合并在一起的哈希值,直到合并成一个哈希值。
本发明还提供一种B-M树查找算法,包括以下步骤:
步骤1:一个节点发起一个范围查询时,判断该节点是否为完全节点;
步骤2:如果这个节点是完全节点则在本地查询;如果不是完全节点则在网络中找到一个完全节点,在这个完全节点中进行查询;
步骤3:将查询数据的发起者地址根据ASCII表转换成十进制的一串数字;
步骤4:从新区块到旧区块的顺序遍历每个区块的区块头中B-M树的树根,根据B-M树根中所有叶子节点的记录发起者地址最大值和记录发起者地址最小值,判断要查询数据是否存在于这个区块中;
步骤5:如果数据不在树根的最大值和最小值范围内,则校验下一个区块;如果在范围内,则根据B-M树中保存的平衡二叉树映射节点地址进行基于平衡二叉树的查找算法进行搜索;如果搜索完整个B-M树还没有找到所查找数据,则以相同方法搜索下一个区块,直到获得需要查找的数据。
本发明提出了一种基于B-M树的区块链存储结构,既实现了梅克尔树的特点(一个节点可以在不下载整个块的情况下,验证区块中是否包含某笔交易),又提高了在一条完整区块链上的数据查询效率,并使区块链支持数据范围查询。并给出了B-M树的建立算法和基于B-M树的查找算法。区块链基于B-M树的存储结构,会在区块链进行在块内的局部查找时,提高区块链的查询速度。
附图说明
图1为本发明具体实施方式的基于B-M树的区块链存储结构;
图2为本发明具体实施方式的B-M树的建立过程图;
图3为本发明具体实施方式的B-M树的查找算法的流程图。
具体实施方式
如图1所示本发明的基于B-M树的区块链存储结构,包括:数据序列化后的哈希值或合并后的哈希值、其包含所有叶子节点记录发起者地址的最大值和叶子节点记录发起者地址的最小值、该位置在平衡二叉树映射节点地址、指向叶子节点的左指针和指向叶子节点的右指针;梅克尔树的根是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值;
hash表示梅克尔树中的数据序列化后的哈希值或合并后的哈希值;
Min表示叶子节点记录发起者地址的最小值;
Max表示叶子节点记录发起者地址的最大值;
K表示平衡二叉树映射节点地址;
L1表示指向叶子节点的左指针;
R1表示指向叶子节点的右指针。
图2为本发明的B-M树建立过程图,该B-M树建立算法,包括以下步骤:
步骤1:系统先确认在一个区块产生的固定时间里要写入区块的数据;
步骤2:将每个记录发起者的用户地址根据ASCII表转换成唯一的一串十进制的数字;
步骤3:根据每个转换数字的大小,建立起一个平衡二叉树,保证树中每个节点左右两个子树的高度差的绝对值不超过1;
步骤4:从树的底部开始,逐层地将这个平衡二叉树的叶子节点的哈希值两两进行合并,组成新的哈希值,并同时保存所有合并的记录包括:发起者用户地址的最大值和发起者用户地址的最小值、该位置在平衡二叉树映射节点地址和指向叶子节点的左指针与右指针;
具体实施时,在哈希值两两合并过程中,从平衡二叉树的底部开始,左叶子节点和其父节点先做一次合并,然后将得到的合并哈希值与右叶子节点再次合并,得到父节点和左右两个叶子节点的合并在一起的哈希值,直到合并成一个哈希值。
步骤5:重复步骤4直到合并成一个哈希值,将最终合并的结果作为B-M树根,保存在区块头中。
如图3所示,本发明的B-M树查找算法,包括以下步骤:
步骤1:一个节点发起一个范围查询时,判断该节点是否为完全节点;
步骤2:如果这个节点是完全节点则在本地查询;如果不是完全节点则在网络中找到一个完全节点,在这个完全节点中进行查询;
步骤3:将查询数据的发起者地址根据ASCII表转换成十进制的一串数字;
步骤4:从新区块到旧区块的顺序遍历每个区块的区块头中B-M树的树根,根据B-M树根中所有叶子节点的记录发起者地址最大值和记录发起者地址最小值,判断要查询数据是否存在于这个区块中;
步骤5:如果数据不在树根的最大值和最小值范围内,则校验下一个区块;如果在范围内,则根据B-M树中保存的平衡二叉树映射节点地址进行基于平衡二叉树的查找算法进行搜索;如果搜索完整个B-M树还没有找到所查找数据,则以相同方法搜索下一个区块,直到获得需要查找的数据。
本发明提出了一种基于B-M树的区块链存储结构,既实现了梅克尔树的特点(一个节点可以在不下载整个块的情况下,验证区块中是否包含某笔交易),又提高了在一条完整区块链上的数据查询效率,并使区块链支持数据范围查询。并给出了B-M树的建立算法和基于B-M树的查找算法。区块链基于B-M树的存储结构,会在区块链进行在块内的局部查找时,提高区块链的查询速度。
以上所述仅为本发明的较佳实施例,并不用以限制本发明的思想,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于B-M树的区块链存储结构的存储方法,其特征在于,包括以下步骤:
步骤1:系统先确认在一个区块产生的固定时间里要写入区块的数据;
步骤2:将每个记录发起者的用户地址根据ASCII表转换成唯一的一串十进制的数字;
步骤3:根据每个转换数字的大小,建立起一个平衡二叉树,保证树中每个节点左右两个子树的高度差的绝对值不超过1;
步骤4:从树的底部开始,逐层地将这个平衡二叉树的叶子节点的哈希值两两进行合并,组成新的哈希值,并同时保存所有合并的记录包括:发起者地址的最小值和发起者地址的最大值、被合并叶子节点的父节点在平衡二叉树映射节点地址和指向叶子节点的左指针与指向叶子节点的右指针;
步骤5:重复步骤4直到合并成一个哈希值,将最终合并的结果作为B-M树根,保存在区块头中;
所述步骤4中的新的哈希值和所有合并的记录所构成的一种区块链存储结构定义如下:
hash表示梅克尔树中的数据序列化后的哈希值或合并后的哈希值;
Min表示叶子节点记录发起者地址的最小值;
Max表示叶子节点记录发起者地址的最大值;
K表示被合并叶子节点的父节点在平衡二叉树映射节点地址;
L1表示指向叶子节点的左指针;
R1表示指向叶子节点的右指针;
其中,梅克尔树的根是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值。
2.如权利要求1所述的基于B-M树的区块链存储结构的存储方法,其特征在于,所述步骤4具体为:
在哈希值两两合并过程中,从平衡二叉树的底部开始,左叶子节点和其父节点先做一次合并,然后将得到的合并哈希值与右叶子节点再次合并,得到父节点和左右两个叶子节点的合并在一起的哈希值,直到合并成一个哈希值。
3.一种基于B-M树的区块链存储结构的查找方法,其特征在于,包括以下步骤:
步骤1:一个节点发起一个范围查询时,判断该节点是否为完全节点;
步骤2:如果这个节点是完全节点则在本地查询;如果不是完全节点则在网络中找到一个完全节点,在这个完全节点中进行查询;
步骤3:将查询数据的发起者地址根据ASCII表转换成十进制的一串数字;
步骤4:从新区块到旧区块的顺序遍历每个区块的区块头中B-M树的树根,根据B-M树根中所有叶子节点的记录发起者地址最大值和记录发起者地址最小值,判断要查询数据是否存在于这个区块中;
步骤5:如果数据不在树根的最大值和最小值范围内,则校验下一个区块;如果在范围内,则根据B-M树中保存的平衡二叉树映射节点地址进行基于平衡二叉树的查找算法进行搜索;如果搜索完整个B-M树还没有找到所查找数据,则以相同方法搜索下一个区块,直到获得需要查找的数据。
CN201810721873.XA 2018-07-04 2018-07-04 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 Active CN108846133B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810721873.XA CN108846133B (zh) 2018-07-04 2018-07-04 基于b-m树的区块链存储结构、b-m树建立算法及查找算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810721873.XA CN108846133B (zh) 2018-07-04 2018-07-04 基于b-m树的区块链存储结构、b-m树建立算法及查找算法

Publications (2)

Publication Number Publication Date
CN108846133A CN108846133A (zh) 2018-11-20
CN108846133B true CN108846133B (zh) 2020-11-27

Family

ID=64200568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810721873.XA Active CN108846133B (zh) 2018-07-04 2018-07-04 基于b-m树的区块链存储结构、b-m树建立算法及查找算法

Country Status (1)

Country Link
CN (1) CN108846133B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109559231B (zh) * 2018-12-29 2020-08-04 华东师范大学 一种面向区块链的追溯查询方法
CN110175188B (zh) * 2019-05-31 2021-05-11 杭州复杂美科技有限公司 一种区块链状态数据缓存和查询方法、设备及存储介质
CN110837505B (zh) * 2019-11-06 2022-07-19 杭州复杂美科技有限公司 状态数据存储方法、状态数据同步方法、设备和存储介质
CN111083052B (zh) * 2019-12-19 2022-01-28 度小满科技(北京)有限公司 一种基于有序平衡二叉树的分片方法及装置
CN111143837A (zh) * 2019-12-25 2020-05-12 天津南大通用数据技术股份有限公司 一种数据库安全审计记录的存储方法
CN111309731A (zh) * 2020-02-18 2020-06-19 杭州复杂美科技有限公司 一种区块存储和查询方法、设备及存储介质
CN111444163B (zh) * 2020-03-25 2023-09-22 汉海信息技术(上海)有限公司 一种地图数据管理以及电子地图回滚的方法及装置
CN111680317B (zh) * 2020-04-27 2021-05-25 华东师范大学 一种面向区块链的乐观并发保序编码方法
CN112333269A (zh) * 2020-11-03 2021-02-05 平安科技(深圳)有限公司 一种区块链网络存储结构、工作方法、装置、介质及设备
CN113220685B (zh) * 2021-05-11 2022-04-19 支付宝(杭州)信息技术有限公司 智能合约存储内容的遍历方法及装置、电子设备
CN115374124B (zh) * 2022-08-29 2023-05-12 钟士平 基于a+树数据结构存储的数据查询方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8655919B2 (en) * 2007-07-30 2014-02-18 International Business Machines Corporation Storage system and method for updating a hash tree
CN103902693B (zh) * 2014-03-28 2017-06-20 西安交通大学 一种读优化的内存数据库t树索引结构的方法
CN105095794A (zh) * 2015-07-20 2015-11-25 武汉科技大学 一种基于平衡的梅肯哈希树的动态云数据完整性验证方法
CN107016606A (zh) * 2016-12-08 2017-08-04 阿里巴巴集团控股有限公司 一种资源处理方法及装置

Also Published As

Publication number Publication date
CN108846133A (zh) 2018-11-20

Similar Documents

Publication Publication Date Title
CN108846133B (zh) 基于b-m树的区块链存储结构、b-m树建立算法及查找算法
EP3591510B1 (en) Method and device for writing service data in block chain system
CN108769111A (zh) 一种服务器连接方法、计算机可读存储介质及终端设备
CN110275864B (zh) 索引建立方法、数据查询方法及计算设备
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
CN104809190B (zh) 一种树形结构数据的数据库存取方法
CN102880628B (zh) 哈希数据存储方法和装置
US10936625B2 (en) Progressive optimization for implicit cast predicates
CN101009516A (zh) 一种进行数据同步的方法及系统
CN109885576A (zh) 一种哈希表创建方法及系统、计算设备及存储介质
CN109033278B (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN106407303A (zh) 数据存储、查询方法及装置
US8015195B2 (en) Modifying entry names in directory server
CN104021123A (zh) 用于数据迁移的方法和系统
CN111680489B (zh) 目标文本的匹配方法和装置、存储介质及电子设备
CN116955361A (zh) 存储器内密钥范围搜索方法和系统
CN107391502A (zh) 时间间隔的数据查询方法、装置及索引构建方法、装置
WO2023131218A1 (zh) 图数据的存储
CN107526762A (zh) 服务端、多数据源搜索方法和系统
CN105357247A (zh) 基于分层云对等网络的多维属性云资源区间查找方法
CN114691721A (zh) 图数据的查询方法、装置、电子设备及存储介质
CN116521956A (zh) 一种图数据库查询方法、装置、电子设备及存储介质
CN110263108B (zh) 一种基于道路网的关键词Skyline模糊查询方法及系统
CN107294855B (zh) 一种高性能计算网络下的tcp查找优化方法
US9081578B1 (en) System and method for graph conditioning with non-overlapping orderable values for efficient graph evaluation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant