一种基于位图索引的区块链轻客户端验证查询方法技术

技术编号:21140992 阅读:45 留言:0更新日期:2019-05-18 05:08
本发明专利技术公开了一种基于位图索引的区块链轻客户端验证查询方法,包括位图索引及交易验证信息生成步骤,查询请求步骤,区块扫描步骤,查询处理步骤、数据验证步骤和计算查询结果步骤:位图索引及交易验证信息生成步骤是对不同交易类型构造索引结构和验证信息;发送查询请求步骤是轻客户端将查询请求发送至全节点;区块扫描步骤是全节点根据位图索引结构,快速扫描得到需要被查询的所有区块;数据查询步骤是全节点通过查询得到查询结果集,并返回给轻客户端;数据验证步骤是轻客户端对全节点返回的结果集进行验证,得到正确的查询结果集;计算查询结果步骤是轻客户端基于正确的查询结果集进行计算,得到最终的查询结果。

【技术实现步骤摘要】
一种基于位图索引的区块链轻客户端验证查询方法
本专利技术属于区块链
,尤其涉及基于位图索引的面向区块链轻客户端的验证查询方法。
技术介绍
区块链系统在发展的早期阶段只有一种节点,就是现在所说的全节点。这种全节点负责验证以及转发网络上的交易和区块。由于无需信任的环境(开放的网络)以及区块链本身的性质,每个全节点都需要下载并验证所有的区块,因此所有区块中的所有交易信息都需要经过全节点的验证。现在,有些组织以及个人运行着全节点是因为他们的工作需求。比如说矿工,区块浏览器以及交易所。个人用户可能会因为全节点是与区块链交互的最安全的方式而运行一个全节点。在规模小很多的情况下,他们也会因为纯粹的利他因素而来帮助维护网络。但是每时每刻运行着一个全节点需要消耗大量的资源。虽然全节点对网络至关重要,但是除了矿工之外,让普通用户运行全节点,来将其当作客户端是一种很大的负担。轻客户端或者轻节点是一种连接全节点以实现与区块链的交互的软件。与全节点不同的是,轻客户端不需要不停地运行,也不需要向区块链中读取写入大量信息。实际上,轻客户端不需要直接与区块链交互,它们使用全节点作为中介。轻客户端依赖全节点实现许多操作,比如请求最新的区块头、请求账户的余额等。与全节点相比,轻客户端只需要下载区块链的区块头,提供了更好的终端用户体验。轻客户端是区块链生态系统中十分重要的元素。它们可以帮助用户以安全、分散的方式访问区块链并与区块链进行交互而无需同步完整的区块链。然而,轻客户端进行查询时,全节点会扫描所有的区块,从中筛选出查询请求所涉及到的部分区块。随着时间的推移,整个系统中的区块数会越来越多,扫描所有的区块会给全节点造成很大的开销,导致全节点查询效率低下。并且,全节点会将查询请求涉及的全部区块中的全部数据都返回给轻客户端。轻客户端通过重建每个区块的MerkleHashTree来验证数据正确性。若一次范围查询涉及到的区块数量较多,则会给轻客户端造成很大的通信开销,严重影响轻客户端查询性能。
技术实现思路
本专利技术的目的是为了克服了现有技术的全节点扫描区块效率低,全节点与轻客户端通信开销大的缺陷,提出了一种基于位图索引的面向区块链轻客户端的验证查询方法。实现本专利技术目的的具体技术方案是:一种基于位图索引的面向区块链轻客户端的验证查询方法,该方法包括以下具体步骤:步骤1:位图索引及交易验证信息生成该步骤是对不同交易类型构造索引结构和验证信息,提高查询及验证效率,具体包括:A1:全节点对所有的交易数据按照类型划分,得到多个分类;A2:全节点为每一个分类创建一行二进制串数据,每一行中的第i位二进制数据代表区块i中是否包含这种交易类型的数据,1代表包含,0代表不包含;A3:若出现一种新的交易类型,则添加新的一行二进制串数据来记录此类型交易,所有交易类型的二进制数据共同组成了位图索引结构;A4:全节点在每一个区块中都为每一种交易计算出验证信息。步骤2:查询请求该步骤是轻客户端将查询请求发送至全节点,具体包括:B1:轻客户端组装好查询请求;B2:轻客户端将查询请求发送至全节点,等待接收返回结果。步骤3:区块扫描该步骤是全节点根据位图索引结构,快速扫描得到需要被查询的所有区块,具体包括;C1:创建区块扫描结果集,并将区块扫描结果集初始化为空;C2:为查询请求所涉及到的每种交易类型创建一个区块列表键值对,键是交易类型,值是包含这种交易类型数据的区块列表,比如<donate,BlockList<block1,block2,…>>;C3:全节点根据交易类型找到位图索引中对应的行,依次对每种交易类型进行区块扫描;C4:按位扫描该行中所有的二进制数据,若为0则跳过,若为1则将对应的区块加入步骤C2中创建的区块扫描列表中;C5:每扫描完一种交易类型后,将对应的键值对放入区块扫描结果集中,直至扫描完所有的交易类型。最终得到的区块扫描结果集包含了每种交易类型及该种类型的交易数据所在的所有区块,如<<donate,BlockList<block1,…>>,<borrow,BlockList<block2,…>>>。步骤4:查询处理该步骤是全节点通过查询得到查询结果集,并返回给轻客户端,具体包括;D1:创建数据查询结果集,并将数据查询结果集初始化为空;D2:为区块扫描结果集中的每个区块列表键值对创建一个交易列表键值对,键是交易类型,和区块列表键值对中的键相同,值是属于这种交易类型的交易数据列表,比如<donate,TransactionList<transaction1,transaction2,…>>;D3:全节点依次遍历区块扫描结果集中的区块列表键值对,取出每个键值对中的区块列表,进行查询;D4:遍历区块列表中所有区块中的所有交易数据,若交易数据的交易类型与步骤D3中的键值对的键相同,则将交易数据加入步骤D2创建的交易数据列表中,并对交易数据进行处理;D5:每遍历完一个区块列表键值对后,将键值对放入数据查询结果集中,直至查询完所有的区块扫描列表。最终得到的数据查询结果集包含了每种交易类型及该种交易类型所有的交易数据,如<<donate,TransactionList<transaction1,…>>,<borrow,TransactionList<transaction1,…>>>;D6:将步骤D1创建的查询结果集返回给轻客户端。步骤5:数据验证该步骤是轻客户端对全节点返回的结果集进行验证,得到正确的查询结果集,具体包括:E1:轻客户端使用步骤D6中返回的查询结果集,在每一个区块中都为每一种交易计算验证信息;E2:用验证信息组装验证请求,并发送给网络中其他多个全节点;E3:其他全节点在本地验证后,将验证结果返回给轻客户端;E4:轻客户端通过步骤E1和E3中得到的验证结果来判断步骤D6中返回的查询结果集是否正确完整;E5:若验证通过则得到正确完整的查询结果集,若验证未通过,则轻客户端向其他全节点重新发送查询请求。步骤6:计算查询结果该步骤是轻客户端基于正确的查询结果集进行计算,得到最终的查询结果,具体包括:F1:对步骤B1中的查询请求进行判断,若是范围查询则执行步骤F2,若是连接查询则执行步骤F3;F2:使用范围查询算法对查询结果集进行查询,得到最终的查询结果;F3:使用连接查询算法对查询结果集进行查询,得到最终的查询结果。其中,步骤A4或E1所述在每一个区块中为每一种交易计算验证信息,具体包括:G1:统计出本区块所有的交易种类,分别为每一种交易求解验证信息;G2:将本区块中某一种类的交易数据全部取出,按照交易产生时间排序,将所有交易数据作为哈希函数的参数,求解哈希值;G3:本区块之前是否存在区块,若有则执行步骤G4,否则执行步骤G5;G4:将前一个区块中相同种类交易的验证信息取出,和步骤G2中的哈希值一起再次作为哈希函数的参数,求解哈希值,该哈希值就是此种交易类型在本区块中的验证信息;G5:步骤G2中求得的哈希值就是此种交易类型在本区块中的验证信息。其中,步骤D4所述对交易数据进行处理,具体包括:H本文档来自技高网
...

【技术保护点】
1.一种基于位图索引的区块链轻客户端验证查询方法,其特征在于,该方法包括以下具体步骤:步骤1:位图索引及交易验证信息生成对不同交易类型构造索引结构和验证信息;步骤2:查询请求轻客户端将查询请求发送至全节点;步骤3:区块扫描全节点根据位图索引结构,快速扫描得到需要被查询的所有区块;步骤4:查询处理全节点通过查询得到查询结果集,并返回给轻客户端;步骤5:数据验证轻客户端对全节点返回的结果集进行验证,得到正确的查询结果集;步骤6:计算查询结果轻客户端基于正确的查询结果集进行计算,得到最终的查询结果。

【技术特征摘要】
1.一种基于位图索引的区块链轻客户端验证查询方法,其特征在于,该方法包括以下具体步骤:步骤1:位图索引及交易验证信息生成对不同交易类型构造索引结构和验证信息;步骤2:查询请求轻客户端将查询请求发送至全节点;步骤3:区块扫描全节点根据位图索引结构,快速扫描得到需要被查询的所有区块;步骤4:查询处理全节点通过查询得到查询结果集,并返回给轻客户端;步骤5:数据验证轻客户端对全节点返回的结果集进行验证,得到正确的查询结果集;步骤6:计算查询结果轻客户端基于正确的查询结果集进行计算,得到最终的查询结果。2.根据权利要求1所述的区块链轻客户端验证查询方法,其特征在于,所述步骤1具体包括:A1:全节点对所有的交易数据按照交易类型划分,得到多个分类;A2:全节点为每一个分类创建一个位向量,即一行二进制串数据,每一行中的第i位二进制数据代表区块i中是否包含这种交易类型的数据,1代表包含,0代表不包含;A3:若出现一种新的交易类型,则添加新的一行二进制串数据来记录此类型交易,所有交易类型的二进制数据共同组成了位图索引结构;A4:全节点在每一个区块中都为每一种交易计算出验证信息。3.根据权利要求1所述的区块链轻客户端验证查询方法,其特征在于,所述步骤2具体包括:B1:轻客户端组装好查询请求;B2:轻客户端将查询请求发送至全节点,等待接收返回结果。4.根据权利要求1所述的区块链轻客户端验证查询方法,其特征在于,所述步骤3具体包括:C1:创建区块扫描结果集,并将其初始化为空;C2:为查询请求所涉及到的每种交易类型创建一个键值对,键是交易类型,值是包含这种交易类型数据的区块列表;C3:全节点根据交易类型找到位图索引中对应的行,依次对每种交易类型进行区块扫描;C4:按位扫描该行中所有的二进制数据,若为0则跳过,若为1则将对应的区块加入步骤C2中创建的区块扫描列表中;C5:每扫描完一种交易类型后,将对应的键值对放入步骤C1创建的区块扫描结果集中,直至扫描完所有的交易类型;最终得到的区块扫描结果集包含了每种交易类型及该种类型的交易数据所在的所有区块。5.根据权利要求1所述的区块链轻客户端验证查询方法,其特征在于,所述步骤4具体包括:D1:创建数据查询结果集,并将其初始化为空;D2:为区块扫描结果集中的每个区块列表键值对创建一个键值对,键是交易类型,和区块列表键值对中的键相同,值是属于这种交易类型的交易数据列表;D3:全节点依次遍历区块扫描结果集中的区块列表键值对,取出每个键值对中的区块列表,进行查询;D4:遍...

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

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

1