数据存储方法、装置、计算机设备及可读存储介质转让专利

申请号 : CN201811427813.3

文献号 : CN111224793B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 江山曹建农林钦亮

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种数据存储方法、装置、计算机设备及可读存储介质,属于数据存储技术领域。所述方法包括:节点设备将具有相似性的事务打包生成第一区块,并且将代表所有事务特征的块特征值存储在该第一区块的区块头部,使得任一节点设备基于第一区块的块特征值可以知道该第一区块中存储的事务的特征,进而该节点设备可以通过比较目标索引信息的特征值与该节点设备配置的区块链上区块的区块头部内的块特征值,筛选出符合条件的至少一个目标区块,进而可以查询该至少一个目标区块,并从该至少一个目标区块中获取多个目标事务,从而无需查询本地区块链上所有的区块,实现了跳块查询的目的,进而缩短了查询时间,提高了查询效率。

权利要求 :

1.一种数据存储方法,其特征在于,应用于区块链系统中的用户节点设备,所述方法包括:

将原始数据的元数据中的数据描述转换成数据表示;

基于所述元数据中的数据表示,生成事务;

向所述区块链系统发送所述事务;

接收第一区块,所述第一区块的区块头部内存储有块特征值,所述块特征值表示所述第一区块内所有事务的特征;

当所述区块链系统对所述第一区块共识通过时,将所述第一区块存储在所述用户节点设备配置的区块链上。

2.根据权利要求1所述的方法,其特征在于,所述基于所述元数据中的数据表示,生成事务,包括:

将所述元数据中的数据描述替换成所述数据表示;

对替换后的元数据进行签名,得到所述事务。

3.一种数据存储方法,其特征在于,应用于区块链系统中的任一节点设备,所述方法包括:

从事务池中获取多个事务,所述多个事务中任意两个事务之间的相似度符合预设条件;

基于所述多个事务,生成第一区块,所述第一区块的区块头部内存储有块特征值,所述块特征值表示所述第一区块内所有事务的特征;

当对所述第一区块验证通过时,将所述第一区块添加至所述节点设备配置的区块链上,在所述区块链系统中广播所述第一区块。

4.根据权利要求3所述的方法,其特征在于,所述任意两个事务之间的相似度是指所述任意两个事务的数据表示的特征值之间的相似度。

5.根据权利要求3所述的方法,其特征在于,所述从事务池中获取多个事务,包括:从事务池中选出多个事务;

将所述节点设备配置的区块链上的最新区块的头部哈希分割成多个子头部哈希;

基于所述多个事务中每个事务的数据表示以及所述多个子头部哈希,获取所述每个事务的数据表示的特征值;

当所述多个事务中任意两个事务的数据表示的特征值的相似度符合预设条件时,获取该多个事务。

6.根据权利要求5所述的方法,其特征在于,所述基于所述多个事务中每个事务的数据表示以及所述多个子头部哈希,获取所述每个事务的数据表示的特征值,包括:对一个事务的数据表示以及一个子头部哈希进行拼接,得到拼接结果数据;

对所述拼接结果数据进行哈希计算,得到所述事务的数据表示的特征值。

7.根据权利要求3所述的方法,其特征在于,所述方法还包括:当所述多个事务中任意两个事务之间的相似度不符合所述预设条件时,重新在所述事务池中获取多个事务;

当重新获取的多个事务中的任意两个事务的相似度符合所述预设条件时,基于所述多个事务,生成第一区块。

8.根据权利要求3所述的方法,其特征在于,所述方法还包括:获取原始数据的元数据;

将所述元数据中的数据描述进行转换,得到数据表示;

将所述元数据中的数据描述替换成所述数据表示;

对替换后的元数据进行签名,得到事务,将所述事务存储至所述事务池中。

9.一种数据存储装置,其特征在于,应用于区块链系统中的用户节点设备,所述装置包括:

转换模块,用于将原始数据的元数据中的数据描述转换成数据表示;

生成模块,用于基于所述元数据中的数据表示,生成事务;

发送模块,用于向所述区块链系统发送所述事务;

接收模块,用于接收第一区块,所述第一区块的区块头部内存储有块特征值,所述块特征值表示所述第一区块内所有事务的特征;

存储模块,用于当所述区块链系统对所述第一区块共识通过时,将所述第一区块存储在所述用户节点设备配置的区块链上。

10.根据权利要求9所述的装置,其特征在于,所述生成模块,用于将所述元数据中的数据描述替换成所述数据表示;

所述装置还包括:

签名模块,用于对替换后的元数据进行签名,得到所述事务。

11.一种数据存储装置,其特征在于,应用于区块链系统中的任一节点设备,所述装置包括:

获取模块,用于从事务池中获取多个事务,所述多个事务中任意两个事务之间的相似度符合预设条件;

生成模块,用于基于所述多个事务,生成第一区块,所述第一区块的区块头部内存储有块特征值,所述块特征值表示所述第一区块内所有事务的特征;

添加模块,用于当对所述第一区块验证通过时,将所述第一区块添加至所述节点设备配置的区块链上,在所述区块链系统中广播所述第一区块。

12.根据权利要求11所述的装置,其特征在于,所述任意两个事务之间的相似度是指所述任意两个事务的数据表示的特征值之间的相似度。

13.根据权利要求11所述的装置,其特征在于,所述获取模块包括:选择单元,用于从事务池中选出多个事务;

分割单元,用于将所述节点设备配置的区块链上的最新区块的头部哈希分割成多个子头部哈希;

获取单元,用于基于所述多个事务中每个事务的数据表示以及所述多个子头部哈希,获取所述每个事务的数据表示的特征值;

所述获取单元,还用于当所述多个事务中任意两个事务的数据表示的特征值的相似度符合预设条件时,获取所述多个事务。

14.根据权利要求13所述的装置,其特征在于,所述获取单元用于:对一个事务的数据表示以及一个子头部哈希进行拼接,得到拼接结果数据;

对所述拼接结果数据进行哈希计算,得到所述事务的数据表示的特征值。

15.根据权利要求11所述的装置,其特征在于,所述获取模块,还用于当所述多个事务中任意两个事务之间的相似度不符合所述预设条件时,重新在所述事务池中获取多个事务;

所述生成模块,还用于当重新获取的多个事务中的任意两个事务的相似度符合所述预设条件时,基于所述多个事务,生成第一区块。

16.根据权利要求11所述的装置,其特征在于,所述获取模块,还用于获取原始数据的元数据;

所述装置还包括:

转换模块,用于将所述元数据中的数据描述进行转换,得到数据表示;

替换模块,用于将所述元数据中的数据描述替换成所述数据表示;

签名模块,用于对替换后的元数据进行签名,得到所述事务,将所述事务存储至所述事务池中。

17.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求8任一项所述的数据存储方法所执行的操作。

18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求8任一项所述的数据存储方法所执行的操作。

说明书 :

数据存储方法、装置、计算机设备及可读存储介质

技术领域

[0001] 本申请涉及数据存储技术领域,特别涉及一种数据存储方法、装置、计算机设备及可读存储介质。

背景技术

[0002] 随着技术的进步,大数据共享技术日趋成熟,其中,区块链系统由于其去中心化、不可篡改以及可追溯等特性,可以为大数据共享及交易供一个平台,用于存储数据以及查
询数据。
[0003] 区块链系统查询数据的过程可以是如下过程:当节点设备接收到用户的事务查询请求后,根据该事务查询请求获取该事务对应的语义哈希向量;在该节点设备配置的区块
链上,按照顺序对每个区块进行逐个区块逐个事务的搜索;当搜索到任意一个区块时,需要
通过计算获取该区块中每个事务对应的语义哈希向量,使得该节点设备可以从该区块中搜
索到目标事务,该目标事务的语义哈希向量与查询事务的语义哈希向量的相似度大于预设
阈值;当该区块链上的所有事务搜索完毕时,将搜索到的目标事务发送至用户节点设备。
[0004] 在实现本发明的过程中,发明人发现相关技术至少存在以下问题:当节点设备在区块链上搜索事务时,因为是在整个区块链上进行逐个区块逐个事务的搜索,所以查询时
间过长,导致查询效率低下。

发明内容

[0005] 本申请实施例提供了一种数据存储方法、装置、计算机设备及可读存储介质,能够解决区块链系统在进行数据查询时,查询效率低下的问题。该技术方案如下:
[0006] 一方面,提供了一种数据存储方法,应用于区块链系统中的用户节点设备,该方法包括:
[0007] 将原始数据的元数据中的数据描述转换成数据表示;
[0008] 基于该元数据中的数据表示,生成事务;
[0009] 向该区块链系统发送该事务;
[0010] 接收第一区块,该第一区块的区块头部内存储有块特征值,该块特征值表示该第一区块内所有事务的特征;
[0011] 当该区块链系统对该第一区块共识通过时,将该第一区块存储在该用户节点设备配置的区块链上。
[0012] 在一种可能实现方式中,基于该元数据中的数据表示,生成事务,包括:
[0013] 将该元数据中的数据描述替换成该数据表示;
[0014] 对替换后的元数据进行签名,得到所述事务。
[0015] 基于上述可能实现方式,将元数据中的数据描述替换成数据表示,可以使得该用户节点设备基于该替换后的元数据,生成的事务携带数据表示,进而使得区块链系统存储
的事务携带数据表示。
[0016] 第二方面,提供了一种数据存储方法,用于区块链系统中的任一节点设备,该方法包括:
[0017] 从事务池中获取多个事务,多个事务中任意两个事务之间的相似度符合预设条件;
[0018] 基于该多个事务,生成第一区块,该第一区块的区块头部内存储有块特征值,该块特征值表示该第一区块内所有事务的特征;
[0019] 当对该第一区块验证通过时,将该第一区块添加至该节点设备配置的区块链上,在该区块链系统中广播该第一区块。
[0020] 在一种可能实现方式中,该任意两个事务之间的相似度是指该任意两个事务的数据表示的特征值之间的相似度。
[0021] 在一种可能实现方式中,该从事务池中获取多个事务,包括:
[0022] 从事务池中选出多个事务;
[0023] 将该节点设备配置的区块链上的最新区块的头部哈希分割成多个子头部哈希;
[0024] 基于该多个事务中每个事务的数据表示以及该多个子头部哈希,获取该每个事务的数据表示的特征值;
[0025] 当该多个事务中任意两个事务的数据表示的特征值的相似度符合预设条件时,获取该多个事务。
[0026] 基于上述可能实现方式,可以实现将事务池中的具有相似性,或者相似度较高的事务挑选出来,以便将具有相似性,或者相似度较高的事务存储在一个区块中,便于以后的
数据查询。
[0027] 在一种可能实现方式中,该节点设备基于该多个事务中每个事务的数据表示以及该多个子头部哈希,获取该每个事务的数据表示的特征值,包括:
[0028] 对一个事务的数据表示以及一个子头部哈希进行拼接,得到拼接结果数据;
[0029] 对该拼接结果数据进行哈希计算,得到该事务的数据表示的特征值。
[0030] 基于上述可能实现方式,可以获取事务的特征值,以便节点设备在生成区块时,可以将事务的特征值集中存储,以便该节点设备利用事务的特征值查询事务时,可以不再对
事务的特征值进行计算,那么,当区块链系统进行数据查询时,可以降低该区块链系统的计
算压力。
[0031] 在一种可能实现方式中,该方法还包括:
[0032] 当该多个事务中任意两个事务之间的相似度不符合该预设条件时,重新在该事务池中获取多个事务;
[0033] 当重新获取的多个事务中的任意两个事务的相似度符合该预设条件时,基于该多个事务,生成第一区块。
[0034] 基于上述可能实现方式,可以保证节点设备从事务池中获取的事务具有相似性,进而可以将具有相似性的事务存储在一个区块内。
[0035] 在一种可能实现方式中,该方法还包括:
[0036] 获取原始数据的元数据;
[0037] 将该元数据中的数据描述进行转换,得到数据表示;
[0038] 将该元数据中的数据描述替换成该数据表示;
[0039] 对替换后的元数据进行签名,得到该事务,将该事务存储至该事务池中。
[0040] 基于上述可能实现方式,节点设备获取的事务都包括数据表示,进而可以利用数据表示的特征值来存储事务,从而可以使得相似的事务可以存储在一个区块内。
[0041] 第三方面,提供了一种数据查询方法,应用于区块链系统中的任一节点设备,该方法包括:
[0042] 接收事务查询请求,该事务查询请求包括目标索引信息;
[0043] 从该节点设备配置的区块链上确定至少一个目标区块,每个目标区块的区块头部内的块特征值与该目标索引信息的特征值的相似度符合第一预设条件,该块特征值表示该
目标区块内所有事务的特征;
[0044] 从该至少一个目标区块中,获取至少一个目标事务,每个目标事务与该目标索引信息的相似度符合第二预设条件;
[0045] 将该至少一个目标事务作为查询结果输出。
[0046] 在一种可能实现方式中,该节点设备从该节点设备配置的区块链上确定至少一个目标区块,包括:
[0047] 获取该目标索引信息的特征值;
[0048] 获取该区块链上至少一个区块的区块头部内的块特征值;
[0049] 当该至少一个区块中任一个区块的区块头部内的块特征值与该目标索引信息的特征值的相似度符合该第一预设条件时,将该区块获取为目标区块。
[0050] 基于上述可能实现方式查询事务时,可以先确定目标区块,进而可以在目标块中查询事务,可以达到跳块查询的目的,大大提高了数据查询的效率。
[0051] 在一种可能实现方式中,该节点设备接收事务查询请求之后,该方法还包括:
[0052] 遍历该节点设备上配置的至少一条区块链,当任一条区块链的尾部区块的高度为零时,输出查询结果为空;
[0053] 当任一条区块链的尾部区块的高度不为零时,在该区块链上执行确定目标区块和获取目标事务的步骤。
[0054] 基于上述可能实现方式,判断该节点设备查询的区块链上是否存储有区块,当该区块链上没有区块时,则不必在这条区块链上查询,进而可以查询该接地节点设备上配置
的其他区块链,以便在其他区块链上可以获得查询结果。
[0055] 在一种可能实现方式中,该节点设备从该至少一个目标区块中,获取至少一个目标事务,包括:
[0056] 获取该至少一个目标区块中任一目标区块内所有事务的特征值;
[0057] 当该目标区块内的任一事务的数据表示的特征值与该目标索引信息的特征值符合该第二预设条件时,将该事务获取为目标事务。
[0058] 基于上述可能实现方式,可以直接根据事务的特征值与目标索引信息的特征值的比较结果,来确定目标事务,而不必计算目标区块内事务的特征值,不仅减少了区块链系统
的计算压力,还提高了数据查询的目的。
[0059] 第四方面,提供了一种数据存储装置,用于执行上述数据存储方法。具体地,该数据存储装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的数据存
储方法的功能模块,其中,该上述方面为应用于区块链系统中用节点设备的一种数据存储
方法所对应的方面。
[0060] 第五方面,提供了一种数据存储装置,用于执行上述数据存储方法。具体地,该数据存储装置包括用于执行上述第二方面或上述第二方面的任一种可选方式提供的数据存
储方法的功能模块,其中,该上述方面为应用于区块链系统中的任一节点设备的一种数据
存储方法所对应的方面。
[0061] 第六方面,提供了一种数据查询装置,用于执行上述数据查询方法。具体地,该数据查询装置包括用于执行上述第三方面或上述第三方面的任一种可选方式提供的数据查
询方法的功能模块,其中,该上述方面为应用于区块链系统中的任一节点设备的一种数据
查询方法所对应的方面。
[0062] 第七方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述数据存储方法所执行的
操作。
[0063] 第八方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述数据查询方法所执行的
操作。
[0064] 第九方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述数据存储方法所执行的操作。
[0065] 第十方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述数据查询方法所执行的操作。
[0066] 本申请实施例提供的技术方案带来的有益效果是:
[0067] 通过节点设备将具有相似性的事务打包生成第一区块,并且将代表所有事务特征的块特征值存储在该第一区块的区块头部,使得任一节点设备基于第一区块的块特征值可
以知道该第一区块中存储的事务的特征,进而该节点设备可以通过比较目标索引信息的特
征值与该节点设备配置的区块链上区块的区块头部内的块特征值,筛选出符合条件的至少
一个目标区块,进而可以查询该至少一个目标区块,并从该至少一个目标区块中获取多个
目标事务,从而无需查询本地区块链上所有的区块,实现了跳块查询的目的,进而缩短了查
询时间,提高了查询效率。

附图说明

[0068] 图1是本发明实施例提供的一种区块链系统的结构示意图;
[0069] 图2是本发明实施例提供的一种节点设备的结构示意图;
[0070] 图3是本发明实施例提供的一种节点设备生成事务的方法流程图;
[0071] 图4是本发明实施例提供的一种区块链系统存储数据的示意图;
[0072] 图5是本发明实施例提供的一种数据存储方法流程图;
[0073] 图6是本发明实施例提供的一种节点设备打包事务的示意图;
[0074] 图7是本发明实施例提供的一种数据查询方法流程图;
[0075] 图8是本发明实施例提供的一种数据存储装置的结构装置图;
[0076] 图9是本发明实施例提供的一种数据存储装置的结构装置图;
[0077] 图10是本发明实施例提供的一种数据查询装置的结构装置图。

具体实施方式

[0078] 下面将结合附图对本申请实施方式作进一步地详细描述。
[0079] 图1是本发明实施例提供的一种区块链系统的结构示意图,参见图1,该系统包括多个节点设备。其中,多个节点设备可以配置有同一条区块链,也即是,该多个节点设备可
以组成区块链系统,该多个节点设备可以是同一机构的多个设备,还可以是属于不同机构
的多个设备,还可以是普通用户的设备。
[0080] 图2是本发明实施例提供的一种节点设备的结构示意图,节点设备200包括可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central 
processing units,CPU)201和一个或一个以上的存储器202,其中,该存储器202中存储有
至少一条指令,该至少一条指令由该处理器201加载并执行以实现下述各个方法实施例提
供的方法。当然,该节点设备200还可以具有有线或无线网络接口、键盘以及输入输出接口
等部件,以便进行输入输出,该节点设备200还可以包括其他用于实现设备功能的部件,在
此不做赘述。
[0081] 在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成下述实施例中的数据存储方法或数据查询的方
法。例如,该计算机可读存储介质可以是只读存储器(read‑only memory,ROM)、随机存取存
储器(random access memory,RAM)、只读光盘(compact disc read‑only memory,CD‑
ROM)、磁带、软盘和光数据存储设备等。
[0082] 图3是本发明实施例提供的一种节点设备生成事务的方法流程图,本发明实施例是以图1所示的区块链系统中的任一节点设备为出发点来构造的一个例子,参见图3,本发
明实施例提供的方法具体包括:
[0083] 301、用户节点设备U1获取原始数据的元数据。
[0084] 其中,该用户节点设备U1为该区块链系统中的用户的节点设备,该原始数据可以是用户上传的交易数据,照片数据、视频数据、医疗数据等,还可以是该用户节点设备U1上
存储的原始数据,或者是与该用户节点设备U1关联的设备上存储的原始数据。
[0085] 当用户向该用户节点设备U1上传了原始数据后,用户可以在该用户节点设备U1上输入该原始数据的拥有者、创建时间、数据格式以及数据描述等,创建时间可以是创建元数
据的时间,也可以是用户上传原始数据的时间,数据格式可以是文本、文档或者视频等,数
据描述用于描述存储的数据的特征,例如,天气、水果或者气温等,当用户输入完以上信息
后,该用户节点设备U1可以基于用户输入的信息以及用户上传的原始数据,生成一条与该
原始数据对应的元数据,该元数据可以包括数据来源、数据类型以及数据描述,其中,数据
来源可以是用户输入的原始数据的拥有者,数据类型可以是用户输入的原始数据的数据格
式,数据描述可以是用户输入的原始数据的数据描述。当然,用户还可以在与该用户节点设
备U1关联的设备上输入以上内容。
[0086] 图4是本发明实施例提供的一种区块链系统存储数据的示意图,参见图4,主要包括用户节点设备U1生成事务、节点设备C1生成区块以及节点设备C2存储区块三个部分,其
中,对节点设备C1生成区块的部分的描述,参见步骤501至506,对节点设备C2存储区块的部
分的描述,参见步骤509至511。其中,对用户节点设备U1生成事务的部分可以作如下描述:
[0087] 当用户上传完原始数据后,在用户节点设备U1上输入拥有者“张三”、创建时间“2018.01.01”、数据格式“文本文件”以及数据描述“天气”等,该用户节点设备U1可以基于
用户输入的信息以及用户上传的原始数据,生成一条元数据mj,该元数据mj包括拥有者“张
三”创建时间“2018.01.01”、数据格式“文本文件”以及数据描述“天气”。
[0088] 302、该用户节点设备U1将该元数据中的数据描述进行转换,得到数据表示。
[0089] 该数据表示可以是一个固定长度的实数值向量,该实数值向量可以是通过一种预定义的转换算法对该数据描述进行转换得到,该数据表示实际上是对数据描述的一种语义
表示,例如,数据描述“天气”所转换得到的数据表示可以为00110101。
[0090] 303、该用户节点设备U1将该元数据中的该数据描述替换成该数据表示。
[0091] 该用户节点设备U1可以将表示数据表示的字段的内容替换成该数据表示。替换后的元数据可以包括数据来源、数据类型以及数据表示。
[0092] 304、该用户节点设备U1对替换后的元数据进行签名,得到事务。
[0093] 其中,该用户节点设备U1在加入该区块链系统后,会配备有公私钥对,也即是,每个节点设备可以对应有一对公钥和私钥,而在该用户节点设备U1对替换后的元数据进行签
名时,可以是该用户节点设备U1采用私钥对该元数据签名。
[0094] 需要说明的是,在相关技术中,用户节点设备U1所得到的事务不包括数据表示,而在本发明实施例中的事务包括数据表示,该数据表示可以表示事务的特征,当在该区块链
系统中查询数据时,可以根据该区块链系统内区块链上的事务的特征之间的相似度来查询
数据,进而可以提高查询效率。
[0095] 305、该用户节点设备U1向该区块链系统发送该事务。
[0096] 本发明实施例是基于用户节点设备U1获取的元数据来生成事务的,那么,该用户节点设备U1向区块链系统发送该事务,可以使得除该用户节点设备U1以外的其他节点设备
能够接收到该事务。
[0097] 306、该用户节点设备U1将该事务存储至事务池中。
[0098] 该事务池为该区块链系统中节点设备的临时内存池,用于存储节点设备生成的事务以及验证通过的事务,事务的验证步骤见步骤307。
[0099] 需要说明的是,步骤305与306没有具体的执行顺序,也即是,该用户节点设备U1也可以先执行步骤306,再执行步骤305,本发明实施例对于步骤305和306的执行顺序不做具
体限定。
[0100] 307、节点设备C1获取到该事务后,对该事务进行验证。
[0101] 其中,该节点设备C1为除用户节点设备U1以外的任一节点设备,可以为一具有共识功能的共识节点设备,该节点设备C1获取该事务,可以是直接获取该用户节点设备U1发
送的该事务,也可以是获取到其他节点设备基于该用户节点设备U1广播的事务。
[0102] 该节点设备C1对该事务进行验证可以包括以下至少一个方面的验证过程:
[0103] 1、当该节点设备C1检测到该事务携带数据表示时,则该事务验证通过,例如,该事务中的数据表示为00110101,当该节点设备C1检测出该事务携带有数据表示00110101,则
验证通过,当该节点设备C1检测出该事务没有携带数据表示00110101,则验证未通过。
[0104] 2、当该节点设备C1检测到该事务的格式合法时,则该事务验证通过,例如,当该节点设备C1检测到该事务中的拥有者、创建时间、数据格式以及数据表示均符合格式要求时,
则验证通过,当该节点设备C1检测到该事务中的拥有者、创建时间、数据格式、数据描述以
及数据表示中的任一一个不符合格式要求时,则验证未通过。
[0105] 3、当该节点设备C1检测到该事务的签名合法时,则该事务验证通过,例如,当该节点设备C1检测到该事务的签名是该事务中的公钥的所有者生成的签名,则验证通过,当该
节点设备C1检测到该事务的签名不是该事务中的公钥的所有者的签名,则验证未通过。
[0106] 当然,基于区块链系统的验证要求,该区块链系统内可以设置上述任一种验证过程,但是在一些实施例中,还可以设置上述多种验证过程的结合,来对事务进行验证,只有
当该事务通过了上述多种验证过程的验证时,才认为验证通过,有任一种未通过,则认为该
事务验证未通过。
[0107] 308、当该事务验证通过后,该节点设备C1将该事务存储至事务池中。
[0108] 309、该节点设备C1在区块链系统中广播该事务。
[0109] 节点设备C1可以将该事务进行广播,以便除该节点设备C1以外的其他节点设备能够接收到该事务。
[0110] 需要说明的是,该区块系统中的每一个节点设备会维护一个事务哈希列表,该事务哈希列表包括该节点设备上所有已经存储的事务的哈希值,当该节点设备C1检测到事务
哈希列表上有该事务的哈希值时,说明该事务已经被该节点设备C1存储,所以该节点设备
C1无需再次对该事务进行存储和广播,当该节点设备C1检测到该事务哈希列表上没有该事
务的哈希值时,说明该事务还没有被该节点设备C1存储,所以该节点设备C1需要对该事务
进行存储和广播,当该事务被打包进区块时,该节点设备C1在事务哈希列表中添加该事务
的哈希值,来表示该事务已经被存储,从而可以避免区块链系统中的节点设备对同一个事
务进行多次存储和广播。
[0111] 以上过程为该区块链系统中的节点设备生成事务以及将事务存储至事务池的过程,该区块链系统还需要将事务池中的事务存储至该区块链系统中的区块链上,以实现数
据存储的目的。那么,为了进一步体现该区块链系统存储数据的过程,在此以如图5所示的
具体的实施例为例,对本发明实施例提供的一种数据存储方法进行描述。
[0112] 501、节点设备C1从事务池中选出多个事务。
[0113] 该节点设备C1实际上是区块链系统中的任一个节点设备,对于生成事务的和接收到广播事务的节点设备,均可以执行本步骤501。
[0114] 该节点设备将从事务池中选出的多个事务,放入事务序列中,可以理解的是,事务序列中的事务符合一定的顺序,具体地,以图6中节点设备打包2个事务的过程为例,进行如
下说明:该节点设备从事务池中选取出事务1和事务2后,将这2个事务按照顺序放入事务序
列中,其中,事务1为第1个事务,事务2为第2个事务。
[0115] 以节点设备C1将从事务池中选出的2个事务为例,参见图4中的节点设备C1生成区块的部分,节点设备C1从当前事务池中选出k=2个事务(TX2和TXj),其中,TX2中的数据表示
为00110001,TXj的数据表示为00110101;节点设备C1将TX2和TXj打包成事务序列,其中,TX2
为事务序列中的第1个事务,TXj为事务序列中的第2个事务。
[0116] 需要说明的是,当该节点设备C1的事务池中的事务达到第一预设数目时,该节点设备C1才可以执行本步骤501,本发明实施例对于事务池中的事务的第一预设数目不做具
体限定。
[0117] 502、该节点设备C1将该节点设备C1配置的区块链上的最新区块的头部哈希分割成多个子头部哈希。
[0118] 其中,该最新区块为该节点设备C1配置的一条区块链上的尾部区块,或者说是该节点设备C1配置的一条区块链上的区块高度最大的区块。
[0119] 该节点设备C1可以将该节点设备C1配置的区块链上的最新区块的头部哈希均等分割成多个子头部哈希,其中,该多个子头部哈希的数量与该节点设备C1选出的多个事务
的数量相同。
[0120] 具体地,以步骤501中的选用的例子为基础,参见图4中的节点设备C1生成区块的部分,进行如下举例描述:节点设备C1将其配置区块链上最新区块的头部哈希值H分割成子
头部哈希h1和h2,其中,头部哈希值H为128比特的数据,其分割成的子头部哈希h1和h2分别
为H的前64位和后64位,即h1为h[0:63],h2为h[64:127]。
[0121] 503、该节点设备C1基于该多个事务中每个事务的数据表示以及该多个子头部哈希,获取该每个事务的数据表示的特征值。
[0122] 本步骤503可以通过以下步骤503A至步骤503B的过程来完成:
[0123] 步骤503A、该节点设备C1对一个事务的数据表示以及一个子头部哈希进行拼接,得到拼接结果数据。
[0124] 该节点设备C1可以将该多个子头部哈希按事务序列的顺序分配给每一个事务,并对一个事务的数据表示和该事务分配的一个的子头部哈希进行拼接,具体地,以步骤502中
的例子为基础,参见图4中的节点设备C1生成区块的部分,进行如下举例描述:节点设备C1
将h1分配给TX2,将h2分配给TXj,,节点设备C1将TX2的数据表示和TXj的数据表示分别拼接分
配到的h1和h2,00110001+h1和00110101+h2即为拼接结果数据。
[0125] 步骤503B、该节点设备C1对该拼接结果数据进行哈希计算,得到该事务的数据表示的特征值。
[0126] 具体地,以步骤503A中的例子为基础,参见图4中的节点设备C1生成区块的部分,进行如下举例描述:节点设备C1对该拼接结果数据进行语义哈希函数SH()计算,得到语义
哈希向量,该语义哈希向量即是该事务的数据表示的特征值,其中,TX2的语义哈希向量为
SH(00110001+h1)=100011100,TXj的语义哈希向量为SH(00110101+h2)=100011000。
[0127] 当该节点设备C1都对其选取的多个事务都进行步骤503A和503B后,该节点设备C1就会获取到每个事务的数据表示的特征值。
[0128] 504、该节点设备C1获取该多个事务中的任意两个事务的相似度。
[0129] 其中,任意两个事务之间的相似度可以是该任意两个事务的数据表示的特征值之间的相似度,该特征值可以是事务的语义哈希向量。
[0130] 相似度可以采用任一种相似度算法确定,例如,该节点设备C1可以对两个事务的数据表示的语义哈希向量进行汉明距离计算,以获取两个事务的相似度,具体地,以步骤
503B中的例子为基础,参见图4中的节点设备C1生成区块的部分,进行如下描述:节点设备
C1通过计算TX2和TXj的语义哈希向量的汉明距离,可以获得该两个语义哈希向量的相似度s
为0.89。
[0131] 505、当该多个事务中任意两个事务的数据表示的特征值的相似度符合预设条件时,该节点设备C1获取该多个事务。
[0132] 该预设条件可以是该多个事务中任意两个事务的数据表示的特征值的相似度大于第三预设阈值,本发明实施例对于该第三预设阈值的具体数值不做具体限定。
[0133] 具体地,以步骤504中的例子为基础,参见图4中的节点设备C1生成区块的部分,进行如下描述:节点设备C1的第三预设阈值th为0.8,而TX2的语义哈希向量和TXj的语义哈希
向量的相似度为0.89,所以TX2的语义哈希向量和TXj的语义哈希向量的相似度大于第三预
设阈值,即TX2和TXj这两个事务符合预设条件,节点设备C1获取事务TX2和TXj。
[0134] 当该节点设备C1获取的多个事务中任意两个事务之间的相似度不符合预设条件时,可以将先不符合预设条件的多个事务放回事务池中,然后该节点设备C1重新在该事务
池中获取多个事务,当重新获取的多个事务中的任意两个事务的相似度符合该预设条件
时,基于重新获取的多个事务,生成第一区块。
[0135] 根据以上的描述可知,该节点设备C1选出的多个事务中的任意两个事务的语义哈希向量相似,也即是该任意两个事务相似,当第三预设阈值越高时,选出的多个事务相似度
越高。那么,如果将相似度较高的事务存储在一个区块中,参见步骤506,在查询数据时,就
可以根据事务之间的相似度仅查询多个目标区块,从而可以提高查询效率,参见步骤705至
706。
[0136] 需要说明的是,本发明实施例中的“第一”“第二”“第三”等定语,均不用于区分预设阈值的功能不同,而仅用于区分预设阈值的数值不同,可以理解的是,本发明实施例中出
现的“第一预设阈值”、“第二预设阈值”以及“第三预设阈值”也可以相同。
[0137] 需要注意的是,步骤501至步骤505是该节点设备C1从事务池中获取多个事务对应的过程。
[0138] 506、该节点设备C1基于该多个事务,生成第一区块,该第一区块的区块头部内存储有块特征值,该块特征值包括表示该第一区块内所有事务的特征。
[0139] 该块特征值可以存储在特征字段内,该特征字段可以位于该第一区块的区块头部,并且,该特征字段可以是该第一区块的区块头部内新增的字段,也可以是对该第一区块
的区块头部内的空白字段的利用。
[0140] 当事务的数据表示的特征值为语义哈希向量,节点设备C1在生成第一区块时,可以将该第一区块内所有事务的语义哈希向量依次添加至该区块头部的一个固定长度的布
隆过滤器内,从而该布隆过滤器可以根据输入的语义哈希向量,生成一个块特征值,该块特
征值可以表示该第一区块内所有事务的特征,例如,节点设备C1将事务1的数据表示的特征
值输入至该布隆过滤器内,该布隆过滤器会生成一个块特征值1,然后,该节点设备C1将事
务2的数据表示的特征值输入至该布隆过滤器内,使得块特征值1更新为块特征值2,当该节
点设备C1仅将事务1和事务2生成第一区块时,那么,该块特征值2可以作为该第一区块的块
特征值。
[0141] 因为,该多个事务具有较高的相似度,所以,从该块特征值中就可以体现出该第一区块的特征,那么,当在查询事务时,根据该块特征值就可以判断该第一区块中是否存储有
要查询的事务,参见步骤704。
[0142] 具体地,以步骤504中的例子为基础,以节点设备C1将两个事务生成区块为例,参见图4中的节点设备C1生成区块的部分,作如下说明:
[0143] 节点设备C1比较发现s>th(th为0.8),因此,将此两个事务TX2和TXj生成新的区块Bj,节点设备C1将TX2和TXj的语义哈希向量添加到区块Bj头部的距离敏感布隆过滤器中,该
距离敏感布隆过滤器可以作为特征字段,该特征字段中的所有语义哈希向量可以作为区块
Bj的块特征值。
[0144] 需要说明的是,在生成区块时,不仅需要添加区块头部内的特征字段内的信息,还需要添加区块高度、事务数量、区块大小等。
[0145] 507、该节点设备C1将该第一区块添加至该节点设备C1配置的区块链上。
[0146] 需要说明的是,步骤506和步骤507没有严格的执行顺序,该用户节点设备U1也可以先执行步骤506,再执行步骤507,本发明实施例对步骤506和507的执行顺序不做具体限
制。
[0147] 508、该节点设备C1在该区块链系统中广播该第一区块。
[0148] 节点设备C1可以将该第一区块进行广播,以便除该节点设备C1以外的其他节点设备能够接收到该第一区块。
[0149] 509、当节点设备C2接收到该第一区块后,对该第一区块进行验证。
[0150] 其中,该节点设备C2为除节点设备C1以外的任一节点设备,该节点设备C2获取该第一区块,可以是直接获取节点设备C1广播的第一区块,也可以是获取到其他节点设备基
于节点设备C1广播的第一区块。
[0151] 本步骤509也即是区块链系统中的节点设备对该第一区块开始进行共识,那么,该节点设备C2可以对第一区块进行共识,该共识包括以下过程:
[0152] 该区块链系统中的任一节点设备按照501‑505的步骤生成区块;该区块链中的任一节点设备接收到该区块后,对该区块进行验证;当对该区块验证通过时,将该区块添加至
该节点设备配置的区块链上,并在区块链系统中广播该区块,以便其他的节点设备对该区
块进行验证和存储;当该区块链系统中的所有节点设备都对该区块验证通过并存储该区块
时,该区块链系统中的节点设备对该区块达成共识,该区块存储至该区块链系统中的本地
区块链上,作为本地区块链上的最新区块,也即是,该区块为本地区块链上的尾部区块。
[0153] 当该被验证的区块均满足以下5个验证条件时,即验证通过,该区块可以添加至该节点设备配置的区块链上,否则,即是验证不通过,该区块则不可以添加至该节点设备配置
的区块链上。
[0154] 该5个验证条件分别为:
[0155] 1、区块内的事务数量大于等于第二预设数目。
[0156] 2、区块内的任意两个事务的数据表示的特征值符合预设条件。
[0157] 3、区块中携带生成者的签名。
[0158] 4、区块的区块高度是比本地区块链最新区块的高度大1。
[0159] 5、区块的上一区块头哈希等于本地区块链最新区块的区块头的哈希值。
[0160] 其中,前2个验证条件是区块必须要通过验证的条件,在一些实施例中,当该区块除了满足以上5个验证条件中的前2个条件以外,在满足以上5个验证条件中后3个验证条件
中的至少一个验证条件时,也可以认为该区块验证通过,可以理解的是,以上5个验证条件
中的后3个验证条件也可以是其他条件,本发明实施例对于验证条件的内容、验证条件数目
以及第二预设数目不做具体限定。
[0161] 需要说明的是,当区块的区块高度大于本地区块链上最新区块的高度时,该节点设备C2才可以对区块进行验证,否则,该节点设备C2将不能对该区块进行验证,从而可以避
免节点设备对同一个区块进行多次验证和存储。
[0162] 510、当对该第一区块验证通过时,该节点设备C2将该第一区块添加至该节点设备配置的区块链上。
[0163] 511、该节点设备C2在该区块链中广播该第一区块。
[0164] 本步骤511使得区块链系统中除该节点设备外的任一设备,可以接收、验证以及存储该第一区块,可以理解的是,该区块链系统中的任一节点设备都会广播验证通过的区块,
以便该区块链系统中的所有节点设备都可以验证并存储该验证通过区块,那么,当该区块
链系统的每个节点设备都存储了该验证通过的区块时,也即是,该区块链系统内的各个节
点设备对该区块达成共识,也即是,该区块添加至该区块链系统中的区块链上。
[0165] 本发明实施例提供的方法,通过节点设备将相似度较高的多个事务从事务池中筛选出来并进行打包和生成区块,可以使得该区块链系统中的区块链上的区块内所存储的事
务具有相似性,根据事务的相似性便于区块链系统中的节点设备查询数据,能够大大提高
查询效率。并且,在区块的区块头部内的特征字段中,存储有各个事务的数据表示的特征
值,以表征该区块的块特征值,进而可以从该块特征值中获知该区块内所有事务的特征,来
进行事务查询。
[0166] 基于以上数据存储方法,在此,以区块系统中的任一节点设备查询数据为例,对于本发明提出的数据查询方法,作如下描述,图7是本发明实施例提供的一种数据查询的方法
流程图,参见图7,本发明实施例提供的方法流程包括:
[0167] 701、该区块链系统中的任一节点设备接收事务查询请求,该事务查询请求包括目标索引信息。
[0168] 该事务查询请求用于指示该节点设备查询事务,该事务查询请求携带目标索引信息,例如,当用户在该节点设备的区块链系统界面的搜索框内输入关键字“天气”后,用户点
击区块链系统界面中的虚拟搜索按钮,该节点设备即可接收到关于“天气”的事务查询请
求,而“天气”可以作为目标索引信息。
[0169] 702、该节点设备根据接收的该事务查询请求,获取该目标索引信息的特征值。
[0170] 该节点设备可以根据该事务查询请求中的目标索引信息,获取该目标索引信息的特征值,该特征值可以是语义哈希向量。其中,在查询过程中用于获取特征值所使用的特征
值算法和步骤503中获取数据表示的特征值的算法同理,在此不做赘述。
[0171] 例如,当该特征值为语义哈希向量,目标索引信息为“天气”时,通过图4中计算事务特征值时利用的算法,该节点设备可以获取该目标索引信息的数据表示,“天气”的数据
表示为00110101,该节点设备对该数据表示不进行拼接,而是直接对该数据表示进行哈希
计算,得到该数据表示的语义哈希向量,所以“天气”的语义哈希向量为00110100。
[0172] 703、当该节点设备配置的一条区块链的尾部区块的区块高度为零时,该节点设备输出查询结果为空。
[0173] 由于此时该节点设备仅查询了该区块链上的尾部区块,但是该尾部区块的区块高度为零,也即是,该区块链上没有存储任何事务,所以,此时的查询结果为空。当然,当一条
区块链的尾部区块的区块高度为零时,该节点设备可以继续查询该节点设备配置的其他区
块链的尾部区块是否为零。
[0174] 需要说明的是,步骤702和步骤703没有严格的顺序,该节点设备也可以先进行步骤703,再进行步骤702,本发明实施例对于步骤702和703的执行顺序不做具体限定。
[0175] 704、当该节点设备配置的一条区块链的尾部区块的区块高度不为零时,获取该区块链上至少一个区块的区块头部内的块特征值。
[0176] 该节点设备可以从该至少一个区块的区块头部内的特征字段中获取块特征值。在获取块特征值时,可以按照区块在区块链上的区块高度来获取。例如,该节点设备根据区块
高度由大到小的顺序,获取该节点设备配置的区块链上至少一个区块的区块头部内的块特
征值,可以包括以下步骤:该节点设备配置的区块链上的最高区块高度为H,该节点设备获
取区块高度为H的区块,获取该区块的区块头部内的块特征值。取H=H‑1,对区块高度为H‑1
的区块再进行块特征值的获取,直到获取到区块高度为1的区块的块特征值时,即该节点设
备获取到该节点设备配置的区块链上的所有区块的块特征值。
[0177] 当然,该节点设备也可以从区块高度为1的区块开始获取,或者是在该区块链上随机获取至少一个区块的区块头部内的块特征值,本发明实施例对于获取区块的区块头部内
的块特征值的顺序,以及获取区块的区块头部内的块特征值的数量不做具体限定。
[0178] 705、当该至少一个区块中任一个区块的区块头部内的块特征值与该目标索引信息的特征值的相似度符合第一预设条件时,该节点设备将该区块获取为目标区块。
[0179] 该第一预设条件为该目标区块的区块头部内的块特征值与该目标索引信息的特征值的相似度大于第一预设阈值,本发明实施例对于该第一预设阈值的具体数值具体限
定。
[0180] 通过比较相似度可以知道,该目标区块中的事务与该目标索引的相似度较高,从而就可以仅从该至少一个目标区块中查询事务,而不继续对其他区块进行查询,以达到跳
块查询的目的,减小了查询范围,提高了查询效率,参见步骤707。
[0181] 需要说明的是,步骤702至705为确定目标区块的步骤,也即是,该节点设备从该节点设备配置的区块链上确定至少一个目标区块,每个目标区块的区块头部内的块特征值与
该目标索引信息的特征值的相似度符合第一预设条件,该块特征值表示该目标区块内所有
事务的特征。
[0182] 706、该节点设备从该至少一个目标区块中,获取至少一个目标事务,每个目标事务与该目标索引信息的特征值的相似度符合第二预设条件。
[0183] 该第二预设条件可以为每个目标事务的数据表示的特征值与该目标索引信息的特征值的相似度大于第二预设阈值,也即是从该至少一个目标区块中查询与该目标索引信
息相似度较高的事务,进而筛选出至少一个目标事务,本发明实施例对于该第二预设阈值
的具体数值,不做具体限定。
[0184] 该节点设备从该至少一个目标区块中,获取至少一个目标事务,可以通过以下步骤706A至706B所示的过程来实现:
[0185] 步骤706A、该节点设备获取该至少一个目标区块中任一目标区块内所有事务的特征值。
[0186] 步骤706B、当该目标区块内的任一事务的数据表示的特征值与该目标索引信息的特征值符合该第二预设条件时,该节点设备将该事务获取为目标事务。
[0187] 本步骤706B对于每一个目标区块而言,可以先获取每一个目标区块的事务序列,然后按照每个事务序列的顺序,获取该目标区块的特征字段内的每个事务的语义哈希向
量,将该每个语义哈希向量与该目标索引信息的语义哈希向量相对比,当任一事务的语义
哈希向量与该目标索引信息的语义哈希向量的相似度大于第二预设阈值时,将该事务作为
目标事务。
[0188] 需要说明的是,该节点设备在获取目标事务时,可以是每确定一个目标区块,该节点设备执行步骤706B,也可以是确定该区块链上所有的目标区块时,该节点设备执行步骤
706B,也可以是确定第三预设数目的目标区块时,该节点设备执行步骤706B,本发明实施例
对于该第三预设数目不做具有限定。
[0189] 需要注意的是,由于目标区块中的特征字段中都存储有该区块内所有事务的数据表示的特征值,所以当该节点设备每次查询到该目标区块时,可以避免计算每个事务的数
据表示的特征值,降低了该区块链系统的计算量,同时,也减少了查询时间,进而提高了查
询效率。
[0190] 707、该节点设备将该至少一个目标事务作为查询结果输出。
[0191] 当该节点设备输出该至少一个目标事务时,可以是在该节点设备每当从一个目标区块中获取到至少一个目标事务时,将获取的至少一个目标事务输出,也可以是在该节点
设备每当从所有目标区块中的部分区块中获取到至少一个目标事务时,将获取的至少一个
目标事务输出,还可以是在该节点设备每当从所有目标区块中获取到至少一个目标事务
时,将获取的至少一个目标事务输出,当然,还可以是该节点设备每获取到一个目标事务
时,就将该一个目标事务输出,或者是该节点设备每查询到多个目标事务时,就将该多个目
标事务输出,本发明实施例对于输出至少一个目标事务的时间以及数量不做具体限定。
[0192] 本发明实施例提供的方法,通过节点设备比较目标索引信息的特征值与该节点设备配置的区块链上区块的区块头部内的块特征值,可以筛选符合条件的至少一个目标区
块,进而可以查询该至少一个目标区块,并从该至少一个目标区块中获取多个目标事务,从
而无需查询本地区块链上所有的区块,实现了跳块查询的目的,进而缩短了查询时间,提高
了查询效率。并且,在从目标区块中筛选目标事务时,可以直接将目标索引信息的特征值与
该目标区块的区块头部内存储的各个事务的数据表示的特征值相比较,从而筛选出符合条
件的目标事务,而无需再次计算目标区块的所有事务的数据表示的特征值,进而降低了该
区块链系统的计算负担,进一步地缩短了查询时间,进而进一步地提高了查询效率。
[0193] 图8是本发明实施例提供的一种数据存储装置的结构装置图,参见图8,应用于区块链系统中的用户节点设备,该装置包括:
[0194] 转换模块801,用于将原始数据的元数据中的数据描述转换成数据表示;
[0195] 生成模块802,用于基于该元数据中的数据表示,生成事务;
[0196] 发送模块803,用于向该区块链系统发送该事务;
[0197] 接收模块804,用于接收第一区块,该第一区块的区块头部内存储有块特征值,该块特征值表示该第一区块内所有事务的特征;
[0198] 存储模块805,用于当该区块链系统对该第一区块共识通过时,将该第一区块存储在该用户节点设备配置的区块链上。
[0199] 可选地,该生成模块802,用于将该元数据中的数据描述替换成该数据表示;
[0200] 该装置还包括:
[0201] 签名模块,用于对替换后的元数据进行签名,得到该事务。
[0202] 本发明实施例提供的装置,通过用户节点设备将元数据中的数据描述替换成数据表示,生成事务,并将生成的事务发送到区块链系统中,便于其他节点设备可以将接收的事
务生成第一区块。并且,在第一区块的区块头部内存储有该第一区块的块特征值,以表征该
第一区块内存储的各个事务的特征,进而可以从该块特征值中获知该区块内所有事务的特
征,来进行事务查询。
[0203] 图9是本发明实施例提供的一种数据存储装置的结构装置图,参见图9,应用于区块链系统中的任一节点设备,该装置包括:获取模块901、生成模块902以及添加模块903
[0204] 获取模块901,用于从事务池中获取多个事务,该多个事务中任意两个事务之间的相似度符合预设条件;
[0205] 生成模块902,用于基于该多个事务,生成第一区块,该第一区块的区块头部内存储有块特征值,该块特征值表示该第一区块内所有事务的特征;
[0206] 添加模块903,用于当对该第一区块验证通过时,将该第一区块添加至该节点设备配置的区块链上,在该区块链系统中广播该第一区块。
[0207] 可选地,任意两个事务之间的相似度是指该任意两个事务的数据表示的特征值之间的相似度。
[0208] 可选地,该获取模块901包括:
[0209] 选择单元,用于从事务池中选出多个事务;
[0210] 分割单元,用于将该节点设备配置的区块链上的最新区块的头部哈希分割成多个子头部哈希;
[0211] 获取单元,用于基于该多个事务中每个事务的数据表示以及该多个子头部哈希,获取该每个事务的数据表示的特征值;
[0212] 该获取单元,还用于当该多个事务中任意两个事务的数据表示的特征值的相似度符合预设条件时,获取该多个事务。
[0213] 可选地,该获取单元用于:
[0214] 对一个事务的数据表示以及一个子头部哈希进行拼接,得到拼接结果数据;
[0215] 对该拼接结果数据进行哈希计算,得到该事务的数据表示的特征值。
[0216] 可选地,该获取模块,还用于当该多个事务中任意两个事务之间的相似度不符合该预设条件时,重新在该事务池中获取多个事务;
[0217] 该生成模块,还用于当重新获取的多个事务中的任意两个事务的相似度符合该预设条件时,基于该多个事务,生成第一区块。
[0218] 可选地,该装置还包括:
[0219] 该获取模块901,还用于获取原始数据的元数据;
[0220] 转换模块,用于将该元数据中的数据描述进行转换,得到数据表示;
[0221] 替换模块,用于将该元数据中的数据描述替换成该数据表示;
[0222] 签名模块,用于对替换后的元数据进行签名,得到该事务,将该事务存储至该事务池中。
[0223] 本发明实施例提供的装置,通过节点设备将相似度较高的多个事务从事务池中筛选出来并进行打包和生成区块,可以使得该区块链系统中的区块链上的区块内所存储的事
务具有相似性,根据事务的相似性便于区块链系统中的节点设备查询数据,能够大大提高
查询效率。并且,在区块的区块头部内的特征字段中,存储有各个事务的数据表示的特征
值,以表征该区块的块特征值,进而可以从该块特征值中获知该区块内所有事务的特征,来
进行事务查询。
[0224] 图10是本发明实施例提供的一种数据查询装置的结构装置图,参见图10,应用于区块链系统中的任一节点设备,该装置包括接收模块1001、确定模块1002、获取模1003以及
输出模块1004;
[0225] 接收模块1001,用于接收事务查询请求,该事务查询请求包括目标索引信息;
[0226] 确定模块1002,用于从该节点设备配置的区块链上确定至少一个目标区块,每个目标区块的区块头部内的块特征值与该目标索引信息的特征值的相似度符合第一预设条
件,该块特征值表示该目标区块内所有事务的特征;
[0227] 获取模块1003,用于从该至少一个目标区块中,获取至少一个目标事务,每个目标事务与该目标索引信息的相似度符合第二预设条件;
[0228] 输出模块1004,用于将该至少一个目标事务作为查询结果输出。
[0229] 可选地,该确定模块1002用于:
[0230] 获取该目标索引信息的特征值;
[0231] 获取该区块链上至少一个区块的区块头部内的块特征值;
[0232] 当该至少一个区块中任一个区块的区块头部内的块特征值与该目标索引信息的特征值的相似度符合该第一预设条件时,将该区块获取为目标区块。
[0233] 可选地,该输出模块,还用于遍历该节点设备上配置的至少一条区块链,当任一条区块链的尾部区块的高度为零时,输出查询结果为空;
[0234] 该装置还包括:
[0235] 执行模块,用于当任一条区块链的尾部区块的高度不为零时,在该区块链上执行该确定模块和该获取模块执行的内容。
[0236] 可选地,该获取模块1003用于:
[0237] 获取该至少一个目标区块中任一目标区块内所有事务的特征值;
[0238] 当该目标区块内的任一事务的数据表示的特征值与该目标索引信息的特征值符合该第二预设条件时,将该事务获取为目标事务。
[0239] 本发明实施例提供的装置,通过节点设备比较目标索引信息的特征值与该节点设备配置的区块链上区块的区块头部内的块特征值,可以筛选符合条件的至少一个目标区
块,进而可以查询该至少一个目标区块,并从该至少一个目标区块中获取多个目标事务,从
而无需查询本地区块链上所有的区块,实现了跳块查询的目的,进而缩短了查询时间,提高
了查询效率。并且,在从目标区块中筛选目标事务时,可以直接将目标索引信息的特征值与
该目标区块的区块头部内存储的各个事务的数据表示的特征值相比较,从而筛选出符合条
件的目标事务,而无需再次计算目标区块的所有事务的数据表示的特征值,进而降低了该
区块链系统的计算负担,进一步地缩短了查询时间,进而进一步地提高了查询效率。
[0240] 上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0241] 需要说明的是:上述实施例提供的数据查询、存储装置在对数据进行查询或存储时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分
配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述
的全部或者部分功能。另外,上述实施例提供的数据查询、存储的装置与数据查询、存储的
方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0242] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序
产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或
部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质
中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机
指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字
用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或
数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者
是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以
是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘
Solid State Disk(SSD))等。
[0243] 在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0244] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。