数据核对方法、装置、计算机设备和存储介质与流程

文档序号:19156578发布日期:2019-11-16 00:52阅读:195来源:国知局
数据核对方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种数据核查方法、装置、计算机设备和存储介质。



背景技术:

业务系统每天都会有产生大量更新的业务数据,由于业务数据的产生地分布较广,大量的业务数据可能需要进行分布存储,因此往往采用建立多个数据中心的方式进行数据存储,并且分布在各地的业务数据需要进行数据同步。

在数据同步的过程中,常因网络或其他不明原因引起数据同步失败的问题,造成信息的不一致,因此,需要对各地的数据进行核对,而业务数据中包含许多敏感信息,在核对的过程中有很大几率会暴露这些敏感信息,因此,无法完全保证核对过程中业务数据的安全性。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高同步数据核对安全性的数据核对方法、装置、计算机设备和存储介质。

一种数据核对方法,所述方法包括:

当接收到区块链网络中其他区块链节点发送的新增业务数据时,对所述新增业务数据进行数据加密;

将加密后的新增业务数据上传至所述当前区块链节点的节点账本中;

当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配;

当判定出所述更新的业务数据在所有节点账本中均相互匹配时,则对所述更新的业务数据核对通过。

在其中一个实施例中,方法还包括:

接收业务终端发送的业务更新数据;

将所述业务更新数据上传至所述当前区块链节点对应的数据库及节点账本中;

所述数据库将所述业务更新数据同步至所述区块链网络中其他区块链节点的数据库中。

在其中一个实施例中,所述对所述新增业务数据进行数据加密,包括:

从所述新增业务数据中逐条读取新增业务记录;

从各所述新增业务记录中提取出业务标识;

查找所述业务标识对应的敏感字段,及所述敏感字段对应的加密规则;

根据所述加密规则对相应的所述敏感字段进行数据加密。

在其中一个实施例中,所述将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配,包括:

逐条读取当前的节点账本的所述更新的业务数据中各业务记录的流水号;

判断其他节点账本中是否存在与所述流水号一致的业务记录;

当所有节点账本中均存在与所述流水号一致的业务记录时,将所有节点账本中所述业务记录中相应的未加密字段进行匹配校验,将所述业务记录中相应的加密字段进行零知识证明校验;

当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定所述业务记录核对通过。

在其中一个实施例中,所述将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配,包括:

逐条读取当前的节点账本的所述更新的业务数据中各业务记录的流水号;

判断其他节点账本中是否存在与所述流水号一致的业务记录;

当所有节点账本中均存在与所述流水号一致的业务记录时,将所有节点账本中所述业务记录中相应的未加密字段进行匹配校验,将所述业务记录中相应的加密字段进行零知识证明校验;

当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定所述业务记录核对通过。

在其中一个实施例中,方法还包括:

当判定出存在校验未通过的加密字段或未加密字段时,则判定所述业务记录核对失败;

根据所述业务记录的流水号,及所述校验未通过的加密字段或未加密字段生成数据异常报告;

将所述数据异常报告记录于各所述区块链节点的节点账本中。

在其中一个实施例中,方法还包括:

当存在没有所述流水号的业务记录的节点账本时,获取所述流水号对应的业务记录在所述区块链网络中的最早记录时间;

获取当前时间,根据当前时间和所述最早记录时间得到记录间隔时长,并将所述记录间隔时长与预设间隔阈值比较;

当所述记录间隔时长超过所述预设间隔阈值时,则判定所述流水号对应的业务记录匹配失败。

一种数据核对装置,所述装置包括:

数据加密模块,用于当接收到区块链网络中其他区块链节点发送的新增业务数据时,对所述新增业务数据进行数据加密;

数据上链模块,用于将加密后的新增业务数据上传至所述当前区块链节点的节点账本中;

数据匹配模块,用于当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配;

校验判定模块,用于当判定出所述更新的业务数据在所有节点账本中均相互匹配时,则对所述更新的业务数据核对通过。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

上述数据核对方法、装置、计算机设备和存储介质,将更新的业务数据及时上传至区块链网络的节点账本中,在到达预设核对时间时,将预设时间间隔内的更新的业务数据进行自动核对。在进行数据匹配时,无需对已加密的字段进行解密,而是直接对加密字段进行数据匹配,从而保证能够不暴露业务数据中的敏感信息,提高数据校验的安全性。此外,由于区块链本身特有的高传输效率等特点,区块链账本之间进行数据核对能够提高对账的频率和效率,降低异常数据排查成本,并且能够保证账本上存储数据的安全性和稳定性。

附图说明

图1为一个实施例中数据核对方法的应用场景图;

图2为一个实施例中数据核对方法的流程示意图;

图3为一个实施例中数据同步步骤的流程示意图;

图4为一个实施例中数据核对装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的数据核对方法,可以应用于如图1所示的应用环境中。其中,各区块链节点的节点服务器102相互之间通过网络进行通信,构建形成区块链网络。此外,各节点服务器102可以与业务终端104通过网络进行通信。业务终端104可以向节点服务器102发送更新的业务数据,节点服务器102将接收的更新的业务数据上传至本区块链节点的数据库以及节点账本中,当某一个节点的节点服务器102接收到区块链网络中其他区块链节点发送的新增业务数据时,对新增业务数据进行数据加密;将加密后的新增业务数据上传至当前区块链节点的节点账本中;当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配;当判定出更新的业务数据在所有节点账本中均相互匹配时,则对更新的业务数据核对通过。

其中,业务终端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,节点服务器102可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种数据核对方法,以该方法应用于图1中的节点服务器为例进行说明,包括以下步骤:

步骤210,当接收到区块链网络中其他区块链节点发送的新增业务数据时,对新增业务数据进行数据加密。

业务系统设置有多个数据中心,每个数据中心为区块链网络上的一个区块链节点。每个数据中心均配置有节点服务器和节点数据库,多个节点服务器之间通过网络进行通信从而构建形成区块链网络,节点数据库可以为节点服务器内的数据库,也可以为独立的数据库,多个节点数据库之间也可以通过网络进行通信,进行数据库之间的数据同步。

当某一区块链节点的节点服务器检测到其他区块链节点的数据库,向当前节点的数据库同步了更新的新增业务数据时,从当前节点的数据库中抽取更新的新增业务数据。新增业务数据为业务进行过程中产生的数据,如用户注册信息数据、业务订单数据等。当节点服务器从数据库中获取新增业务数据时,节点服务器可以根据数据库中数据的存储时间,从数据库中主动抓取更新的新增业务数据,节点服务器也可以向数据库发送更新数据上传指令,使得数据库根据更新数据上传指令向节点服务器上传更新的新增业务数据。

节点服务器从新增业务数据中提取出业务信息,并查找与业务信息对应的业务数据的预设加密规则,根据获取到的预设加密规则对新增业务数据进行数据加密。不同业务的业务数据中包含的字段数量、内容均有所不同,各业务方可规定预设加密规则,包括需要进行敏感信息屏蔽的字段及相应的加密规则,预设加密规则存储于业务终端,及各节点服务器中。

步骤220,将加密后的新增业务数据上传至当前区块链节点的节点账本中。

节点服务器将加密后的新增业务数据上传至当前区块链节点的节点账本中,节点账本对加密后的新增业务数据进行记账处理。节点账本在对加密后的新增业务数据进行记账时,记录新增业务数据的上传时间,

步骤230,当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配。

区块链网络中的各区块链节点按照预设的核对时间周期对节点账本中的新增数据进行数据核对。预设核对周期是对历史的数据更新周期进行统计分析,计算出数据更新周期的统计学指标,根据统计学指标进行设定的。例如,可以为所统计更新周期的均值、中位值等。例如,可以将预设核对周期设定为5分钟、10分钟、半小时等。节点服务器只对本次时间周期内的增量数据进行核对,不进行二次对账,从而能够避免重复对账,且提高对账效率。

区块链网络中设定启始核对时间,并根据启始核对时间和预设核对周期计算出预设核对时间,区块链网络中每个节点服务器的预设核对时间保持一致。当到达预设核对时间时,各节点服务器自动启动节点账本中更新数据的数据匹配工作。当到达预设核对时间时,各节点服务器从相应的节点账本中读取预设时间间隔内的新增数据,预设时间间隔的时间长度等于预设核对周期,将读取出的新增数据与其他节点账本中读取的新增数据相互之间进行两两匹配。

在进行数据匹配时,可以将区块链网络中的任意一个节点服务器设置为中心服务器,中心服务器与其他节点服务器进行通信,其他节点服务器将读取的更新的业务数据发送至中心服务器,中心服务器将接收到的更新的业务数据及本地读取的更新的业务数据两两之间进行数据匹配。在其他实施例中,也可以不设定中心服务器,由每个节点服务器分别向其他节点服务器发送更新的业务数据,相互之间进行数据匹配。

节点服务器在对更新的业务数据相互之间进行数据匹配时,更新的业务数据中的非加密数据的数据匹配规则可以设定为当数据完全一致时则匹配,也可以设定为当数据符合预设的数值范围时则判定为匹配,还可以设定为当两个互相校验的数据之间符合一定的数据关系则可判定为匹配,也可以设定其他的匹配规则。对于更新的业务数据中的加密数据,无需对加密数据进行解密,利用预设的加密数据之间的核对规则对加密数据进行数据匹配。若业务数据中包含多个字段,则不同字段的匹配规则可以不同。

步骤240,当判定出更新的业务数据在所有节点账本中均相互匹配时,则对更新的业务数据核对通过。

当节点服务器判定出更新的业务数据在所有节点账本中两两比较时均符合匹配规则,相互匹配时,则判定本次预设时间间隔内更新的新增业务数据核对通过。只要有一个节点账本中的新增业务数据与其他节点账本的新增业务数据不匹配时,则判定对新增业务数据核对失败。

上述数据核对方法中,将更新的业务数据及时上传至区块链网络的节点账本中,在到达预设核对时间时,将预设时间间隔内的更新的业务数据进行自动核对。在进行数据匹配时,无需对已加密的字段进行解密,而是直接对加密字段进行数据匹配,从而保证能够不暴露业务数据中的敏感信息,提高数据校验的安全性。此外,由于区块链本身特有的高传输效率等特点,区块链账本之间进行数据核对能够提高对账的频率和效率,降低异常数据排查成本,并且能够保证账本上存储数据的安全性和稳定性。

在一个实施例中,如图3所示,上述方法还可以包括以下数据同步步骤:

步骤202,接收业务终端发送的业务更新数据。

业务终端每天都会收集到或产生大量的新增的业务更新数据,业务更新数据可以包括但不限于用户注册信息、业务更改信息等。业务更新数据可以由多条业务记录组成,每条业务记录为一条更新的业务信息,每条业务记录中可以包括多个字段,如用户标识、用户名、姓名、年龄、职业等多个字段。业务终端定时将业务更新数据上传至与自身相匹配的数据中心,即节点服务器。

其中,业务终端与数据中心的匹配规则可以为设备距离优先原则,即业务终端将业务更新数据发送至与自身地理位置最近的节点服务器;也可以采用业务范围匹配原则,即不同的数据中心存储不同业务范围的数据,业务终端根据业务更新数据的业务范围发送至相应的节点服务器;除此之外,也可以采用距离优先与业务范围匹配相结合的匹配规则,或者其他匹配规则。

步骤204,将业务更新数据上传至当前区块链节点对应的数据库及节点账本中。

节点服务器接收到业务终端上传的业务更新数据之后,将业务更新数据存储至当前区块链节点的数据库中,从而在本地进行数据备份。优选地,数据库按照接收到的业务更新数据的时间对存储的数据进行排序。数据库可以为节点服务器内部的数据库,也可以为独立形式的数据库。同时,节点服务器将接收的业务更新数据上传至当前区块链节点的节点账本中进行数据记账,在将业务更新数据上传至区块链节点账本上之前,节点服务器从业务更新数据中提取出业务信息,并查找与业务信息对应的业务数据的预设加密规则,根据获取到的预设加密规则对业务更新数据进行数据加密,将加密处理后的业务更新数据上传至节点账本中。

步骤206,数据库将业务更新数据同步至区块链网络中其他区块链节点的数据库中。

当前节点的数据库在本地存储业务更新数据之后,将业务更新数据同步至区块链网络中其他区块链节点的数据库中。具体地,各区块链网络之间的数据库通过网络进行通信,各数据库为分布式数据库,采用分布式数据库的数据同步方法,将业务更新数据同步至所有区块链节点的数据库,再由各数据库传输给各自的节点服务器。从而能够保证业务更新数据最快地同步至区块链网络中的各个数据中心,各区块链节点进行同步数据记账。

在一个实施例中,对所述新增业务数据进行数据加密,包括:从所述新增业务数据中逐条读取新增业务记录;从各所述新增业务记录中提取出业务标识;查找所述业务标识对应的敏感字段,及所述敏感字段对应的加密规则;根据所述加密规则对相应的所述敏感字段进行数据加密。

由于不同业务的业务逻辑不同,业务数据中需要隐藏的敏感数据也不同。各业务方可事先设定需要进行数据加密的敏感字段,及各敏感字段的加密规则,将敏感字段及相应的加密规则与业务标识关联存储于业务终端及各节点服务器中。

新增业务数据是由多条新增业务记录组成,每条新增业务记录又可以包含多个业务信息字段,其中包含业务标识字段。节点服务器从新增业务数据中逐条读取新增业务记录,并从各条新增业务记录中提取出业务标识,节点服务器查找业务标识对应的敏感字段及各敏感字段对应的加密规则。节点服务器根据各敏感字段的加密规则对其进行加密处理。

各敏感字段的数据形式不同,因此,在对各敏感字段进行校验时的校验规则也有所差别,如有的需要验证两个账本中的加密字段是否相等,有的需要进行数值范围比对,有的需要进行加减、倍乘关系比对等。不同的验证规则对应于不同的非解密校验等式,其中,敏感字段相当于非解密校验等式的输入,加密规则相当于非解密校验等式的运算函数。因此,各加密字段的加密规则也要适应于非解密校验等式的数据形式,使得加密后的数据满足等式的数据格式要求。

在一个实施例中,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配,包括:逐条读取当前的节点账本的更新的业务数据中各业务记录的流水号;判断其他节点账本中是否存在与流水号一致的业务记录;当所有节点账本中均存在与流水号一致的业务记录时,将所有节点账本中业务记录中相应的未加密字段进行匹配校验,将业务记录中相应的加密字段进行零知识证明校验;当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定业务记录核对通过。

业务数据是由多条业务记录组成,每条业务记录又可以包含多个业务信息字段。节点服务器在将更新的业务数据上传至节点账本时,赋予每条业务记录一个唯一的流水号,流水号可以随机生成,也可以根据各条业务记录在业务终端的记录时间逐序生成。

在进行数据核对时,节点服务器逐条读取更新的业务数据中各条业务记录的流水号,查询其他区块链节点的节点账本中是否存在与读取的流水号相一致的业务记录。例如,若当前节点的节点服务器为中心服务器时,其余各节点的节点服务器将各自更新的业务数据发送至中心服务器,中心服务器逐个从接收的各节点的更新的业务数据中查找是否存在与读取的流水号一致的业务记录。

当节点服务器在所有的节点账本中都查询到与读取的流水号一致的业务记录时,节点服务器再进行将各业务记录中的字段进行相互匹配的步骤。具体地,每个业务记录的数据格式均经过业务终端的标准化处理,因此,每个业务记录中包含的字段也是固定的,字段的校验匹配规则也是确定的。节点服务器中事先存储了各字段的数据匹配规则,对于未加密字段,节点服务器获取各字段对应的校验匹配规则,并根据校验匹配规则将多个节点账本中相应未加密字段的字段值进行两两校验。对于加密字段,节点服务器采用零知识证明的校验方法将多个节点账本中相应加密字段的字段值进行两两校验,即证明者在不向验证者提供任何加密规则信息的情况下,验证者只根据证明者提供的加密字段的字段数值即可判断字段是否匹配。

在一个实施例中,业务记录中相应的加密字段进行零知识证明校验,包括:获取各加密字段的加密规则对应的零知识证明等式;将各业务记录中相应的加密字段两两输入零知识证明等式中,判断零知识证明等式是否成立;当判定所有两两输入的零知识证明等式均成立时,则判定对加密字段零知识证明校验通过。

在本实施例中,零知识证明校验采用starks(可扩容的透明知识论证)零知识证明技术,零知识证明等式的数据结构如以下公式(1):

c(p(x1))=z(x2)*d(x2)(1)

其中,x1为节点账本1中一个加密字段加密前的字段数值,x2为节点账本2中相对应加密字段加密前的字段数值,p()和d()分别表示节点账本1和节点账本2中该加密字段的加密函数,相当于两个账本的加密的私钥。z()为公知的证明规则,相当于各节点账本的公钥,公钥可以存储于智能合约中,c()为约束条件,不同的加密字段更具相应的加密规则可以设置不同的约束条件。因此,由于加密规则和约束条件的不同,不同的字段对应与不同的零知识证明等式。

服务器从各加密字段的加密规则中提取出零知识证明等式,并将各加密字段在各账本中的加密字段数值作为输入参数两两输入零知识证明等式中,判定输入参数后的零知识证明等式是否成立,当计算出零知识证明等式成立时,则判定该字段在两个节点账本中数值匹配,当该加密字段在所有节点账本中均匹配时,则判定对该加密字段零知识证明校验通过。否则,只要存在输入参数后零知识证明等式不成立的节点账本,则判定对该加密字段校验失败。

在一个实施例中,业务记录中相应的加密字段进行零知识证明校验,包括:区块链节点对应的服务器将加密字段对应的加密前的明文字段、加密私钥的盲因子、及加密字段的哈希值均发送至二级节点,二级节点可以为用于计算签名结果的服务器,二级节点通过网络与区块链网络进行通信。二级节点根据明文字段、盲因子和加密字段的哈希值计算出签名结果,将签名结果上传至区块链网络,区块链网络根据密文字段计算出公钥,再根据公钥对加密字段的哈希值进行签名,将该签名与二级节点上传的签名结果进行验签比较,当验签通过时,则业务记录中相应的加密字段通过零知识证明校验,否则,零知识证明校验失败。

具体地,当要验证两个加密字段相等时,假设a和b这两个加密字段都是密码学中的perdesencommitment格式,使用ecc椭圆曲线,描述如下:a=a*g+x1*h;b=b*g+x2*h;其中,a、b为密文字段,a、b为明文字段,x1、x2为盲因子,h点为h=h*g,h为私钥,二级节点对p256曲线的参数进行替换,得到一条新的以h点为基点的p256曲线s,在二级节点上计算:message=hash(string(a)+string(b));同时,计算(x1-x2),并以(x1-x2)为私钥,对message进行签名,得到签名码sig,将sig签名码发送到区块链网络上;区块链网络计算c=a-b,得到公钥c;计算加密字段哈希值message=hash(string(a)+string(b)),用c对message进行签名,如果签名通过,则说明a和b相等。进一步地,建立在同态加密算法的基础之上,除了可以比较a和b之外,假设存在perdesencommitment格式的加密数据a1,a2,a3...,以及b1,b2,b3...,可以比较(a1+a2+a3+...)和(b1+b2+b3+...)是否相等。

当要验证两个加密字段的大小关系时,在二级节点上计算message=hash(string(a)+string(b));同时计算y=(x1-x2),c=(a-b);以message,c,y为参数,进行rangeproof计算,得到签名结果sig,将sig签名码发送到区块链网络上。区块链网络上的节点服务器计算message=hash(string(a)+string(b)),同时计算:c=(a-b);以message,c,sig为参数,进行rangeproof验签,如果验签通过,则说明c的明文c是一个范围在[0,2^32)的整数;进一步地,证明某个数隶属于一个范围内,也是非常常见的需求,比如a<=n<=b,此时,可以同时提供(n-a)>=0&&(b-n)>=0的证明,即可证明n隶属于[a,b]之间。

进一步地,节点服务器可以根据匹配失败的业务记录中的,匹配失败的字段和该业务记录的流水号生成数据异常报告。可以将数据异常报告保存至本地或记录在节点账本中,从而便于相应的业务终端进行数据同步异常的问题排查。

在一个实施例中,数据核对方法还可以包括以下步骤:当存在没有流水号的业务记录的节点账本时,获取流水号对应的业务记录在区块链网络中的最早记录时间;获取当前时间,根据当前时间和最早记录时间得到记录间隔时长,并将记录间隔时长与预设间隔阈值比较;当记录间隔时长超过预设间隔阈值时,则判定流水号对应的业务记录匹配失败。

节点服务器根据流水号在各节点账本中进行业务记录查询时,当节点服务器查找到没有与读取的流水号一致的业务记录的节点账本时,节点服务器获取其余的存在该流水号的业务记录的节点账本中,该业务记录的记录时间,记录时间为节点账本对该记录进行记账的时间。节点服务器从各记录时间中查找出给业务记录在区块链网络中的最早记录时间。

节点服务器获取当前时间,计算当前时间与最早记录时间的时间差值从而得到记录间隔时长。节点服务器获取预设间隔阈值,预设间隔阈值用于衡量记录是否超最大同步延迟时长,节点服务器将记录间隔时长与预设间隔阈值进行比较,当根据比较结果判定出记录间隔时长超过预设间隔阈值时,节点服务器判定读取的流水号对应的业务记录匹配失败,该业务记录可能由于网络故障等问题同步失败。

进一步地,节点服务器可以获取缺失该流水号对应的业务记录的节点账本对应的节点代码,根据节点代码和流水号生成数据异常报告,可以将数据异常报告保存至本地或记录在节点账本中,从而便于相应的业务终端进行数据同步异常的问题排查。

在一个实施例中,上述方法还可以包括以下步骤:当记录间隔时长未超过预设间隔阈值时,将所有节点账本中流水号对应的业务更新记录的记录时间修改为当前时间。

当节点服务器判定出记录间隔时长未超过预设间隔阈值时,则将其余的存在该流水号的业务记录的节点账本中,该条业务记录的记录时间修改为当前时间。从而该条业务记录不再进行字段值的数据核对,即在本次核对周期内不再进行数据核对,该条记录可能是由于网络延迟等原因尚未进行同步,因此不能仅由于业务记录的暂时缺失就判定该记录同步失败。将其余节点账本中该条业务记录的记录时间修改为当前时间,可以使其自动进入下一核对周期的数据核对。

在本实施例中,在业务记录在节点账本中存在缺失的情况下,通过设定预设间隔阈值,可以确保所有的业务记录只进行一次对账,避免重复对账工作。

在一个实施例中,数据核对方法还可以包括以下步骤:当判定出存在校验未通过的加密字段或未加密字段时,则判定所述业务记录核对失败;根据所述业务记录的流水号,及所述校验未通过的加密字段或未加密字段生成数据异常报告;将所述数据异常报告记录于各所述区块链节点的节点账本中。

当节点服务器对更新的业务记录中的各字段在所有节点账本之间进行两两匹配时,当检测出未通过数据校验的加密字段或未加密字段时,则判定该条更新的业务记录核对失败。

节点服务器获取数据匹配失败的业务记录,其中包含在某些节点账本中存在数据缺失的业务记录,以及字段值在各账本之间相互校验失败的业务记录,节点服务器根据数据匹配失败的业务记录生成数据核对报告。在数据核对报告中,对于数据缺失的业务记录,节点服务器可以直接列出匹配失败的业务记录;对于字段校验失败的业务记录,节点服务器也获取业务记录的流水号,及校验失败的加密字段和/或未加密字段,并获取各字段的校验失败原因,节点服务器根据流水号和校验失败原因生成数据核对报告;也可以采用其他方式生成数据异常报告。

节点服务器在数据核对报告中记录核对时间,核对时间设定为当前时间。节点服务器将生成的数据异常报告上传至当前节点的节点账本中,同时同步给当前节点的数据库,由数据库将数据核对报告同步至其他节点的数据库中,再由其他节点的数据库上传给其他节点的节点服务器,由其他节点的节点服务器上传至相应的节点账本中,从而将数据异常报告记录在区块链网络中。

在一个实施例中,上述方法还可以包括以下步骤:接收业务终端发送的异常账单查询请求,异常账单查询请求中携带查询时间范围;查找当前区块链节点的节点账本中查询时间范围内的数据异常报告;将数据异常报告返回给业务终端。

业务终端需要核查上传的业务数据是否记账成功,业务终端可以定期向相匹配的节点服务器发送异常账单查询请求,也可以由审核人员通过操作业务终端主动向匹配的节点服务器发送异常账单查询请求。异常账单查询请求用户向节点服务器请求查询记账异常的业务数据,异常账单查询请求中携带终端已上传的业务数据的查询时间范围。节点服务器接收业务终端发送的异常账单查询请求,并从异常账单查询请求中提取查询时间范围。节点服务器从当前区块链节点的节点账本中搜索记录时间处于查询时间范围内的数据异常报告,并将数据异常报告返回给业务终端。

在本实施例中,业务终端在向节点服务器发送异常账单查询请求时,可以直接从区块链节点的节点账本中获取到查询时间范围内的异常数据记录,从而可以有效缩短数据核对时间,降低数据核对成本。

应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种数据核对装置,包括:数据加密模块410、数据上传模块420、数据匹配模块430和核对判定模块440,其中:

数据加密模块410,用于当接收到区块链网络中其他区块链节点发送的新增业务数据时,对所述新增业务数据进行数据加密。

数据上传模块420,用于将加密后的新增业务数据上传至所述当前区块链节点的节点账本中。

数据匹配模块430,用于当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配。

核对判定模块440,用于当判定出所述更新的业务数据在所有节点账本中均相互匹配时,则对所述更新的业务数据核对通过。

在一个实施例中,数据核对装置还可以包括:

更新数据接收模块,用于接收业务终端发送的业务更新数据。

更新数据上传模块,用于将业务更新数据上传至当前区块链节点对应的数据库及节点账本中。

数据库同步模块,用于数据库将业务更新数据同步至区块链网络中其他区块链节点的数据库中。

在一个实施例中,数据加密模块410可以包括:

记录读取单元,用于从所述新增业务数据中逐条读取新增业务记录。

标识提取模块,用于从各所述新增业务记录中提取出业务标识。

加密信息查找单元,用于查找所述业务标识对应的敏感字段,及所述敏感字段对应的加密规则。

加密处理单元,用于根据所述加密规则对相应的所述敏感字段进行数据加密。

在一个实施例中,数据匹配模块430可以包括:

流水号读取单元,用于逐条读取当前的节点账本的所述更新的业务数据中各业务记录的流水号。

一致判定单元,用于判断其他节点账本中是否存在与所述流水号一致的业务记录。

字段校验单元,用于当所有节点账本中均存在与所述流水号一致的业务记录时,将所有节点账本中所述业务记录中相应的未加密字段进行匹配校验,将所述业务记录中相应的加密字段进行零知识证明校验。

校验判定单元,用于当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定所述业务记录核对通过。

在一个实施例中,字段校验单元可以包括:

等式获取子单元,用于获取各所述加密字段的加密规则对应的零知识证明等式。

等式判定子单元,用于将各所述业务记录中相应的加密字段两两输入所述零知识证明等式中,判断所述零知识证明等式是否成立。

结果判定子单元,用于当判定所有两两输入的零知识证明等式均成立时,则判定对所述加密字段零知识证明校验通过。

在一个实施例中,数据核对装置还可以包括:

失败判定模块,用于当判定出存在校验未通过的加密字段或未加密字段时,则判定所述业务记录核对失败。

报告生成模块,用于根据所述业务记录的流水号,及所述校验未通过的加密字段或未加密字段生成数据异常报告;

报告记录模块,用于将所述数据异常报告记录于各所述区块链节点的节点账本中。

在一个实施例中,数据核对装置还可以包括:

时间获取模块,用于当存在没有所述流水号的业务记录的节点账本时,获取所述流水号对应的业务记录在所述区块链网络中的最早记录时间。

时长比较模块,用于获取当前时间,根据当前时间和所述最早记录时间得到记录间隔时长,并将所述记录间隔时长与预设间隔阈值比较。

失败判定模块,用于当所述记录间隔时长超过所述预设间隔阈值时,则判定所述流水号对应的业务记录匹配失败。

关于数据核对装置的具体限定可以参见上文中对于数据核对方法的限定,在此不再赘述。上述数据核对装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据核对数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据核对方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:当接收到区块链网络中其他区块链节点发送的新增业务数据时,对所述新增业务数据进行数据加密将加密后的新增业务数据上传至所述当前区块链节点的节点账本中;当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配;当判定出所述更新的业务数据在所有节点账本中均相互匹配时,则对所述更新的业务数据核对通过。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收业务终端发送的业务更新数据;将所述业务更新数据上传至所述当前区块链节点对应的数据库及节点账本中;所述数据库将所述业务更新数据同步至所述区块链网络中其他区块链节点的数据库中。

在一个实施例中,处理器执行计算机程序时实现对所述新增业务数据进行数据加密的步骤时还用于:逐条读取当前的节点账本的第二业务数据中各业务记录的流水号;从所述新增业务数据中逐条读取新增业务记录;从各所述新增业务记录中提取出业务标识;查找所述业务标识对应的敏感字段,及所述敏感字段对应的加密规则;根据所述加密规则对相应的所述敏感字段进行数据加密。

在一个实施例中,处理器执行计算机程序时实现将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配的步骤时还用于:逐条读取当前的节点账本的所述更新的业务数据中各业务记录的流水号;判断其他节点账本中是否存在与所述流水号一致的业务记录;当所有节点账本中均存在与所述流水号一致的业务记录时,将所有节点账本中所述业务记录中相应的未加密字段进行匹配校验,将所述业务记录中相应的加密字段进行零知识证明校验;当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定所述业务记录核对通过。

在一个实施例中,处理器执行计算机程序时实现将所述业务记录中相应的加密字段进行零知识证明校验的步骤时还用于:获取各所述加密字段的加密规则对应的零知识证明等式;将各所述业务记录中相应的加密字段两两输入所述零知识证明等式中,判断所述零知识证明等式是否成立;当判定所有两两输入的零知识证明等式均成立时,则判定对所述加密字段零知识证明校验通过。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:当判定出存在校验未通过的加密字段或未加密字段时,则判定所述业务记录核对失败根据所述业务记录的流水号,及所述校验未通过的加密字段或未加密字段生成数据异常报告;将所述数据异常报告记录于各所述区块链节点的节点账本中。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:当存在没有所述流水号的业务记录的节点账本时,获取所述流水号对应的业务记录在所述区块链网络中的最早记录时间;获取当前时间,根据当前时间和所述最早记录时间得到记录间隔时长,并将所述记录间隔时长与预设间隔阈值比较;当所述记录间隔时长超过所述预设间隔阈值时,则判定所述流水号对应的业务记录匹配失败。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:当接收到区块链网络中其他区块链节点发送的新增业务数据时,对所述新增业务数据进行数据加密将加密后的新增业务数据上传至所述当前区块链节点的节点账本中;当到达预设核对时间时,将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配;当判定出所述更新的业务数据在所有节点账本中均相互匹配时,则对所述更新的业务数据核对通过。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收业务终端发送的业务更新数据;将业务更新数据上传至当前区块链节点对应的数据库及节点账本中;数据库将业务更新数据同步至区块链网络中其他区块链节点的数据库中。

在一个实施例中,计算机程序被处理器执行时实现对所述新增业务数据进行数据加密的步骤时还用于:逐条读取当前的节点账本的第二业务数据中各业务记录的流水号;从所述新增业务数据中逐条读取新增业务记录;从各所述新增业务记录中提取出业务标识;查找所述业务标识对应的敏感字段,及所述敏感字段对应的加密规则;根据所述加密规则对相应的所述敏感字段进行数据加密。

在一个实施例中,计算机程序被处理器执行时实现将区块链网络中所有区块链节点的节点账本中,预设时间间隔内更新的业务数据相互之间进行非解密状态的数据匹配的步骤时还用于:逐条读取当前的节点账本的所述更新的业务数据中各业务记录的流水号;判断其他节点账本中是否存在与所述流水号一致的业务记录;当所有节点账本中均存在与所述流水号一致的业务记录时,将所有节点账本中所述业务记录中相应的未加密字段进行匹配校验,将所述业务记录中相应的加密字段进行零知识证明校验;当所有未加密字段均匹配且所有加密字段均通过零知识证明校验时,则判定所述业务记录核对通过。

在一个实施例中,计算机程序被处理器执行时实现将所述业务记录中相应的加密字段进行零知识证明校验的步骤时还用于:获取各所述加密字段的加密规则对应的零知识证明等式;将各所述业务记录中相应的加密字段两两输入所述零知识证明等式中,判断所述零知识证明等式是否成立;当判定所有两两输入的零知识证明等式均成立时,则判定对所述加密字段零知识证明校验通过。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当判定出存在校验未通过的加密字段或未加密字段时,则判定所述业务记录核对失败根据所述业务记录的流水号,及所述校验未通过的加密字段或未加密字段生成数据异常报告;将所述数据异常报告记录于各所述区块链节点的节点账本中。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当存在没有所述流水号的业务记录的节点账本时,获取所述流水号对应的业务记录在所述区块链网络中的最早记录时间;获取当前时间,根据当前时间和所述最早记录时间得到记录间隔时长,并将所述记录间隔时长与预设间隔阈值比较;当所述记录间隔时长超过所述预设间隔阈值时,则判定所述流水号对应的业务记录匹配失败。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1