一种基于索引的面向区块链轻客户端的范围查询可验证查询方法技术

技术编号:21361220 阅读:33 留言:0更新日期:2019-06-15 09:18
本发明专利技术公开了一种基于索引的面向区块链轻客户端的范围查询可验证查询方法,包括区块索引和层次索引结构生成步骤、全节点进行数据可验证查询步骤、全节点进行辅助可验证查询步骤和轻客户端进行可验证查询步骤。为支持有效地访问区块数据和可验证查询处理过程,本发明专利技术提出了一种支持可验证查询的层次索引结构,并提出基于该索引的面向区块链轻客户端的范围查询可验证查询方法。本发明专利技术克服了现有技术下全节点扫描区块效率低,全节点与轻客户端通信开销大的缺陷,以及解决了在不可信的区块链网络中数据查询验证困难的问题,实现了轻客户端的可信数据查询验证。

An Index-based Verifiable Query Method for Scope Query of Light Client Oriented Block Chain

The invention discloses an index-based range query verifiable query method for block chain light client, which includes block index and hierarchical index structure generation step, data verifiable query step for whole node, auxiliary verifiable query step for whole node and verifiable query step for light client. In order to support effective access to block data and verifiable query processing, the present invention proposes a hierarchical index structure supporting verifiable query, and proposes a range query verifiable query method based on the index for block chain light client. The invention overcomes the shortcomings of low efficiency of whole node scanning block and high communication overhead between whole node and light client under the existing technology, and solves the problem of difficult data query and verification in untrustworthy block chain network, and realizes the reliable data query and verification of light client.

【技术实现步骤摘要】
一种基于索引的面向区块链轻客户端的范围查询可验证查询方法
本专利技术属于区块链数据库
,尤其涉及基于索引的面向区块链轻客户端的范围查询可验证查询方法。
技术介绍
全节点是拥有完整区块链账本的节点,负责验证以及转发网络上的交易和区块。由于无需信任的环境(开放的网络)以及区块链本身的性质,每个全节点都需要下载并验证所有的区块,因此所有区块中的所有交易信息都需要经过全节点的验证。然后,下载并验证所有区块信息会消耗大量的时间和资源。例如,完全同步以太坊区块链至少需要SSD(固态硬盘),因为HDD(机械硬盘)跟不上每秒的输入输出需求。轻客户端或者轻节点是一种连接全节点以实现与区块链的交互的软件,与全节点不同的是,轻客户端不需要不停的运行,也不需要向区块链中读取写入大量的信息,如用户所使用的手持设备,轻客户端通常只存储了区块头。实际上,轻客户端不需要直接与区块链交互,它们使用全节点作为中介,依赖全节点来实现许多操作。为了执行查询,轻客户端就需要查询存储了所有区块数据的不可信的节点。然而,这种查询下的结果可能并不正确,因此轻客户端就必须能够验证查询结果。为了处理这种情况,比特币使用Merkle哈希树(MHT)提出了简单支付验证(SPV),SPV支持轻客户端的交易验证,可以确定某个特定的交易是否在区块中,SPV节点只需下载区块头,而不用下载包含在每个区块中的交易信息。如果通过扫描所有的区块来查询数据,则重建被访问区块的MB-tree根可以方便地验证数据的正确性。但是,扫描的方法效率太低,例如,对于范围查询,所有的区块都要返回给轻客户端,以保证查询结果的完整性和完备性。而且,若一次范围查询涉及到的区块数量较多,则会造成很大的通信开销,导致查询效率低下,同时目前已有的区块链系统并不能实现丰富的可验证查询。所以为了支持区块链中的可验证索引,验证索引结构的提出是非常有必要的。以太坊提出了MerklePatriciaTree(MPT),其中每个区块都存储了一个可验证结构的快照。然而,树是非常大的,因为树中的每一个节点的变化都被记录下来了。而且,MPT仅支持账户状态的可验证查询。因此,有必要基于验证结构重新实现各种可验证查询。
技术实现思路
本专利技术的目的是为了克服现有技术下全节点扫描区块效率低,全节点与轻客户端通信开销大的缺陷,以及解决在不可信的区块链网络中数据查询验证困难的问题,提出了一种基于索引的面向区块链轻客户端的范围查询可验证查询方法。实现本专利技术目的的具体技术方案是:一种基于索引的面向区块链轻客户端的范围查询可验证查询方法,根据全节点返回验证对象的不同本专利技术将全节点分为全节点和全节点,其特征在于,该方法包括以下具体步骤:步骤S1:区块索引和层次索引结构生成此步骤在关键字区块时间戳上构造一个区块层B+-tree索引结构,获取给定查询时间范围内包含有查询交易类型的区块范围;并对不同交易类型构造位图索引并对每一个区块在关键字交易id上构造MerkleB-tree(MB-tree)索引,构造出一个由位图索引和MB-tree索引组成的层次索引结构;具体包括:步骤A1:全节点在关键字区块时间戳上构造一个区块层B+-tree索引结构,用来获取给定查询时间范围内的区块id;步骤A2:全节点首先对所有的交易数据按照交易类型划分,得到多个分类;然后为每一个分类创建一个位向量,即一行二进制串数据,每一行中的第i位二进制数据代表区块i中是否包含这种交易类型的数据,1代表包含,0代表不包含;若出现一种新的交易类型,则添加新的一行二进制串数据来记录此类型交易,所有交易类型的二进制数据共同组成了层次索引的第一层索引结构——位图索引;步骤A3:全节点对每一个区块在关键字交易id上构造了一个MB-tree,MB-tree是B+树和MerkleHashTree(MHT)的结合体,其中每一个叶子节点都含有本身的哈希值,每一个非叶子节点中都含有其孩子节点级联的哈希值,构成了层次索引的第二层索引结构——MB-tree索引;当一个新的区块生成后,全节点需要为该区块构建一个在关键字交易id上的MB-tree。步骤S2:全节点进行数据可验证查询此步骤中全节点根据区块层B+-tree索引结构和层次索引结构来处理轻客户端发送来的查询请求,并将表示当前区块链版本的区块高度h和查询生成的验证对象(VerificationObject,VO)返回给轻客户端;具体包括:步骤B1:全节点获取来自轻客户端的查询请求,获取表示当前区块链版本的区块高度h,并根据区块层B+-tree索引结构使用范围搜索获取给定查询时间范围内包内的区块范围;步骤B2:全节点根据步骤B1中获取到的区块范围查询层次索引的第一层索引结构——位图索引;全节点根据查询请求中的交易类型查询位图索引中的对应行,并按位扫描该行中在区块范围内的所有二进制数据,若为0则跳过,若为1则将对应的区块id加入包含查询结果的一个区块集合;步骤B3:全节点根据步骤B2中获取到的区块集合查询层次索引的第二层索引结构——MB-tree索引;对于在区块集合内的任意区块i,全节点将在该区块i的MB-tree上执行范围搜索来生成验证对象,并将其添加到VO中;步骤B4:全节点将当前的区块高度h和查询生成的验证对象VO返回给轻客户端。步骤S3:全节点进行辅助可验证查询此步骤中全节点首先会根据接收到的区块高度h来判断自己当前区块链版本是否与全节点一致,若一致则会根据区块层B+-tree索引结构和层次索引结构来处理轻客户端发送来的查询请求,并将查询生成的辅助验证对象(AuxiliaryVerificationObject,AVO)返回给轻客户端;否则,不进行操作而将返回给轻客户端;具体包括:步骤C1:全节点获取来自轻客户端的查询请求和区块高度h,并根据接收到的区块高度h来判断自己当前区块链版本是否与全节点一致,若一致则进行步骤C2,否则进行步骤C6;步骤C2:全节点根据区块层B+-tree索引结构使用范围搜索获取给定查询范围内包含有查询交易类型的区块范围;步骤C3:全节点根据步骤C2中获取到的区块范围查询层次索引的第一层索引结构——位图索引;全节点根据查询请求中的交易类型查询位图索引中的对应行,并按位扫描该行中在区块范围内的所有二进制数据,若为0则跳过,若为1则将对应的区块id加入包含查询结果的一个区块集合;步骤C4:全节点根据步骤C3中获取到的区块集合查询层次索引的第二层索引结构——MB-tree索引;对于在区块集合内的任意区块i,全节点将获取该区块i的MB-tree根Rooti,并将区块idi和对应的Rooti将添加到AVO中;步骤C5:全节点将查询生成的辅助验证对象AVO返回给轻客户端;步骤C6:全节点不进行操作而将返回给轻客户端。步骤S4:轻客户端进行可验证查询此步骤中轻客户端将根据VO和AVO来验证查询结果的完备性和完整性,得到最终正确的查询结果;具体包括:步骤D1:轻客户端获取步骤B4中返回的验证对象VO,以及步骤C5中返回的辅助验证对象AVOs;步骤D2:对VO中的每一个区块i,轻客户端通过VO中的每一个区块的VOi重新构建相应的MB-tree根,并将其与AVO中包含的区块i对应的索引根进行对比来验证;步骤D3:如果VO中所有的本文档来自技高网
...

【技术保护点】
1.一种基于索引的面向区块链轻客户端的范围查询可验证查询方法,其特征在于,该方法包括以下具体步骤:步骤S1:区块索引和层次索引结构生成全节点在关键字区块时间戳上构造一个区块层B

【技术特征摘要】
1.一种基于索引的面向区块链轻客户端的范围查询可验证查询方法,其特征在于,该方法包括以下具体步骤:步骤S1:区块索引和层次索引结构生成全节点在关键字区块时间戳上构造一个区块层B+-tree索引结构;对不同交易类型构造位图索引并对每一个区块在关键字交易时间戳上构造MerkleB-tree索引,记作MB-tree索引,构成一个由位图索引和MB-tree索引组成的层次索引结构;步骤S2:全节点进行数据可验证查询全节点根据区块层B+-tree索引结构和层次索引结构处理轻客户端发送来的查询请求,并将表示当前区块链版本的区块高度h和查询生成的验证对象VO返回给轻客户端;步骤S3:全节点进行辅助可验证查询全节点获取表示当前区块链版本的区块高度H,并判断其是否与步骤S2中获取到的区块高度h一致,若一致则根据区块层B+-tree索引结构和层次索引结构处理轻客户端发送来的查询请求,并将查询生成的辅助验证对象AVO返回给轻客户端;否则,不进行操作而将AVO=Ø返回给轻客户端;步骤S4:轻客户端进行可验证查询轻客户端根据VO和AVO来验证查询结果的完备性和完整性,得到最终正确的查询结果。2.根据权利要求1所述的面向区块链轻客户端的范围查询可验证查询方法,其特征在于,所述步骤S1具体包括:步骤A1:全节点在关键字区块时间戳上构造一个区块层B+-tree索引结构,用来获取给定查询时间范围内的区块id;步骤A2:全节点首先对所有的交易数据按照交易类型划分,得到多个分类;然后为每一个分类创建一个位向量,即一行二进制串数据,每一行中的第i位二进制数据代表区块i中是否包含这种交易类型的数据,1代表包含,0代表不包含;若出现一种新的交易类型,则添加新的一行二进制串数据来记录此类型交易,所有交易类型的二进制数据共同组成了层次索引的第一层索引结构——位图索引;步骤A3:全节点对每一个区块在关键字交易id上构造一个MB-tree,MB-tree是B+树和MerkleHashTree的结合体,其中每一个叶子节点都含有本身的哈希值,每一个非叶子节点中都含有其孩子节点级联的哈希值,构成了层次索引的第二层索引结构——MB-tree索引;当一个新的区块生成后,全节点为该区块构建一个在关键字交易id上的MB-tree。3.根据权利要求1所述的面向区块链轻客户端的范围查询可验证查询方法,其特征在于,所述步骤S2具体包括:步骤B1:全节点接收来自轻客户端的查询请求,获取表示...

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

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

1