一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种块链式账本中的索引创建方法、装置及设备与流程

2021-10-24 06:57:00 来源:中国专利 TAG:链式 账本 说明书 装置 索引


1.本说明书实施例涉及信息技术领域,尤其涉及一种块链式账本中的索引创建方法、装置及设备。


背景技术:

2.在中心化的数据库服务方以块链式的账本对外提供服务时,账本中记录了相关用户所需要保存的相关数据记录。
3.在实际应用中,中心化的数据库服务方一般对接的是企业用户,而企业用户需要进行存储的数据记录往往具有不同的业务属性。例如,数据记录的来源、用户、所属项目等等。在块链式账本中对于同一业务属性相关的数据记录的存储往往是分散的且无序的,对于同一业务属性相关的数据记录进行状态统计以及查询不便。
4.基于此,需要一种关于数据记录的业务属性的索引创建方案,以实现灵活的数据查询。


技术实现要素:

5.本技术实施例的目的是提供一种块链式账本中的索引创建方法,以实现灵活的数据查询。
6.为解决上述技术问题,本技术实施例是这样实现的:
7.一种块链式账本中的索引创建方法,应用于通过块链式账本存储数据的中心化的数据库服务端中,包括:
8.获取数据记录中所包含的业务属性和顺序编号;
9.确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;
10.建立所述业务属性、位置信息和顺序编号的对应关系;
11.按照所述顺序编号,将所述对应关系依序写入以所述业务属性为主键的索引;
12.其中,在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。
13.对应的,本说明书实施例还提供一种块链式账本中的索引创建装置,应用于通过块链式账本存储数据的中心化的数据库服务端中,包括:
14.获取模块,获取数据记录中所包含的业务属性和顺序编号;
15.确定模块,确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;
16.写入模块,建立所述业务属性、位置信息和顺序编号的对应关系,按照所述顺序编号,将所述对应关系依序写入以所述业务属性为主键的索引;
17.其中,在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据
记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。
18.通过本说明书实施例所提供的方案,对于写入账本的数据记录,确定出数据记录的业务属性,以及在账本中的存储位置和顺序编号,建立起三者的对应关系,创建以业务属性为主键的倒排索引,不必了解用户的业务详情,根据索引中即可以基于业务属性对于数据记录进行依序统计,便于后续的查询和验证。
19.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
20.此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
21.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
22.图1为本说明书实施例所提供的一种生成块链式账本的流程示意图;
23.图2为本说明书实施例所提供的一种数据记录的逻辑结构示意图;
24.图3为本说明书实施例所提供的一种数据块的块头的示意图;
25.图4为本说明书实施例所涉及的系统架构示意图;
26.图5是本说明书实施例提供的一种块链式账本中的索引创建方法的流程示意图;
27.图6是本说明书实施例提供的一种块链式账本中的索引创建装置的结构示意图;
28.图7是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
29.为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
30.首先对本说明书实施例中所涉及的中心化下的块链式的账本予以说明。在中心化的数据库服务提供方,块链式的账本通过如下方式生成,如图1所示,图1为本说明书实施例所提供的一种生成块链式账本的流程示意图,包括:
31.s101,接收用户所发送的待存储数据,生成包含所述待存储数据的数据记录,确定所述数据记录的哈希值,其中,数据记录中包含业务属性和顺序编号。
32.此处的待存储数据,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。
33.数据库服务端需要根据待存储数据生成用于写入账本的数据记录。数据记录中包含有业务属性和顺序编号。
34.其中,业务属性表征了数据记录的业务特征,可以包括用户名、用户身份证号、机
构名、交易类别、数据记录类别等等。例如,在一条由金融机构上传的包含报表的数据记录中,业务属性可以是表征该报表类别的报表编号“g01”,即资产负债项目统计表;或者,数据记录可以是该报表所属的项目编号等等。
35.在一种实施方式中,用户可以在创建账本时即确定该账本中的业务属性和顺序编号的获得方式。
36.例如,用户可以通过创建指令进行创建账本,并且在创建指令中即包含有该账本的数据结构配置参数,从而,数据库服务端可以从指令中获取该账本的配置参数,并且将所述配置参数写入所创建的账本的初始数据块的块头中,同时,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中。日后可以随时从初始数据块中查询得到用户是如何创建该账本的。
37.又例如,用户在创建账本时,还可以生成所述账本的数据结构参数配置文件,数据结构参数配置文件中的参数值即为创建指令中的参数值,所述数据结构参数配置文件用于配置所述账本的配置参数的类型以及每个参数的具体参数值。换言之,在初始设定了参数值以后,用户还可以通过更改配置文件来实现对于配置参数的更改。数据结构配置参数即可以包括业务属性和序号参数。
38.例如,用户可以向数据库服务端发起指令createledger(ledgerid,clue:id),其中,“ledgerid”为账本id,“clue:id”表征为将该账本的业务属性设置为用户id;又或者,用户可以向数据库服务端发起指令createledger(ledg erid,clue:g01),“clue:g01”表征为将盖章本的业务属性的值修改为“g01”。
39.在前序示例中,若用户a和b均定义id为各自账本的业务属性。用户a的id为“uid2019”,则对于该用户a而言,业务属性所对应的字符串为“uid2019”;用户b的id为“uid2020”,则对于该用户b而言,业务属性所对应的字符串为“uid2020”。
40.顺序编号则是表征了在该账本那种包含同一业务属性的数据记录的先后关系。具体而言,顺序编号可以是由用户确定并写入用户所上传的待存储的数据中,也可以是由数据库服务端所确定,并写入用户所上传的待存储的数据中。
41.例如,用户可以通过指令修改配置参数中序号参数的值,例如,在创建账本时,输入指令createledger(ledgerid,clue,null),将序号参数的值设定为“null”,表示无需顺序编号;或者输入指令createledger(ledgerid,clue,seq

num),表示从待存储的数据记录中获取用户指定的顺序编号;或者,输入指令createledger(ledgerid,clue,seq

time),表示数据库服务端根据接收到的数据的时间确定顺序编号。当然,本说明书实施例中所提供的方案所涉及的即待存储的数据记录为需要顺序编号的情形。
42.针对顺序编号,具体而言,针对任一待存储数据,获取顺序编号的方式可以有如下两种方式:
43.第一种,顺序编号由用户方指定,即用户在发送待存储数据时即携带相应的顺序编号。这种方式下需要数据库服务端和用户之间协议数据格式。以便数据库服务端可以从待存储数据中获取出对应的顺序编号。
44.第二种,顺序编号由数据库服务端确定,即数据库服务端根据接收到的待存储数据记录的时间戳,分配给该待存储数据记录在该账本中的一个顺序编号。容易理解,各账本所维护的顺序编号是分别独立的。在用户发送的待存储数据的频率不高时,该方式同样可
以准确的分配给各数据记录相应的顺序。
45.例如,在同一账本中的同一用户所上传的数据,业务属性“id”所对应的顺序编号可能是“100”,而如果业务属性是“g01”,其顺序编号可能是“50”。具体而言对于每一业务属性,可以在初始数据块时即分配顺序编号为1,以后每写入同一业务属性的值,顺序编号加1。由于在数据块中存储的数据记录实际上是看不出来彼此在业务上的顺序关系的,通过给数据记录分配顺序编号可以明确账本中的各数据记录的先后关系,有利于用户日后的查询与验证。
46.进而,数据库服务端可以对待存储数据、顺序编号和业务属性进行拼接,生成包含所述待存储数据的数据记录,并且确定出所述数据记录的哈希值,并返回所述哈希值至用户。如图2所示,图2为本说明书实施例所提供的一种数据记录的逻辑结构示意图。
47.具体而言,可以将业务属性和顺序编号置于待存储数据的头部或者尾部。以及,还可以需要使用特殊的标识字符用于识别所述业务属性和顺序编号,例如,以“oe”作为开头标识字符,以“of”作为结束标识字符,等等。又或者,还可以通过将头部以及尾部分配指定的占用空间,以便区分所述数据记录的头部、尾部和其中所包含的待存储数据。
48.例如,若用户a上传的待存储数据为“data”,该数据的顺序编号为99,则拼接得到的包含业务属性的数据记录为“uid2019dat99”;或者,当存在所述标识字符时,则生成的数据记录为“oeuid2019ofdataoe99of”。
49.又例如,在指定了头部以及尾部的占用空间时,还可以是如下形式:[uid2019][data][99],其中,“[uid2019]”和“[99]”分别占用了指定的空间长度,不足部分可以用无效字符补全,在这种方式下可以有效的识别出头部、数据和尾部,从而可以方便的识别出数据记录中所包含的业务属性、数据正文和顺序编号。
[0050]
s103,当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第n个数据块。
[0051]
所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。
[0052]
此处的n指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第n个数据块的块高即为n;块高也可以其它方式生成。
[0053]
当n=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
[0054]
当n>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第n-1个数据块)的哈希值生成当前数据块(第n个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第n个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用
哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
[0055]
上述方式生成的数据块,可以包括块头和块体两个部分。块体中可以用于存储数据记录的明文,或者数据记录的哈希值等等;块头中可以用于存储有关本数据块的元数据,例如,账本的版本号,前一数据块的哈希值,自身数据块中的数据记录所组成的默克尔树的根哈希值,自身数据块的哈希值,用于记录数据记录的被操作状态的状态数组等等。
[0056]
例如,可以将数据数据结构配置参数写入初始数据块中的块头中。如图3所示,图3为本说明书实施例所提供的一种数据块的块头的示意图。在初始数据块中,parent_hash(前一数据块的哈希值)可以为空,以及,还可以包括诸如clue、length以及seq等数据结构配置参数。在实际应用中,每个字段均会有一个实际的赋值(例如,parent_hash的具体值为一个256长度的字符串,clue的具体值为“id”,seq的赋值为“seq_time”等等),具体的赋值在该示意图中未显示。
[0057]
用户在上传数据成功后,即可以得到对应的数据记录的哈希值以及所处的数据块的哈希值,并保存,并且可以基于该哈希值发起完整性验证。具体的验证方式即为在数据库中重新计算数据记录自身的哈希值以及所处的数据块的哈希值,与本地所保存的进行对比。
[0058]
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
[0059]
在对于块链式的账本进行验证时,一般而言,即指定一段数据块进行连续的完整性验证,或者从初始数据块开始进行连续的完整性验证。验证的方式即为获取前一数据块的哈希值,并采用与生成数据块的哈希值时的同样算法,根据自身的数据记录和前一数据块的哈希值,重新计算一遍自身数据块的哈希值。
[0060]
前述部分对于本说明书实施例所涉及的块链式的账本进行了说明。在实际应用中,数据库服务方面向的常常为各种机构,各机构则可以将它们与第三方用户(包括其它机构或者个人)之间所产生的数据记录在数据库服务方进行存储。如图4所示,图4为本说明书实施例所涉及的系统架构示意图。在该示意图中,一个企业机构可以面向多名用户,而每个用户均可以通过其对应的企业机构向数据库服务提供方进行查询。
[0061]
例如,数据库服务方对接的机构是某金融产品公司,数据记录可以是个人用户在该金融产品公司的理财记录;或者,对接的机构可以是政府部门,其中的数据记录是政府部门对于该部门所管理的公共项目的开销明细;或者,数据库服务方对接的机构是某个医院,其中的数据记录是病人的病历;或者,数据库服务方对接的机构是第三方支付机构,数据记录可以是个人用户通过该机构的支付记录,等等。
[0062]
如前所述,这些数据记录在写入账本时虽然已经有了较强的时序特征,但是对于用户而言,其数据记录通常是分散式的存储在多个数据块中的。
[0063]
例如,医院对于所有病人的病历记录按照时间产生的顺序,依次上传。而对于医院
的某个用户而言,其病史可能有多条,时间间隔又比较大,如果医院或者该用户需要从账本中将该用户的数据记录挑选出来,则需要根据之前在存储时所确定的每条病历记录的哈希值从账本中进行查询,很不方便,而且无法反映出各条病历之间的顺序关系,如果医院在查询该用户的病历时,得到的各条病历之间没有时序的关系,用户体验不佳。
[0064]
基于此,本说明书实施例提供一种数据记录的索引创建方法,应用于通过块链式账本存储数据的中心化的数据库服务端中,可以实现在不必了解对接机构的业务详情时,创建出以业务属性为主键的倒排索引,方便对接机构的业务处理,提高用户体验。
[0065]
以下结合附图,详细说明本说明书各实施例提供的技术方案。如图5所示,图5是本说明书实施例提供的一种块链式账本中的索引创建方法的流程示意图,该流程具体包括如下步骤:
[0066]
s501,获取数据记录中所包含的业务属性和顺序编号。
[0067]
如前所述,数据记录的数据结构已经通过数据结构配置参数所确定,因此其中所包含的业务属性和顺序编号数据库服务端可以基于该账本的配置参数进行解析得到。
[0068]
例如,在数据记录是通过标识字符来标识业务属性和顺序编号时,“oeui d2019ofdataoe99of”,此时,即可以通过标识字符“oe”和“of”得到业务属性为“uid2019”,顺序编号为“99”;
[0069]
又例如,如果指定了占用空间,则直接可以对数据记录[uid2019][data][99]进行占用空间的分段解析,直接读取出业务属性和顺序编号。
[0070]
s503,确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量。
[0071]
如前所述,一个块链式的账本由多个数据块组成,同时,一个数据块中通常包含多个数据记录。因此,在本说明书实施例中,所述的位置信息具体指的是一条数据记录被保存时,处于账本中的哪个数据块上,以及,在该数据块中的什么位置。
[0072]
在本说明书实施例所提供的数据块中,可以有多种方式用来标识不同的数据块,包括数据块的哈希值或者块高。
[0073]
数据块的哈希值为根据前一区块哈希值和自身数据记录进行哈希计算而得到的哈希值,可以用于唯一、明确地标识一个数据块。在块链式的账本中,通常第一个数据块其块高为0,以后每增加一个数据块,块高加1;或者,还可以将数据块的成块时间转换为一个大的单调递增整型数据(一般为12至15位)序列,作为数据块的块高。因此,一个数据块通常有一个明确的块高。
[0074]
又例如,在一个已经确定的要写入数据库的数据块,其中数据记录的排序也已经固定,因此一个数据记录在该数据块中的偏移序号也是明确的,在数据记录的长度为固定单位时,偏移序号同样可以用于明确该数据记录在其所处的数据块中的位置信息。即,偏移序号同样也可以用于指示偏移量。
[0075]
同时,在一个数据块中,由于通常包含了多个数据记录,因此,还可以用各数据记录在该数据块中的地址偏移量来分别标识数据块中的数据记录。显而易见,在同一个数据块中,各数据记录的地址偏移量并不相同。
[0076]
当然,由于在本说明书实施例所提供的方式中,数据块的具体格式是可以自定义的(例如,数据块的块头中所包含的元数据信息和备注信息,数据块的块高所采取的形式等
等),在不同的格式下,位置信息的内容也会有所不同,这并不构成对本方案的限定。
[0077]
s505,建立所述业务属性、位置信息和顺序编号的对应关系,按照所述顺序编号,将所述对应关系依序写入以所述业务属性为主键的索引。
[0078]
即,该索引是一个倒排索引。在该索引中,主键是数据记录中所包含的业务属性。具体的写入方式为,当索引中的主键不包含所述业务属性时,在索引表中创建以所述业务属性为主键的索引记录。
[0079]
当所述索引中的主键包含所述业务属性时,将所述位置信息和顺序编号写入所述业务属性所处的索引记录。
[0080]
如表1所示,表1为本说明书实施例所提供的一种示例性索引表。其中key即为业务属性的具体值,value部分的每个数组即为一条位置信息和顺序编号,
[0081]
value数组中包含三个部分:第一部分为数据记录所处的块高,第二部分为数据记录在该数据块中的偏移序号,第三部分为基于业务属性分类给该数据记录的顺序编号。通过块高和偏移序号即可以唯一的确定一条数据记录。容易理解,在索引表中,一个key可以对应于多个位置信息。例如,对于数组(2,8,1)而言,其中的“2”即为块高,“8”即为偏移序号,“1”即为在业务属性“0x123456”下的顺序编号。
[0082]
表1
[0083][0084]
在索引表中,由于一个业务属性可以对应于多个位置信息和顺序编号(即对应于多个数据记录),因此,在将位置信息写入索引中时,还可以将位置信息和顺序编号,按照所述顺序编号依次进行排列,有利于用户的查询以及验证。数据记录在账本中的先后顺序即体现了数据记录被写入账本的时间,或者体现了用户对于数据记录的先后顺序的确定。
[0085]
通过本说明书实施例所提供的方案,对于写入账本的数据记录,确定出数据记录的业务属性,以及在账本中的存储位置和顺序编号,建立起三者的对应关系,创建以业务属性为主键的倒排索引,不必了解用户的业务详情,从索引中即可以基于业务属性对于数据记录进行依序统计,便于后续的查询和验证。
[0086]
在索引表被创建以后,即可以基于该索引表进行业务属性的状态查询以及统计。例如,接收包含业务属性具体值的查询请求(一般而言,查询请求可以以指令的形式予以发送)。查询请求可以来自于对接机构,也可以是来自于对接机构的服务用户。从而,数据库可以根据业务属性的具体值,从索引表中进行匹配。例如,在表1被创建之后,用户输入查询指令,retrieve(0x123456,&v,full),即可以从索引表中取得用户“0x123456”相应的数据记录的位置信息(2,8,1),(2,10,2),(300,89,3),(300,999,4),进而根据位置信息(2,8),(2,10),(300,89),(300,999)查询得到相应的数据记录,并且根据顺序编号依次的将(2,8),
(2,10),(300,89),(300,999)所对应的数据记录返回至用户,或者,还可以在数据库服务端即根据顺序编号对查询得到的数据记录进行排序,从而返回排序好的多条数据记录至用户。
[0087]
进一步地,在查询时还可以包含用于指定数据块区间的块高参数,例如,用户输入查询指令,retrieve(0x123456,&v,100),用于查询指定的用户0x123456在块高100之前的数据记录。从而,得到位置信息(2,8),(2,10),所对应的数据记录,并依序返回。
[0088]
以及,还可以由两个数据块高确定一段数据块,例如,用户输入查询指令,retrieve(0x123456,&v,200,1000),用于查询指定的用户0x123456在账本中块高200至块高1000之间的数据记录,从而得到位置信息(300,89,3),(300,999,4)所对应的数据记录兵依序返回。
[0089]
通过创建索引,用户想要针对数据记录进行某些统计时,则只需直接依据索引表进行就可以了。例如,对接机构想要统计各用户的数据记录的数量,或者,用户想要知道自身与对接机构的数据记录数量,此时,直接统计在索引表中的各key值之后的value数量就可以了,根据索引中即可以基于业务属性对于数据记录进行依序统计,便于后续的查询和验证。
[0090]
对应的,本说明书实施例还提供一种块链式账本中的索引创建装置,如图6所示,图6是本说明书实施例提供的一种块链式账本中的索引创建装置的结构示意图,包括:
[0091]
获取模块601,获取数据记录中所包含的业务属性和顺序编号;
[0092]
确定模块603,确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;
[0093]
写入模块605,建立所述业务属性、位置信息和顺序编号的对应关系,按照所述顺序编号,将所述对应关系依序写入以所述业务属性为主键的索引;
[0094]
其中,在所述块链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。
[0095]
进一步地,所述获取模块601:接收到用户所发送的数据记录时,获取数据记录中的指定标识字段所包含的业务属性和顺序编号;或者,确定账本中的数据块所包含的数据记录,针对所述数据块中所包含的任一数据记录,获取其指定标识字段所包含的业务属性和顺序编号。
[0096]
进一步地,所述写入模块603,当所述索引中的主键不包含所述业务属性时,在所述索引表中创建以所述业务属性为主键的索引记录;当所述索引中的主键包含所述业务属性时,将所述位置信息和顺序编号和写入所述业务属性所处的索引记录。
[0097]
进一步地,所述装置还包括数据块生成模块607,接收用户所发送的待存储数据,生成包含所述待存储数据的数据记录,确定所述数据记录的哈希值,其中,数据记录中包含业务属性和顺序编号;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第n个数据块,具体包括:
[0098]
当n=1时,初始数据块的哈希值和块高基于预设方式给定;
[0099]
当n>1时,根据待写入数据块中的各数据记录和第n-1个数据块的哈希值确定第n个数据块的哈希值,生成包含第n个数据块的哈希值和各数据记录的第n个数据块,其中,数
据块的块高基于成块时间的先后顺序单调递增。
[0100]
进一步地,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
[0101]
进一步地,所述装置还包括查询模块609,接收包含业务属性具体值的查询指令;根据所述用户业务属性的具体值,从索引表中进行匹配,确定在所述索引表中所述业务属性具体值所对应的位置信息和顺序编号;根据所述位置信息从所述账本中获取对应的数据记录,按照所述顺序编号依序返回获取得到的对应的数据记录至查询指令发送方。
[0102]
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图5所示的块链式账本中的索引创建方法。
[0103]
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0104]
处理器1010可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0105]
存储器1020可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0106]
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0107]
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
[0108]
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0109]
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0110]
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图5所示的块链式账本中的索引创建方法。
[0111]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0112]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
[0113]
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0114]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0115]
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜