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根可以方便地验证数据的正确性。但是,扫描的方法效率太低,例如,对于范围查询,所有的区块都要返回给轻客户端,以保证查询结果的完整性和完备性 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。