本发明涉及区块链,尤其涉及一种基于区块链的供应链产品溯源数据多条件查询方法及装置。
背景技术:
1、随着供应链的逐步扩大,数据量急剧增多,导致供应链管理过程中参与方对数据查询功能的依赖逐渐增加,从而对数据查询的性能和结果提出了更为严格的要求。传统的原生区块链,在查询交易数据时只能通过交易id(标识)进行检索,对交易中存在的某些信息进行查询时只能通过遍历区块来定位交易,再通过查询交易中的内容来判断交易是否满足条件。再如hyperledger fabric等基于联盟链的以业务为主的区块链项目,虽然提供了键值对形式的存储方式来满足结构化数据的查询,但在面临复杂结构化数据的多条件查询时,单个的键的查询方式则无法充分满足查询要求,即由于交易内部数据的数据类型复杂字段未知,且多为序列化数据,通常不具有可读性且反序列化困难,这在一定程度上增加了查询的难度。
2、在供应链管理过程中,如何满足区块链多条件查询并精准定位查询内容成为了迫切需要解决的问题。
技术实现思路
1、针对现有技术存在的问题,本发明提供一种基于区块链的供应链产品溯源数据多条件查询方法及装置。
2、第一方面,本发明提供一种基于区块链的供应链产品溯源数据多条件查询方法,应用于类轻节点,包括:
3、响应于用户的查询请求,将查询条件信息和各查询条件对应的位置索引发送给全节点,以使所述全节点执行以下操作:筛选出区块链中与所述查询条件信息相关的区块列表,然后遍历所述区块列表,对于所述区块列表中的每个区块,使用主查询条件的哈希值在所述主查询条件对应的位置索引的trie树中查找满足所述主查询条件的第一交易id列表,并获取各副查询条件对应的位置索引的trie树产生一个二元组列表,然后将所述第一交易id列表和所述二元组列表返回给所述类轻节点;所述二元组列表中的二元组为位置索引和trie树;
4、接收到所述全节点返回的所述第一交易id列表和所述二元组列表后,使用各副查询条件的哈希值在相应的trie树中查找满足各副查询条件的第二交易id列表,然后将所述第一交易id列表和各所述第二交易id列表取交集,筛选出满足全部查询条件的目标交易;
5、将所述目标交易的交易id发送给所述全节点,然后接收所述全节点返回的所述目标交易的序列化数据;
6、对所述序列化数据进行反序列化后,向所述用户返回查询结果。
7、在一些实施例中,所述筛选出区块链中与所述查询条件信息相关的区块列表,包括:
8、基于所述全节点本地的索引堆结构获取区块链中与主查询条件相关的区块列表;
9、基于各区块头中的布隆过滤器,从所述与主查询条件相关的区块列表中筛选出与各副查询条件均相关的区块,得到所述区块链中与所述查询条件信息相关的区块列表;
10、其中,所述索引堆结构是基于供应链参与方的身份信息为主查询条件构建的,所述索引堆结构中包括每个供应链参与方对应的相关交易所在区块的区块号索引,每个所述布隆过滤器基于一个区块中所有交易的数据字段中的属性值构建得到。
11、在一些实施例中,所述索引堆结构中,所述区块号索引是基于区块的权重进行排序的,所述权重基于区块产生时刻和区块中相关交易数确定。
12、在一些实施例中,所述权重的计算公式为:
13、
14、式中,表示区块i对应于目标供应链参与方的权重,表示区块i的产生时刻,表示第1个区块的产生时刻,表示区块i中与所述目标供应链参与方相关的交易数,表示区块最大交易数。
15、在一些实施例中,所述布隆过滤器的长度基于区块中各交易的数据字段对应的属性个数的最大值,以及区块最大交易数确定。
16、在一些实施例中,所述区块链中的每个区块对应一个trie树集,所述trie树集中的每棵trie树对应一个属性字段位置,并基于区块中所有交易在相应属性字段位置的属性值取哈希值构建得到,每棵trie树的叶子节点保存一个交易id列表。
17、在一些实施例中,所述哈希值基于sha256算法计算得到。
18、第二方面,本发明还提供一种基于区块链的供应链产品溯源数据多条件查询装置,应用于类轻节点,包括:
19、第一发送模块,用于响应于用户的查询请求,将查询条件信息和各查询条件对应的位置索引发送给全节点,以使所述全节点执行以下操作:筛选出区块链中与所述查询条件信息相关的区块列表,然后遍历所述区块列表,对于所述区块列表中的每个区块,筛选出所述区块中满足主查询条件的候选交易,然后基于所述各查询条件对应的位置索引,针对每个候选交易产生一个三元组列表,然后将所有候选交易的三元组列表返回给所述类轻节点;所述三元组列表中的三元组为交易id、位置索引和验证路径的组合;
20、交易筛选模块,用于接收到所述全节点返回的所有候选交易的三元组列表后,遍历各候选交易的三元组列表,使用三元组中的验证路径验证相应位置索引的副查询条件,筛选出满足全部查询条件的目标交易;
21、第二发送模块,用于将所述目标交易的交易id发送给所述全节点,然后接收所述全节点返回的所述目标交易的序列化数据;
22、结果返回模块,用于对所述序列化数据进行反序列化后,向所述用户返回查询结果。
23、第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述第一方面所述的基于区块链的供应链产品溯源数据多条件查询方法。
24、第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述第一方面所述的基于区块链的供应链产品溯源数据多条件查询方法。
25、本发明提供的基于区块链的供应链产品溯源数据多条件查询方法及装置,通过首先根据查询条件信息进行区块筛选,然后利用主查询条件的哈希值在相应trie树中查找满足主查询条件的第一交易id列表,再利用各副查询条件的哈希值在相应的trie树中查找满足各副查询条件的第二交易id列表,将第一交易id列表和各第二交易id列表取交集,最终筛选出满足全部查询条件的目标交易,从而能够满足区块链多条件查询的需求并减少存储消耗,可以帮助供应链参与方准确查询多条件下的数据,避免遍历全部区块带来的非必要数据的干扰,能够有效提升基于区块链的供应链管理系统的效率以及用户的使用体验。
1.一种基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,应用于类轻节点,包括:
2.根据权利要求1所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述筛选出区块链中与所述查询条件信息相关的区块列表,包括:
3.根据权利要求2所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述索引堆结构中,所述区块号索引是基于区块的权重进行排序的,所述权重基于区块产生时刻和区块中相关交易数确定。
4.根据权利要求3所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述权重的计算公式为:
5.根据权利要求2所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述布隆过滤器的长度基于区块中各交易的数据字段对应的属性个数的最大值,以及区块最大交易数确定。
6.根据权利要求1至5任一项所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述区块链中的每个区块对应一个trie树集,所述trie树集中的每棵trie树对应一个属性字段位置,并基于区块中所有交易在相应属性字段位置的属性值取哈希值构建得到,每棵trie树的叶子节点保存一个交易id列表。
7.根据权利要求6所述的基于区块链的供应链产品溯源数据多条件查询方法,其特征在于,所述哈希值基于sha256算法计算得到。
8.一种基于区块链的供应链产品溯源数据多条件查询装置,其特征在于,应用于类轻节点,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于区块链的供应链产品溯源数据多条件查询方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于区块链的供应链产品溯源数据多条件查询方法。