一种块链式账本中数据记录的验证方法、装置及设备制造方法及图纸

技术编号:24995810 阅读:22 留言:0更新日期:2020-07-24 17:58
公开了一种块链式账本中数据记录的验证方法、装置及设备。通过本说明书实施例所提供的方案,在清除账本时,对于用户相关的数据记录进行筛选,得到第一数据记录集合,进而根据第一数据记录集合构建出第一默克尔树,并写入账本中,从而可以根据账本中所存储的第一默克尔树对已经清除掉的第一数据记录进行验证。

【技术实现步骤摘要】
一种块链式账本中数据记录的验证方法、装置及设备
本说明书实施例涉及信息
,尤其涉及一种块链式账本中数据记录的验证方法、装置及设备。
技术介绍
在以中心化的块链式账本对外提供服务的数据库服务端中,可以对块链式账本执行清除操作,清除掉的账本即视为不存在。但是在清除掉的账本中仍然存在一些用户相关的数据记录,用户可能需要对于这些已经清除的数据记录进行完整性验证。
技术实现思路
本申请实施例的目的是提供一种在块链式账本中对于已经清除的数据记录可以进行验证的方案。为解决上述技术问题,本申请实施例是这样实现的:一种块链式账本中数据记录的验证方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:执行用户所确定的在所述账本中的第一次清除指令,清除指令用于在所述账本中清除最前端的连续的部分账本;确定被清除的部分账本中与所述用户相关的第一数据记录,构成包含第一数据记录的第一数据记录集合;根据所述第一数据记录集合构建出第一默克尔树;将所述第一默克尔树以数据记录的形式写入所述块链式账本中,以便根据账本中所存储的第一默克尔树对所述第一数据记录进行验证。对应的,本说明书实施例还提供一种块链式账本中数据记录的验证装置,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:清除模块,执行用户所确定的在所述账本中的第一次清除指令,清除指令用于在所述账本中清除最前端的连续的部分账本;确定模块,确定被清除的部分账本中与所述用户相关的第一数据记录,构成包含第一数据记录的第一数据记录集合;生成模块,根据所述第一数据记录集合构建出第一默克尔树;写入模块,将所述第一默克尔树以数据记录的形式写入所述块链式账本中,以便根据账本中所存储的第一默克尔树对所述第一数据记录进行验证。通过本说明书实施例所提供的方案,在清除账本时,对于用户相关的数据记录进行筛选,得到第一数据记录集合,进而根据第一数据记录集合构建出第一默克尔树,并写入账本中,从而可以根据账本中所存储的第一默克尔树对已经清除掉的第一数据记录进行验证,满足用户的需要,提高用户体验。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为本说明书实施例所涉及的系统架构示意图;图2为本说明书实施例所提供的一种生成块链式账本的流程示意图;图3为本说明书实施例所提供的一种数据块的块头的示意图;图4是本说明书实施例提供的一种块链式账本中数据记录的验证方法的流程示意图;图5为本说明书实施例所给出的第二默克尔树的生成方式示意图;图6是本说明书实施例提供的一种块链式账本中数据记录的验证装置的结构示意图;图7是用于配置本说明书实施例方法的一种设备的结构示意图。具体实施方式为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。首先对本说明书实施例中所涉及的以块链式账本存储数据记录的中心化的数据库服务端进行说明。数据库服务端面向的常常为各种机构,各机构则可以将它们与第三方用户(包括其它机构或者个人)之间所产生的数据记录在数据库服务方进行存储。如图1所示,图1为本说明书实施例所涉及的系统架构示意图。在该示意图中,一个企业机构可以面向多名机构或者用户提供服务,而每个用户均可以直接的或者间接地将数据记录存储至数据服务端中。例如,数据库服务端对接的机构是某金融产品公司,数据记录可以是个人用户在该金融产品公司的理财记录;或者,对接的机构可以是政府部门,其中的数据记录是政府部门对于该部门所管理的公共项目的开销明细;或者,数据库服务方对接的机构是某个医院,其中的数据记录是病人的病历;或者,数据库服务方对接的机构是第三方支付机构,数据记录可以是个人用户通过该机构的支付记录,等等。此外需要说明的是,在一个账本中,可能会存在多个参与方,例如,对于用户A、B和C而言,共同参与了一个项目,从而各用户都会产生相应的数据记录,进而用户A、B和C均可以往项目所对应的账本中进行数据记录的存储。在中心化的数据库服务提供方,块链式的账本通过如下方式生成,如图2所示,图2为本说明书实施例所提供的一种生成块链式账本的流程示意图,包括:S201,接收待存储的数据记录,确定各数据记录的哈希值。如前所述,此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。在一种实施例中,数据记录中可以包含有业务属性。在每个与数据库服务方对接的机构中,所述业务属性在所述对接机构中,一般而言是唯一存在的,业务属性基于不同的业务场景,可以包括用户名、用户身份证号、驾照编号、手机号、项目唯一编号、数据记录的种类(例如,各种报表的型号、收据、发票或者支出表等)等等。例如,对于第三方支付机构而言,数据记录是用户的消费记录,此时的业务属性即为用户标识(包括手机号、身份证号、用户名等等),或者对该用户标识进行哈希算法所得到的哈希值;或者,对于政府机构而言,数据记录为多个公共项目的开销流水,则此时的业务属性可以为每个项目的唯一编号。业务属性可以存储于数据记录中的指定字段(例如,数据记录的头部或者尾部),从而可以方便数据库服务端以及用户从中获取该数据记录的业务属性。需要说明的是,在同一账本中,可以包含有多条数据记录。这些数据记录的业务属性则很可能是不一样的。例如,在一个账本面向多个用户开放时,数据记录可能来源于不同的用户,若业务属性为用户标识,则容易理解不同的数据记录中常常包含了不同的用户标识。在同一用户所上传的数据记录中,也可能包含有多种不同的业务属性。例如,在账本中用于记录资金往来时,数据记录的业务属性可能是各种报表的型号、收据、发票或者收入/支出表等等。S203,当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块。所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成本文档来自技高网...

【技术保护点】
1.一种块链式账本中数据记录的验证方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:/n执行用户所确定的在所述账本中的第一次清除指令,清除指令用于在所述账本中清除最前端的连续的部分账本;/n确定被清除的部分账本中与所述用户相关的第一数据记录,构成包含第一数据记录的第一数据记录集合;/n根据所述第一数据记录集合构建出第一默克尔树;/n将所述第一默克尔树以数据记录的形式写入所述块链式账本中,以便根据账本中所存储的第一默克尔树对所述第一数据记录进行验证。/n

【技术特征摘要】
1.一种块链式账本中数据记录的验证方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:
执行用户所确定的在所述账本中的第一次清除指令,清除指令用于在所述账本中清除最前端的连续的部分账本;
确定被清除的部分账本中与所述用户相关的第一数据记录,构成包含第一数据记录的第一数据记录集合;
根据所述第一数据记录集合构建出第一默克尔树;
将所述第一默克尔树以数据记录的形式写入所述块链式账本中,以便根据账本中所存储的第一默克尔树对所述第一数据记录进行验证。


2.如权利要求1所述的方法,确定被清除的数据记录中与用户相关的第一数据记录,包括:
遍历所述被清除的账本,确定被清除的账本中包含所述用户签名的数据记录,将包含所述用户签名的数据记录确定为第一数据记录;
或者,获取用户所指定的业务属性,确定被清除的账本中包含所述业务属性的数据记录,将包含所述业务属性的数据记录确定为与用户相关的第一数据记录。


3.如权利要求1所述的方法,根据所述第一数据记录集合构建出第一默克尔树,包括:
按照第一数据记录集合中的每一数据记录在所述账本中的位置先后依序排列,所谓位置包括数据记录所处的块高和在数据块中的偏移量,块高和偏移量越小,位置排序越靠前;
根据依序排列后的部分数据记录的哈希值构建出第一默克尔树。


4.如权利要求1所述的方法,将所述默克尔树以数据记录的形式写入所述块链式账本中,包括:
服务端对所述默克尔树进行数字签名,并将服务端的数字签名和所述默克尔树发送至用户,以便用户在验证所述服务端的数字签名之后对所述默克尔树进行数字签名;
接收用户发送的用户的数字签名,将包含所述服务端的数字签名和用户的数字签名的默克尔树以数据记录的形式写入所述块链式账本中。


5.如权利要求1所述的方法,所述方法还包括:
接收用户所发送的验证指令,所述验证指令中包含待验证的数据记录的哈希值,所述待验证的数据记录属于所述第一数据记录集合;
根据所述第一默克尔树对所述哈希值执行完整性验证。


6.如权利要求1所述的方法,所述方法还包括:
执行用户所确定的在所述账本中的第K次清除指令,K>1;
确定所述第K次清除指令所清除的账本中与用户相关的第K数据记录,构成包含第K数据记录的第K数据记录集合;
获取第K-1次清除时所产生的第K-1默克尔树,根据所述第K数据记录集合与所述第K-1默克尔树构建出第K默克尔树;
将所述第K默克尔树以数据记录的形式写入所述块链式账本中。


7.如权利要求6所述的方法,所述方法还包括:
接收用户所发送的验证指令,所述验证指令中包含待验证的数据记录的哈希值,所述待验证的数据记录属于被清除的数据记录中与用户相关的数据记录中与用户相关的数据记录;
根据所述第K默克尔树对所述哈希值执行完整性验证。


8.如权利要求1所述的方法,在所述块链式账本中,数据块通过如下方式生成:
接收用户所发送的待存储的数据记录,确定所述数据记录的哈希值;
当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和各数据记录的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。


9....

【专利技术属性】
技术研发人员:杨新颖
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1