CN108846133A - 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 - Google Patents
基于b-m树的区块链存储结构、b-m树建立算法及查找算法 Download PDFInfo
- Publication number
- CN108846133A CN108846133A CN201810721873.XA CN201810721873A CN108846133A CN 108846133 A CN108846133 A CN 108846133A CN 201810721873 A CN201810721873 A CN 201810721873A CN 108846133 A CN108846133 A CN 108846133A
- Authority
- CN
- China
- Prior art keywords
- tree
- node
- cryptographic hash
- block
- 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.)
- Granted
Links
- 230000008520 organization Effects 0.000 title claims abstract description 16
- 238000013507 mapping Methods 0.000 claims abstract description 13
- 238000004364 calculation method Methods 0.000 claims abstract description 5
- 230000000694 effects Effects 0.000 claims abstract description 4
- 101150060512 SPATA6 gene Proteins 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 7
- 241001582888 Lobus Species 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 229910000510 noble metal Inorganic materials 0.000 description 1
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树建立算法及查找算法。
背景技术
区块链技术起源于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 (4)
1.一种基于B-M树的区块链存储结构,其特征在于,包括:数据序列化后的哈希值或合并后的哈希值、其包含所有叶子节点记录发起者地址的最大值和叶子节点记录发起者地址的最小值、该位置在平衡二叉树映射节点地址、指向叶子节点的左指针和指向叶子节点的右指针;
梅克尔树的根是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值;
hash表示梅克尔树中的数据序列化后的哈希值或合并后的哈希值;
Min表示叶子节点记录发起者地址的最小值;
Max表示叶子节点记录发起者地址的最大值;
K表示平衡二叉树映射节点地址;
L1表示指向叶子节点的左指针;
R1表示指向叶子节点的右指针。
2.一种B-M树建立算法,其特征在于,包括以下步骤:
步骤1:系统先确认在一个区块产生的固定时间里要写入区块的数据;
步骤2:将每个记录发起者的用户地址根据ASCII表转换成唯一的一串十进制的数字;
步骤3:根据每个转换数字的大小,建立起一个平衡二叉树,保证树中每个节点左右两个子树的高度差的绝对值不超过1;
步骤4:从树的底部开始,逐层地将这个平衡二叉树的叶子节点的哈希值两两进行合并,组成新的哈希值,并同时保存所有合并的记录包括:发起者地址的最小值和发起者地址的最大值、该位置在平衡二叉树映射节点地址和指向叶子节点的左指针与指向叶子节点的右指针;
步骤5:重复步骤4直到合并成一个哈希值,将最终合并的结果作为B-M树根,保存在区块头中。
3.如权利要求2所述的B-M树建立算法,其特征在于,所述步骤4具体为:
在哈希值两两合并过程中,从平衡二叉树的底部开始,左叶子节点和其父节点先做一次合并,然后将得到的合并哈希值与右叶子节点再次合并,得到父节点和左右两个叶子节点的合并在一起的哈希值,直到合并成一个哈希值。
4.一种B-M树查找算法,其特征在于,包括以下步骤:
步骤1:一个节点发起一个范围查询时,判断该节点是否为完全节点;
步骤2:如果这个节点是完全节点则在本地查询;如果不是完全节点则在网络中找到一个完全节点,在这个完全节点中进行查询;
步骤3:将查询数据的发起者地址根据ASCII表转换成十进制的一串数字;
步骤4:从新区块到旧区块的顺序遍历每个区块的区块头中B-M树的树根,根据B-M树根中所有叶子节点的记录发起者地址最大值和记录发起者地址最小值,判断要查询数据是否存在于这个区块中;
步骤5:如果数据不在树根的最大值和最小值范围内,则校验下一个区块;如果在范围内,则根据B-M树中保存的平衡二叉树映射节点地址进行基于平衡二叉树的查找算法进行搜索;如果搜索完整个B-M树还没有找到所查找数据,则以相同方法搜索下一个区块,直到获得需要查找的数据。
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 true CN108846133A (zh) | 2018-11-20 |
CN108846133B CN108846133B (zh) | 2020-11-27 |
Family
ID=64200568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810721873.XA Expired - Fee Related CN108846133B (zh) | 2018-07-04 | 2018-07-04 | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108846133B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559231A (zh) * | 2018-12-29 | 2019-04-02 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
CN110837505A (zh) * | 2019-11-06 | 2020-02-25 | 杭州复杂美科技有限公司 | 状态数据存储方法、状态数据同步方法、设备和存储介质 |
CN111083052A (zh) * | 2019-12-19 | 2020-04-28 | 上海优扬新媒信息技术有限公司 | 一种基于有序平衡二叉树的分片方法及装置 |
CN111143837A (zh) * | 2019-12-25 | 2020-05-12 | 天津南大通用数据技术股份有限公司 | 一种数据库安全审计记录的存储方法 |
CN111309731A (zh) * | 2020-02-18 | 2020-06-19 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111444163A (zh) * | 2020-03-25 | 2020-07-24 | 汉海信息技术(上海)有限公司 | 一种地图数据管理以及电子地图回滚的方法及装置 |
CN111680317A (zh) * | 2020-04-27 | 2020-09-18 | 华东师范大学 | 一种面向区块链的乐观并发保序编码方法 |
CN112333269A (zh) * | 2020-11-03 | 2021-02-05 | 平安科技(深圳)有限公司 | 一种区块链网络存储结构、工作方法、装置、介质及设备 |
CN113220685A (zh) * | 2021-05-11 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 智能合约存储内容的遍历方法及装置、电子设备 |
CN115374124A (zh) * | 2022-08-29 | 2022-11-22 | 钟士平 | 基于a+树数据结构存储的数据查询方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090037491A1 (en) * | 2007-07-30 | 2009-02-05 | International Business Machines Corporation | Storage system and method for updating a hash tree |
CN103902693A (zh) * | 2014-03-28 | 2014-07-02 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN105095794A (zh) * | 2015-07-20 | 2015-11-25 | 武汉科技大学 | 一种基于平衡的梅肯哈希树的动态云数据完整性验证方法 |
CN107016606A (zh) * | 2016-12-08 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 一种资源处理方法及装置 |
-
2018
- 2018-07-04 CN CN201810721873.XA patent/CN108846133B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090037491A1 (en) * | 2007-07-30 | 2009-02-05 | International Business Machines Corporation | Storage system and method for updating a hash tree |
CN103902693A (zh) * | 2014-03-28 | 2014-07-02 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN105095794A (zh) * | 2015-07-20 | 2015-11-25 | 武汉科技大学 | 一种基于平衡的梅肯哈希树的动态云数据完整性验证方法 |
CN107016606A (zh) * | 2016-12-08 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 一种资源处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
桑海: ""区块链~Merkle Tree(默克尔树)算法解析"", 《WWW.CNBLOGS.COM/SANGHAI/P/7608701.HTML》 * |
王平等: ""一种优化的T-tree索引算法"", 《计算机应用与软件》 * |
许钟华等: ""基于MHT的云环境下数据完整性检验方案"", 《计算机与网络》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559231A (zh) * | 2018-12-29 | 2019-04-02 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
CN110175188A (zh) * | 2019-05-31 | 2019-08-27 | 杭州复杂美科技有限公司 | 一种区块链状态数据缓存和查询方法、设备及存储介质 |
CN110837505B (zh) * | 2019-11-06 | 2022-07-19 | 杭州复杂美科技有限公司 | 状态数据存储方法、状态数据同步方法、设备和存储介质 |
CN110837505A (zh) * | 2019-11-06 | 2020-02-25 | 杭州复杂美科技有限公司 | 状态数据存储方法、状态数据同步方法、设备和存储介质 |
CN111083052A (zh) * | 2019-12-19 | 2020-04-28 | 上海优扬新媒信息技术有限公司 | 一种基于有序平衡二叉树的分片方法及装置 |
CN111083052B (zh) * | 2019-12-19 | 2022-01-28 | 度小满科技(北京)有限公司 | 一种基于有序平衡二叉树的分片方法及装置 |
CN111143837A (zh) * | 2019-12-25 | 2020-05-12 | 天津南大通用数据技术股份有限公司 | 一种数据库安全审计记录的存储方法 |
CN111309731A (zh) * | 2020-02-18 | 2020-06-19 | 杭州复杂美科技有限公司 | 一种区块存储和查询方法、设备及存储介质 |
CN111444163A (zh) * | 2020-03-25 | 2020-07-24 | 汉海信息技术(上海)有限公司 | 一种地图数据管理以及电子地图回滚的方法及装置 |
CN111444163B (zh) * | 2020-03-25 | 2023-09-22 | 汉海信息技术(上海)有限公司 | 一种地图数据管理以及电子地图回滚的方法及装置 |
CN111680317A (zh) * | 2020-04-27 | 2020-09-18 | 华东师范大学 | 一种面向区块链的乐观并发保序编码方法 |
CN111680317B (zh) * | 2020-04-27 | 2021-05-25 | 华东师范大学 | 一种面向区块链的乐观并发保序编码方法 |
CN112333269A (zh) * | 2020-11-03 | 2021-02-05 | 平安科技(深圳)有限公司 | 一种区块链网络存储结构、工作方法、装置、介质及设备 |
CN113220685B (zh) * | 2021-05-11 | 2022-04-19 | 支付宝(杭州)信息技术有限公司 | 智能合约存储内容的遍历方法及装置、电子设备 |
CN113220685A (zh) * | 2021-05-11 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 智能合约存储内容的遍历方法及装置、电子设备 |
CN115374124A (zh) * | 2022-08-29 | 2022-11-22 | 钟士平 | 基于a+树数据结构存储的数据查询方法 |
CN115374124B (zh) * | 2022-08-29 | 2023-05-12 | 钟士平 | 基于a+树数据结构存储的数据查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108846133B (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846133A (zh) | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 | |
Jain et al. | Contextual ontology alignment of lod with an upper ontology: A case study with proton | |
Cohen et al. | A comparison of string metrics for matching names and records | |
AU2008304255B2 (en) | Method and system for associating data records in multiple languages | |
US8370355B2 (en) | Managing entities within a database | |
US8166074B2 (en) | Index data structure for a peer-to-peer network | |
Li et al. | Semantic integration in text: From ambiguous names to identifiable entities | |
US7685093B1 (en) | Method and system for comparing attributes such as business names | |
CN102346747B (zh) | 在数据模型中查找参数的方法 | |
WO2007139751A2 (en) | Method and system for indexing information about entities with respect to hierarchies | |
CN105069094B (zh) | 一种基于语义理解的空间关键字索引方法 | |
US8015195B2 (en) | Modifying entry names in directory server | |
CN106909630A (zh) | 基于动态词库的敏感词过滤方法及系统 | |
Cortis et al. | Discovering semantic equivalence of people behind online profiles | |
CN108446976A (zh) | 一种公积金转移方法、计算机可读存储介质及终端设备 | |
Mpinda et al. | Evaluation of graph databases performance through indexing techniques | |
JP2011523750A (ja) | X500データモデルをリレーショナル・データベースにマッピングするための方法 | |
CN107577714A (zh) | 一种基于HBase的数据查询方法 | |
CN106970918B (zh) | 生成国际地址唯一标识符的方法及装置 | |
TWI385543B (zh) | Data Synchronization System and Method for Establishing Mediation Data in Directory Service Format | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及系统 | |
CN105871726A (zh) | 一种基于公共前缀的动态添加树节点和单元的模式匹配方法 | |
CN108549679A (zh) | 用于url分析系统的文件扩展名快速匹配方法和装置 | |
CN107679099B (zh) | 访问控制要素图构建方法、策略描述方法、访问控制判定方法及框架 | |
CN112463890B (zh) | 基于区块链和机器学习的跨系统数据共享方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201127 |
|
CF01 | Termination of patent right due to non-payment of annual fee |