[发明专利]一种基于索引的面向区块链轻客户端的范围查询可验证查询方法有效
申请号: | 201910066166.6 | 申请日: | 2019-01-24 |
公开(公告)号: | CN109885615B | 公开(公告)日: | 2020-09-22 |
发明(设计)人: | 方敏;朱燕超;张召;金澈清 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/22;G06F16/2455 |
代理公司: | 上海蓝迪专利商标事务所(普通合伙) 31215 | 代理人: | 徐筱梅;张翔 |
地址: | 200241 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 索引 面向 区块 客户端 范围 查询 验证 方法 | ||
1.一种基于索引的面向区块链轻客户端的范围查询可验证查询方法,其特征在于,该方法包括以下具体步骤:
步骤S1:区块索引和层次索引结构生成
全节点在关键字区块时间戳上构造一个区块层B+-tree索引结构;对不同交易类型构造位图索引并对每一个区块在关键字交易时间戳上构造Merkle B-tree索引,记作MB-tree索引,构成一个由位图索引和MB-tree索引组成的层次索引结构;
步骤S2:全节点进行数据可验证查询
全节点根据区块层B+-tree索引结构和层次索引结构处理轻客户端发送来的查询请求,并将表示当前区块链版本的区块高度h和查询生成的验证对象VO返回给轻客户端;
步骤S3:全节点进行辅助可验证查询
全节点获取表示当前区块链版本的区块高度H,并判断其是否与步骤S2中获取到的区块高度h一致,若一致则根据区块层B+-tree索引结构和层次索引结构处理轻客户端发送来的查询请求,并将查询生成的辅助验证对象AVO返回给轻客户端;否则,不进行操作而将AVO=Ø返回给轻客户端;
步骤S4:轻客户端进行可验证查询
轻客户端根据VO和AVO来验证查询结果的完备性和完整性,得到最终正确的查询结果;其中:
所述步骤S1具体包括:
步骤 A1:全节点在关键字区块时间戳上构造一个区块层B+-tree索引结构,用来获取给定查询时间范围内的区块id;
步骤A2:全节点首先对所有的交易数据按照交易类型划分,得到多个分类;然后为每一个分类创建一个位向量,即一行二进制串数据,每一行中的第i位二进制数据代表区块i中是否包含这种交易类型的数据,1代表包含,0代表不包含;若出现一种新的交易类型,则添加新的一行二进制串数据来记录此类型交易,所有交易类型的二进制数据共同组成了层次索引的第一层索引结构——位图索引;
步骤A3:全节点对每一个区块在关键字交易id上构造一个MB-tree,MB-tree是B+树和Merkle Hash Tree 的结合体,其中每一个叶子节点都含有本身的哈希值,每一个非叶子节点中都含有其孩子节点级联的哈希值,构成了层次索引的第二层索引结构——MB-tree索引;当一个新的区块生成后,全节点为该区块构建一个在关键字交易id上的MB-tree;
所述步骤S2具体包括:
步骤B1:全节点接收来自轻客户端的查询请求,获取表示当前区块链版本的区块高度h,并根据区块层B+-tree索引结构使用范围搜索获取给定查询时间范围内的区块范围;
步骤B2:全节点根据步骤B1中获取到的区块范围查询层次索引的第一层索引结构——位图索引;全节点根据查询请求中的交易类型查询位图索引中的对应行,并按位扫描该行中在区块范围内的所有二进制数据,若为0则跳过,若为1则将对应的区块id加入包含查询结果的一个区块集合;
步骤B3:全节点根据步骤B2中获取到的区块集合查询层次索引的第二层索引结构——MB-tree索引;对于在区块集合内的任意区块i,全节点将在该区块i的MB-tree上执行范围搜索来生成验证对象,并将其添加到VO中;
步骤B4:全节点将当前的区块高度h和查询生成的验证对象VO返回给轻客户端;
所述步骤S3具体包括:
步骤C1:全节点接收来自轻客户端的查询请求和区块高度h,获取表示当前区块链版本的区块高度H,并判断其是否与h一致,若一致则进行步骤C2,否则进行步骤C6;
步骤C2: 全节点根据区块层B+-tree索引结构使用范围搜索获取给定查询范围内包含有查询交易类型的区块范围;
步骤C3:全节点根据步骤C2中获取到的区块范围查询层次索引的第一层索引结构——位图索引;全节点根据查询请求中的交易类型查询位图索引中的对应行,并按位扫描该行中在区块范围内的所有二进制数据,若为0则跳过,若为1则将对应的区块id加入包含查询结果的一个区块集合;
步骤C4:全节点根据步骤C3中获取到的区块集合查询层次索引的第二层索引结构——MB-tree索引;对于在区块集合内的任意区块i,全节点将获取该区块i的MB-tree根Rooti,并将区块id号i和对应的Rooti将添加到AVO中;
步骤C5:全节点将查询生成的辅助验证对象AVO返回给轻客户端;
步骤C6:全节点不进行操作而将AVO=Ø返回给轻客户端;
所述步骤S4具体包括:
步骤D1:轻客户端获取步骤B4中返回的验证对象VO,以及步骤C5中返回的辅助验证对象AVO;
步骤D2:对VO中的每一个区块i,轻客户端通过VO中的每一个区块的VOi重新构建相应的MB-tree根,并将其与AVO中包含的区块i对应的索引根进行对比来验证;
步骤D3:如果VO中所有的区块的验证结果都是正确的,则查询结果是正确的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910066166.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:集群化数据规则处理方法
- 下一篇:一种信息安全获取及重要信息识别方法和装置