CN116015609A - 业务记录存储方法、装置、计算机设备和存储介质 - Google Patents
业务记录存储方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116015609A CN116015609A CN202211589992.7A CN202211589992A CN116015609A CN 116015609 A CN116015609 A CN 116015609A CN 202211589992 A CN202211589992 A CN 202211589992A CN 116015609 A CN116015609 A CN 116015609A
- Authority
- CN
- China
- Prior art keywords
- node
- hash value
- information
- binary tree
- account
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种业务记录存储方法、装置、计算机设备、存储介质和计算机程序产品,可应用于信息安全技术领域,能够兼顾业务记录信息固证时的便捷性和安全性。所述方法包括:确定预设时间段内多个账户中每个账户对应的业务记录信息;针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种业务记录存储方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,对业务记录信息存储安全性的要求越来越高,而区块链作为一种新型的去中心化分布式账本,具有不可篡改等特点,可以提高业务记录信息的存储安全性。
在相关技术中,在利用区块链进行存储时,多个业务方的业务系统可以先改造成区块链系统,然后基于共识算法,对业务方的相关业务记录信息进行存储和固证。
然而,在基于区块链的业务记录信息存储,一方面,需要多个业务方耗费大量资源进行系统改进以及共识算法的相关决策,另一方面,该方式也缺乏可监督性,业务方仍然具备伪造客户交易记录再上传区块链的能力。可见,相关技术在对业务记录信息进行固证时难以兼顾便捷性和安全性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够兼顾便捷性和安全性的业务记录存储方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种业务记录存储方法。所述方法包括:
确定预设时间段内多个账户中每个账户对应的业务记录信息;
针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
在其中一个实施例中,所述根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值,包括:
将多个账户中每个账户对应的业务记录汇总信息,作为对应第一叶子节点的节点信息;
根据每个第一叶子节点的节点信息构造第一二叉树;所述第一二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第一叶子节点;
根据所述第一二叉树的第一根节点的节点信息,获取第一哈希值。
在其中一个实施例中,在所述将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链之后,还包括:
若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第一二叉树的中间节点对应的节点信息;所述第一二叉树的中间节点为所述目标业务记录信息关联的目标第一叶子节点与所述第一根节点之间的节点链路上的节点;
根据所述目标第一叶子节点的节点信息和所述第一二叉树的中间节点对应的节点信息,确定第一待校验哈希值;
根据所述第一待校验哈希值与所述可信中心上链的所述第一哈希值的比较结果,确定所述目标业务记录信息的校验结果。
在其中一个实施例中,所述根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,包括:
将多个账户中每个账户对应的业务记录信息,作为对应第二叶子节点的节点信息;
根据每个第二叶子节点的节点信息构造第二二叉树;所述第二二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的子节点的节点信息的哈希值,所述子节点包括所述第二叶子节点;
根据所述第二二叉树的第二根节点的节点信息,确定第二哈希值。
在其中一个实施例中,在所述将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链之后,还包括:
若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第二二叉树的中间节点对应的节点信息;所述中间节点为所述目标业务记录信息对应的目标第二叶子节点与所述第二二叉树的第二根节点之间的节点链路上的非叶子节点;
根据所述目标业务记录信息和所述第二二叉树的中间节点对应的节点信息,确定第二待校验哈希值;
根据所述第二待校验哈希值与所述可信中心上链的所述第二哈希值的比较结果,确定所述目标业务记录信息的校验结果。
在其中一个实施例中,所述根据所述第二二叉树的第二根节点的节点信息,确定第二哈希值,包括:
基于所述第二二叉树的第二根节点的节点信息,获取与所述第二根节点关联的两个子节点的节点信息的哈希值;
对所述两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,得到第二哈希值。
在其中一个实施例中,所述根据多个第二叶子节点各自的节点信息构造第二二叉树,包括:
确定待构造的第二二叉树当前层中各个节点;其中,第二二叉树的首层包括多个第二叶子节点;
获取多组节点,根据每组节点中各节点的节点信息的哈希值,得到下一层中的每个节点对应的节点信息,并将下一层确定为当前层;每组节点包括至多两个节点,且各组节点中的节点不同;
返回执行所述确定待构建的第二二叉树当前层中各个节点的步骤,直到当前层中的节点数量小于预设阈值,得到构造好的第二二叉树。
在其中一个实施例中,所述根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息,包括:
将所述账户对应的各条业务记录信息,作为对应第三叶子节点的节点信息;
根据每个第三叶子节点的节点信息构造第三二叉树;所述第三二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第三叶子节点;
根据所述第三二叉树的第三根节点的节点信息,获取经所述账户确认的业务记录汇总信息。
第二方面,本申请还提供了一种业务记录存储装置。所述装置包括:
记录信息收集模块,用于确定预设时间段内多个账户中每个账户对应的业务记录信息;
汇总信息生成模块,用于针对每个所述账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
第一哈希值确定模块,用于根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
第二哈希值确定模块,用于根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
哈希值存储模块,用于将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
确定预设时间段内多个账户中每个账户对应的业务记录信息;
针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
确定预设时间段内多个账户中每个账户对应的业务记录信息;
针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
确定预设时间段内多个账户中每个账户对应的业务记录信息;
针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
上述业务记录存储方法、装置、计算机设备、存储介质和计算机程序产品服务端可以确定预设时间段内多个账户中每个账户对应的业务记录信息,针对每个账户,可以根据该账户对应的各条业务记录信息,获取经该账户确认的该账户对应的业务记录汇总信息,进而可以根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;服务端还可以根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,然后可以将第一哈希值与第二哈希值关联,并将关联的第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。本申请中,一方面,可以以账户为汇总维度,基于各账户的业务记录汇总信息生对应第一哈希值进行固证,供用户及时校验自身的业务记录信息是否被篡改,另一方面,业务方自身可基于获取的多条业务记录生成第二哈希值进行固证,并通过将关联的第一哈希值和第二哈希值发送到可信中心进行上链,在便于后续对第一哈希值和第二哈希值进行相互校验同时,无需业务方进行区块链改造,从而可以在对业务记录信息进行固证时兼顾便捷性和安全性。
附图说明
图1为一个实施例中一种业务记录存储方法的应用环境图;
图2为一个实施例中一种业务记录存储方法的流程示意图;
图3为一个实施例中一种确定第一哈希值的步骤的流程示意图;
图4为一个实施例中一种第一二叉树的示意图;
图5为一个实施例中输入内容与哈希值的映射关系示意图;
图6为一个实施例中一种确定第二哈希值的步骤的流程示意图;
图7为一个实施例中一种第二二叉树的示意图;
图8a为一个实施例中一种二叉树构造方式的示意图;
图8b为一个实施例中另一种二叉树构造方式的示意图;
图9为一个实施例中一种节点链路的示意图;
图10为一个实施例中一种第三二叉树的示意图;
图11为一个实施例中一种业务记录信息的关系示意图;
图12为一个实施例中一种可信中心的链的示意图;
图13为一个实施例中业务记录存储装置的结构框图;
图14为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请提供的业务记录存储方法、装置、计算机设备、存储介质和计算机程序产品,可以应用于信息安全技术领域,也可以应用于其他相关领域。
为了便于对本发明实施例的理解,先对相关技术对业务信息进行存储、固证的方式进行说明。区块链作为一种新型的去中心化分布式账本,具有不可篡改等特点。近年来,区块链技术加速发展,不断在新的领域尝试落地,特别是金融、政务、社会公共服务、社交等行业得到了推广应用。区块链的防篡改性,能很好地用于证据管理。
但区块链方案存在两方面的问题:一方面,基于区块链的存储方式需要某种共识算法,需要区块链中各个节点达成一致意见或在多个选项中确定某个目标选项,在此过程中需要各个节点参与计算并消耗相应的算力,这将大大影响效率和浪费算力,另一方面,业务方的系统通常是非区块链系统,产生的大量证据信息无法直接进入区块链,在基于区块链进行存储时往往需要耗费大量的资源和时间改造成区块链系统,对日常运行造成巨大影响。并且,业务方也具有伪造业务记录信息的可能,用户。
本申请实施例提供的一种业务记录存储方法,可以应用于如图1所示的应用环境中,该应用环境包括终端、服务端和可信中心;终端可以是一个或多个终端;服务端可以是业务方的服务端,可用于与终端进行交互,并获取终端上登录的账户关联的业务记录信息;可信中心可以是服务端确认可信任的处理中心。
在本申请中,用户可以通过登录了对应账户的终端办理相关的业务,在业务处理过程中,终端可以与服务端进行交互,并生成与账户关联的业务记录信息。在预设时间段内,服务端可以同时与多个终端通信,并相应获取到该时间段多个账户中每个账户对应的业务记录信息。针对每个账户,服务端可以根据账户的各条业务记录信息,获取经账户确认的该账户对应的业务记录汇总信息;然后,可以根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值,以及,根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,在将第一哈希值与第二哈希值关联后,可以将关联的第一哈希值和第二哈希值发送到预设的可信中心进行上链。
其中,终端通过网络与服务端进行通信,服务端通过网络与可信中心通信。终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备等,便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现,服务端可以具有相应的数据存储系统,数据存储系统可以存储服务端需要处理的数据,数据存储系统可以集成在服务端上,也可以放在云上或其他网络服务器上。
在一个实施例中,如图2所示,提供了一种业务记录存储方法,以该方法应用于图1中的服务端为例进行说明,包括以下步骤:
S210,确定预设时间段内多个账户中每个账户对应的业务记录信息。
作为一示例,业务记录信息可以是业务处理过程中产生的记录信息,例如业务记录信息可以包括交易明细。
具体实现中,服务端可以按照预设时间间隔,对账户的业务记录信息进行统计收集,得到预设时间段内多个账户各自的业务记录信息,该预设时间段也可以称为时间窗口。
例如,业务方可以是银行的业务系统A,在日常运行过程中将获取到大量的业务记录信息(如交易明细),服务端可以以天为单位,对同一天内多个账户的业务记录信息进行收集,得到预设时间段内多个账户各自的业务记录信息。
S220,针对每个账户,根据账户的各条业务记录信息,获取经账户确认的账户对应的业务记录汇总信息。
作为一示例,业务记录汇总信息可以是基于同一账户的各条业务记录信息汇总生成的,业务记录汇总信息与同一账户下的业务记录信息对应,即业务记录汇总信息随业务记录信息的变化而变化,当账户下的业务记录信息发生变化时,业务记录汇总信息也相应变化。
实际应用中,在获取到预设时间段内多个账户各自的业务记录信息后,则可以以账户为维度对业务记录信息进行汇总。具体而言,针对每个账户,可以根据该账户预设时间段内的各条业务记录信息,获取该账户确认的业务记录汇总信息。
在一些情况下,服务端虽然可以对历史业务记录信息进行归档形成历史证据(如对预设时间段内的业务记录信息归档形成的内容),并在日后需要该历史证据时提供给司法机构,但仍然存在服务端存储的业务记录信息被非法篡改的问题,例如系统管理员或黑客篡改相关内容,因此,并且,该业务记录汇总信息可以是经过对应账户确认过的业务记录汇总信息,确认后的业务记录汇总信息也可以被对应账户查询、浏览的,例如业务方可以提供业务记录信息和业务记录汇总信息的查询接口,从而用户可以及时了解到其账户下的业务记录信息的变化情况,提高业务方信息系统的透明度,保障客户业务记录信息的真实性和完整性。
S230,根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值。
在获取到多个账户的业务记录汇总信息后,可以对多个账户的业务记录汇总信息进行固证,具体地,可以获取与多个账户的业务记录汇总信息对应的哈希值,为便于进行区分,将该哈希值称为第一哈希值。
可以理解,基于多个账户确认后的业务记录汇总信息生成第一哈希值,随各业务记录汇总信息的改变而改变,也即当多个账户的业务记录汇总信息中的任意一条业务记录汇总信息发生变化时,第一哈希值的值也将发生变化。通过生成与多个业务记录汇总信息对应的第一哈希值,一方面,能够精简地对预设时间段内多个账户的业务记录汇总信息进行固化,避免在固证时存储大量信息,有效提高针对多个业务记录汇总信息固证的效率,另一方面,通过以账户为维度生成各业务记录汇总信息的第一哈希值,能够及时确定多个账户中的一个或多个账户的业务记录信息是否被篡改,有效提高各用户校验其业务记录信息的效率。
S240,根据多个账户中每个账户对应的业务记录信息,确定第二哈希值。
此外,服务端在得到预设时间段内的多条业务记录信息后,可以获取与多条业务记录信息对应的哈希值,为便于进行区分,可以将该哈希值称为第二哈希值。可以理解,基于多条业务记录信息生成的第二哈希值,将随各业务记录信息的改变而改变,也即当多条业务记录信息中的任意一条业务记录信息发生变化时,第二哈希值的值也将发生变化。通过生成与多条业务记录信息对应的第二哈希值,能够精简地对预设时间段内的多条业务记录信息进行固化,在对多条业务记录信息进行固证时,避免将大量的业务记录信息进行存储或固化,有效提高针对多条业务记录信息固证的效率。
S250,将第一哈希值与第二哈希值关联,并将关联的第一哈希值和第二哈希值发送到预设的可信中心进行上链。
示例性地,可信中心可以是除业务方以外的其他机构提供的数据处理中心,例如,若业务方为银行,可信中心可以包括官方机构提供的数据处理中心。
在获取到第一哈希值和第二哈希值后,则可以将第一哈希值和第二哈希值进行关联,并将关联后的第一哈希值和第二哈希值发送到可信中心进行上链处理。
具体而言,即可信中心可以链表结构存储一组或多组关联的第一哈希值和第二哈希值,每组关联的第一哈希值和第二哈希值可以是该链表结构上的一个节点内容。示例性地,可信中心的链表结构的节点中,可以包括以下节点内容:
1、节点时间信息和其他基础信息。其中,节点时间信息为第一哈希值和第二哈希值对应的预设时间段的时间,例如可以若以天为单位统计并生成业务记录汇总信息对应的第一哈希值和业务记录信息对应的第二哈希值,则节点时间信息可以是对应日期。
2、当前节点的第一哈希值以及第一哈希处理参数,第一哈希处理参数可以通过对上一节点存储的第一哈希值以及第一哈希处理参数,进行哈希处理后得到;用于存储第一哈希值和第二哈希值的首个节点,其中的第一哈希处理参数可以是预设值,例如可以是可信中心公告的数字签名。当前节点中存储第一哈希值和基于上一节点存储的内容得到的第一哈希处理参数,可以作为指向上一节点的指针,用于进行节点的追溯,并校验链表结构中存储的第一哈希值是否受到篡改。
3、当前节点的第二哈希值以及第二哈希处理参数,第二哈希处理参数可以通过对上一节点存储的第二哈希值以及第二哈希处理参数,进行哈希处理后得到,用于存储第一哈希值和第二哈希值的首个节点,首个节点的第二哈希处理参数可以是预设值,例如可以是可信中心公告的数字签名。当前节点中存储第二哈希值和基于上一节点存储的内容得到的第二哈希处理参数,可以作为指向上一节点的指针,用于进行节点的追溯,并校验链表结构中存储的第二哈希值是否受到篡改。
由于可信中心链表结构中各节点存储的内容为加密处理(如哈希处理)后的内容,即不会从节点内容推导出具体的业务记录信息,可信中心上链处理后的数据可以向公众公开,业务方或账户可以根据可信中心提供的公开信息校验链表结构上的节点内容是否被篡改,即是否可以通过链表结构上的节点内容追溯到起始节点。
4、服务端对应业务方的业务方标识。可信中心针对每个业务方对应服务端提供的关联的第一哈希值和第二哈希值,可以分别设置对应的链表结构进行数据存储,例如可以设置链表结构1和链表结构2,其中链表结构1用于存储业务方A提供的关联的第一哈希值和第二哈希值,链表结构2用于存储业务方B提供的关联的第一哈希值和第二哈希值。
上述业务记录存储方法中,服务端可以确定预设时间段内多个账户中每个账户对应的业务记录信息,针对每个账户,可以根据该账户对应的各条业务记录信息,获取经该账户确认的该账户对应的业务记录汇总信息,进而可以根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;服务端还可以根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,然后可以将第一哈希值与第二哈希值关联,并将关联的第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。本申请中,一方面,可以以账户为汇总维度,基于各账户的业务记录汇总信息生对应第一哈希值进行固证,供用户及时校验自身的业务记录信息是否被篡改,另一方面,业务方自身可基于获取的多条业务记录生成第二哈希值进行固证,并通过将关联的第一哈希值和第二哈希值发送到可信中心进行上链,在便于后续对第一哈希值和第二哈希值进行相互校验同时,无需业务方进行区块链改造,从而可以在对业务记录信息进行固证时兼顾便捷性和安全性。
在一个实施例中,如图3所示,S230根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值,可以包括如下步骤:
S231,将多个账户中每个账户对应的业务记录汇总信息,作为对应第一叶子节点的节点信息。
作为一示例,节点信息可以是在对应节点上存储的信息。
实际应用中,可以通过构造二叉树获取多个账户的业务记录汇总信息对应的第一哈希值,为便于区分,可以将针对业务记录汇总信息生成的二叉树称为第一二叉树,第一二叉树中可以包括不同层级的多个节点,其中,第一二叉树中的叶子节点可以称为第一叶子节点,叶子节点可以是指二叉树中没有子节点的节点。
具体而言,在得到多条的业务记录汇总信息后,可以基于业务记录汇总信息的数量,确定第一二叉树中叶子节点的数量,叶子节点的数量与业务记录汇总信息的数量相同,进而可以将每条业务记录汇总信息作为待构建的第一二叉树中各个第一叶子节点的节点信息。
示例性地,在构建第一二叉树的过程中,业务记录汇总信息对应的叶子节点的排列顺序,可以根据对应账户的账户标识或关联该账户的用户的身份标识进行排序,该顺序可以在开设账户时分配,已确定的排列顺序可以不再改变,但节点对应的节点信息可以变化;当后续有新增的账户时,可以横向扩展第一二叉树。
S232,根据每个第一叶子节点的节点信息构造第一二叉树;第一二叉树中的每个非叶子节点的节点信息包括与非叶子节点关联的至少一个子节点的节点信息的哈希值,子节点包括所述第一叶子节点。
在获取到多个第一叶子节点及其对应的节点信息后,可以根据多个第一叶子节点各自的节点信息构造第一二叉树,具体地,在构造第一二叉树时,可以以多个第一叶子节点为起点,从叶子节点向根节点的方向构造。
在构造第一二叉树时,可以生成多个非叶子节点,非叶子节点是指具有相应子节点的节点,非叶子节点的子节点可以是一个,也可以是多个,例如两个。针对每个非叶子节点,非叶子节点的节点信息可以根据关联的各个子节点的节点信息的哈希值生成。
以构造多个叶子节点对应的非叶子节点为例,在生成非叶子节点时,可以从多个叶子节点中确定出与当前待生成的非叶子节点关联的至少一个叶子节点,作为非叶子节点的子节点,进而可以获取各个子节点的节点信息的哈希值,例如可以对每个叶子节点对应的业务记录汇总信息进行哈希处理,然后可以将各个子节点的节点信息的哈希值,确定为非叶子节点的节点信息。以非叶子节点A为例,非叶子节点A可以具有两个关联的子节点a1和a2,通过子节点a1和a2各自的节点信息进行哈希处理后,可以将得到的哈希值H1和H2作为非叶子节点A的节点信息。
参照上述方式,可以逐层构造第一二叉树中的各个非叶子节点,图4示出了一种第一二叉树的示例。
S233,根据第一二叉树的第一根节点的节点信息,获取第一哈希值。
在获取到第一二叉树后,则可以获取第一二叉树的根节点的节点信息,为便于区分,本实施例中将第一二叉树的根节点称为第一根节点;然后,可以根据第一根节点的节点信息,确定第一哈希值。具体例如,可以基于第一二叉树的第一根节点的节点信息,获取与第一根节点关联的两个子节点的节点信息的哈希值;对两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,得到第一哈希值。
具体地,输入内容(例如待固化的证据x)与哈希值H(x)之间的映射关系可以如图5所示,其中H()为哈希(Hash)函数,根据哈希函数的性质可知,输入内容x的微小变化会引起哈希值H(x)的较大变化,H(x)可以作为x的主键,俗称H(x)为x的指纹。
在生成第一二叉树时,由哈希函数的抗碰撞性可知在输入内容不相同的情况下,获取到的哈希值也不相同,同时结合上述性可知,当非叶子节点关联的各子节点的节点信息发生变化时,非叶子节点的节点信息也会相应发生变化,而随着第一二叉树多层非叶子节点的节点信息依次发生变化,第一根节点的节点信息也会发生显著变化。
在本实施例中,可以通过第一二叉树的第一根节点的节点信息获取相应的第一哈希值,能够基于第一哈希值准确校验各个账户的业务记录汇总信息是否被篡改,实现账户维度的高效固证,同时,由于哈希算法的不可逆性,能够有效避免各业务记录汇总信息和各账户的业务记录信息的泄露,具有较高的安全性。
在一个实施例中,在S250之后,所述方法还可以包括如下步骤:
S261,若接收到针对预设时间段内的目标业务记录信息的校验请求,获取第一二叉树的中间节点对应的节点信息。
其中,第一二叉树的中间节点为目标业务记录信息关联的目标第一叶子节点与第一根节点之间的节点链路上的节点。
作为一示例,目标业务记录信息可以是待校验真伪的业务记录信息,示例性地,用户可以对其业务处理过程中产生的业务记录信息进行校验,如转账汇款业务相应的转账记录,又如外币兑换业务对应的兑换记录。
具体实现中,用户可以请求对预设时间段内在该用户对应账户下产生的业务记录信息查询,并向服务端发送针对预设时间段内的目标业务记录信息的校验请求。
响应于接收到的校验请求,服务端可以从预先生成的第一二叉树中确定出与目标业务记录信息关联的第一叶子节点,作为目标第一叶子节点。其中,与目标业务记录信息关联的第一叶子节点,为节点信息包含目标业务记录信息对应的业务记录汇总信息的第一叶子节点,例如,在接收到对目标业务记录信息的校验请求后,可以确定与该目标业务记录信息关联的账户和该账户在预设时间段内各条业务记录信息对应的业务记录汇总信息,进而将该业务记录汇总信息对应的第一叶子节点确定为目标业务记录信息关联的目标第一叶子节点。
在确定出目标第一叶子节点后,则可以确定目标第一叶子节点与第一根节点之间的节点链路,获取该节点链路上的节点,作为目标第一叶子节点与第一根节点之间的中间节点,并获取中间节点对应的节点信息。
其中,中间节点可以不包括第一根节点,目标第一叶子节点与第一根节点之间的节点链路,可以是指从目标第一叶子节点指向第一根节点的节点链路,该节点链路也可以称为第一二叉树的残枝,在一些示例中,用户可以获取与其账户关联的中间节点的节点信息,并自行进行先关校验。
S262,根据目标第一叶子节点的节点信息和第一二叉树的中间节点对应的节点信息,确定第一待校验哈希值。
具体而言,由于中间节点为第一二叉树中目标第一叶子节点与第一根节点之间的节点,换句话说,中间节点为第一二叉树中的非叶子节点,而非叶子节点的节点信息中包括了该非叶子节点关联的子节点对应的哈希值。
基于此,在确定目标业务记录信息对应的目标第一叶子节点后,可以获取目标第一叶子节点对应的哈希值,并判断该哈希值与目标第一叶子节点连接的中间节点中所包含的一个哈希值是否相同,若相同,则可以继续结合该哈希值以及该中间节点中的另一哈希值,获取到新的哈希值,并继续重复上述判断过程。例如,若目标第一叶子节点A1的节点信息对应的哈希值为H1,而与目标第一叶子节点A1连接的中间节点B1的节点信息为H1’-H2’,则在得到H1后,可以将H1与H1’比较,若两者匹配,则结合H1和H2’,获取哈希值H3,并与下一中间节点C1节点信息H3’-H4中的H3’进行比较。
在根据当前哈希值确定下一中间节点的节点信息的过程中,若每次哈希值的比较都匹配,则可以一直计算到第一二叉树根节点的节点信息,该节点信息是基于目标第一叶子节点的节点信息计算得到的,也可以称为待校验节点信息,进而可以根据第一二叉树根节点的节点信息确定第一待校验哈希值。若在任一匹配过程中,确定当前计算得到的哈希值与下一中间节点的节点信息携带的哈希值不匹配,则可以确定业务记录信息被篡改,存在目标业务记录信息被篡改的可能。
S263,根据第一待校验哈希值与可信中心上链的第一哈希值的比较结果,确定目标业务记录信息的校验结果。
在获取到第一待校验哈希值后,则可以将第一待校验哈希值与预先在可信中心上链的第一哈希值进行比较,得到比较结果,若比较结果指示两者匹配,则可以确定目标业务记录信息校验通过,若比较结果指示两者不匹配,则确定目标业务记录信息校验不通过。
在本实施例中,在对目标业务记录信息进行校验时,可以通过获取对应节点链路上的中间节点的节点信息并进行哈希处理,基于得到的第一待校验哈希值快速校验目标业务记录信息是否被篡改,在节省算力的同时,具有较高的计算和校验效率。
在一个实施例中,如图6所示,S240根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,可以包括如下步骤:
S241,将多个账户中每个账户对应的业务记录信息,作为对应第二叶子节点的节点信息。
实际应用中,可以通过构造二叉树获取多个账户的业务记录汇总信息对应的第二哈希值,为便于区分,可以将直接利用多条业务记录信息生成的二叉树称为第二二叉树,第二二叉树中可以包括不同层级的多个节点,其中,第二二叉树中的叶子节点可以称为第二叶子节点,叶子节点可以是指二叉树中没有子节点的节点。
实际应用中,在得到多条业务记录信息后,可以基于业务记录信息的数量,确定第二二叉树中叶子节点的数量,叶子节点的数量与业务记录信息的数量相同,进而可以将每条业务记录信息作为待构建的第二二叉树中各个第一叶子节点的节点信息。
S242,根据每个第二叶子节点的节点信息构造第二二叉树;第二二叉树中的每个非叶子节点的节点信息包括与非叶子节点关联的子节点的节点信息的哈希值,子节点包括第二叶子节点。
在获取到多个第二叶子节点及其对应的节点信息后,可以根据多个第二叶子节点各自的节点信息构造第二二叉树,具体地,在构造第二二叉树时,可以以多个第二叶子节点为起点,从叶子节点向根节点的方向构造。
在构造第二二叉树时,可以生成多个非叶子节点,非叶子节点是指具有相应子节点的节点,非叶子节点的子节点可以是一个,也可以是多个,例如两个。针对每个非叶子节点,非叶子节点的节点信息可以根据关联的各个子节点的节点信息的哈希值生成。
以构造多个叶子节点对应的非叶子节点为例,在生成非叶子节点时,可以从多个叶子节点中确定出与当前待生成的非叶子节点关联的至少一个叶子节点,作为非叶子节点的子节点,进而可以获取各个子节点的节点信息的哈希值,例如可以对每个叶子节点对应的业务记录汇总信息进行哈希处理,然后可以将各个子节点的节点信息的哈希值,确定为非叶子节点的节点信息。
在一个可选的实施例中,在构建第二二叉树的过程中,可以对多个第二叶子节点进行排序,示例性地,可以先获取每个第二叶子节点的节点信息对应的哈希值,并根据哈希值对多个第二叶子节点排序,便于后续进行相关查询,例如可以进行如下排序:
H(x1)<H(x2)<H(x3)<......<H(xn-1)<H(xn)
其中,x1、x2、……xn为各个第二叶子节点的节点信息,即业务记录信息。
在得到该次序后,则可以按照该次序对多个业务记录信息进行排序,并作为第二二叉树的叶子节点的节点信息,从叶子向根构建第二二叉树。
S243,根据第二二叉树的第二根节点的节点信息,确定第二哈希值。
在获取到第二二叉树后,则可以获取第二二叉树的根节点的节点信息,为便于区分,本实施例中将第二二叉树的根节点称为第二根节点;然后,可以根据第二根节点的节点信息,确定第二哈希值。
在本实施例中,可以通过第二二叉树的第二根节点的节点信息获取相应的第二哈希值,能够基于第二哈希值准确校验多条业务记录信息是否被篡改,实现账户维度的高效固证,同时,由于哈希算法的不可逆性,能够有效避免各业务记录信息的泄露,具有较高的安全性。
在一个实施例中,S243,根据第二二叉树的第二根节点的节点信息,确定第二哈希值,包括:
基于第二二叉树的第二根节点的节点信息,获取与第二根节点关联的两个子节点的节点信息的哈希值;对两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,得到第二哈希值。
具体地,在构造出第二二叉树后,可以从第二根节点的节点信息中获取到与第二根节点关联的两个子节点的节点信息的哈希值,进而可以对该两个哈希值进行拼接,得到拼接后的字符串,并且可以对拼接后的字符串进行哈希处理,得到第二哈希值。
在本实施例中,可以通过获取第二根节点的节点信息,并生成对应的第二哈希值,一方面,能够利用第二哈希值一次性地对构造出第二二叉树的多条业务记录信息进行固化,在后续存储固化后的业务记录信息时,只需存储第二哈希值即可,而无需存储完成的第二二叉树,有效节省存储空间,另一方面,由哈希函数的性质可知,第二二叉树中任何一个业务记录信息的修改都会引起第二根节点的变化,通过第二哈希值可以快速对全量证据集(即预设时间段内的所有业务记录信息)进行验证。
在一个实施例中,S242根据多个第二叶子节点各自的节点信息构造第二二叉树,可以包括如下步骤:
确定待构造的第二二叉树当前层中各个节点;获取多组节点,根据每组节点中各节点的节点信息的哈希值,得到下一层中的每个节点对应的节点信息,并将下一层确定为当前层;返回执行所述确定待构建的第二二叉树当前层中各个节点的步骤,直到当前层中的节点数量小于预设阈值,得到构造好的第二二叉树。
其中,第二二叉树的首层包括多个第二叶子节点;每组节点包括至多两个节点,且各组节点中的节点不同。
具体地,在构造第二二叉树时可以逐层进行构造,在构造第二二叉树的当前层时,可以确定当前层中的各个节点,并获取当前层中的节点的数量,其中,在第二二叉树的首层,可以将各个第二叶子节点确定为当前层的节点。
在确定当前层的节点后,则可以对当前层中的多个节点进行划分,得到多组节点,每组节点包括一个或两个节点。
具体而言,在划分多个组节点时,可以根据当前层的节点的数量进行划分,若当前层的节点数量为偶数,则可以将每两个节点划分为一组,若当前层的节点数量为奇数,则可以先将每两个节点划分为一组,直到剩下一个未划分的节点,并将该节点作为单独的一组。
在划分多组节点后,可以根据每组节点中各节点的节点信息的哈希值,得到下一层中的每个节点对应的节点信息,例如可以将每组节点中各节点的节点信息的哈希值拼接(例如用“|”拼接),并将拼接后得到字符串作为下一层中对应节点的节点信息,新构造出下一层中的该节点也可以称为当前层中同组节点中各节点对应的父节点。通过该方式可以得到下一层的各个节点。
然后,可以将下一层确定为当前层,返回执行确定待构建的第二二叉树当前层中各个节点的步骤,直到当前层中的节点数量小于预设阈值(例如2),得到构造好的第二二叉树。
图7示出了一种第二二叉树的示例,在第二二叉树中,可以从叶子节点向根节点(root)推进,逐层构造。若当前层中节点的数量为奇数,则在构造下一层最右的节点时,可以由“V”型(如图8a所示)构造方式变为“I”型(如图8b所示)构造方式,即下一层的最右节点可基于“I”型构造方式,其余基于“V”型构造方式得到。在“V”型构造方式中,左肩的哈希值放左边,右肩的哈希值放右边,“I”型缺少右边的H值,可以视为空值。
可以理解的是,本申请中第一二叉树和第三二叉树的构建方式可以与本实施例中第二二叉树的构建方式相同,具体可以参考关于第二二叉树构建过程的描述,本申请不再赘述。
在一个实施例中,在S250之后,所述方法还可以包括如下步骤:
S271,若接收到针对预设时间段内的目标业务记录信息的校验请求,获取第二二叉树的中间节点对应的节点信息。
其中,中间节点为目标业务记录信息对应的目标第二叶子节点与第二二叉树的第二根节点之间的节点链路上的非叶子节点。
作为一示例,目标业务记录信息可以是待校验真伪的业务记录信息,如转账汇款业务相应的转账记录,又如外币兑换业务对应的兑换记录。
实际应用中,用户可以请求对预设时间段内在该用户对应账户下产生的业务记录信息查询,并向服务端发送针对预设时间段内的目标业务记录信息的校验请求。
响应于接收到的校验请求,服务端可以从预先生成的第二二叉树中确定出目标业务记录信息对应的第二叶子节点,作为目标第二叶子节点。其中,与目标业务记录信息对应的第二叶子节点,为节点信息包含目标业务记录信息的第二叶子节点。在确定出目标第二叶子节点后,则可以确定目标第二叶子节点与第二根节点之间的节点链路,获取该节点链路上的节点,作为目标第二叶子节点与第二根节点之间的中间节点,并获取中间节点对应的节点信息。
其中,中间节点可以不包括第二根节点,目标第二叶子节点与第二根节点之间的节点链路,可以是指从目标第二叶子节点指向第二根节点的节点链路,该节点链路也可以称为第二二叉树的残枝。
S272,根据目标业务记录信息和第二二叉树的中间节点对应的节点信息,确定第二待校验哈希值。
具体地,由于中间节点为第二二叉树中目标第二叶子节点与第二根节点之间的节点,换句话说,中间节点为第二二叉树中的非叶子节点,而非叶子节点的节点信息中包括了该非叶子节点关联的子节点对应的哈希值。
基于此,在确定目标业务记录信息对应的目标第二叶子节点后,可以获取目标第二叶子节点对应的哈希值,并判断该哈希值与目标第二叶子节点连接的中间节点中所包含的一个哈希值是否相同,若相同,则可以继续结合该哈希值以及该中间节点中的另一哈希值,获取到新的哈希值,并继续重复上述判断过程。
在根据当前哈希值确定下一中间节点的节点信息的过程中,若每次哈希值的比较都匹配,则可以一直计算到第二二叉树根节点的节点信息,该节点信息是基于目标第二叶子节点的节点信息计算得到的,也可以称为待校验节点信息,进而可以根据第二二叉树根节点的节点信息确定第二待校验哈希值。若在任一次匹配中,确定当前计算得到的哈希值与下一中间节点的节点信息携带的哈希值不匹配,则可以确定业务记录信息被篡改,存在目标业务记录信息被篡改的可能。
S273,根据第二待校验哈希值与可信中心上链的第二哈希值的比较结果,确定目标业务记录信息的校验结果。
在获取到第二待校验哈希值后,则可以将第二待校验哈希值与预先在可信中心上链的第二哈希值进行比较,得到比较结果,若比较结果指示两者匹配,则可以确定目标业务记录信息校验通过,若比较结果指示两者不匹配,则确定目标业务记录信息校验不通过。
图9示出了含有待校验的目标业务记录信息的节点链路(图中的灰色节点),在校验目标业务记录信息时,只需要对该节点链路上的节点信息进行校验即可,其中部分的校验流程可以如下所示:
H(x)=①节点左边的H
H(①)=②节点右边的H
……
重复上述步骤,一直往下计算,直到得到第二待校验哈希值ROOT2,若ROOT2等于预先在可信中心存储的第二哈希值ROOT1,在ROOT1没有被篡改的情况下,可以确定目标业务记录信息没有被篡改。
在本实施例中,在对目标业务记录信息进行校验时,可以通过获取对应节点链路上的中间节点的节点信息并进行哈希处理,基于得到的第二待校验哈希值快速校验目标业务记录信息是否被篡改,在节省算力的同时,具有较高的计算和校验效率。
可以理解的是,在接收到对目标业务记录信息的校验请求时,可以同时结合第一二叉树和第二二叉树进行校验,提高校验结果的可靠性。
在一个实施例中,S220根据账户对应的业务记录信息,获取经账户确认的账户对应的业务记录汇总信息,可以包括如下内容:
S221,将账户对应的各条业务记录信息作为对应第三叶子节点的节点信息。
实际应用中,可以通过构造二叉树获取同一账户的多条业务记录信息对应的业务记录汇总信息,为便于区分,可以将生成的二叉树称为第三二叉树(也可以称为账户树),第三二叉树中可以包括不同层级的多个节点,其中,第三二叉树中的叶子节点可以称为第三叶子节点。
具体而言,在得到同一账户下的业务记录信息后,可以基于业务记录信息的数量,确定第三二叉树中叶子节点的数量,叶子节点的数量与业务记录信息的数量相同,进而可以将每条业务记录信息作为待构建的第三二叉树中各个第三叶子节点的节点信息。当然,在一些示例中,第三二叉树与账户对应,还可以在第三二叉树中添加与账户信息对应的叶子节点,例如账户标识(如身份证号)或账户与对应业务方之间的映射关系(如账户所属的银行)。
S222,根据每个第三叶子节点的节点信息构造第三二叉树;第三二叉树中的每个非叶子节点的节点信息包括与非叶子节点关联的至少一个子节点的节点信息的哈希值,子节点包括第三叶子节点。
在获取到多个第三叶子节点及其对应的节点信息后,可以根据多个第三叶子节点各自的节点信息构造第三二叉树,在构造第三二叉树时,可以以多个第三叶子节点为起点,从叶子节点向根节点的方向构造。
在一些实施例中,第三二叉树的构造方式可以与第一二叉树和第二二叉树的构造方式相同,本实施例中不作赘述,具体可以参考第一二叉树和第二二叉树的构造过程。
在另外一些实施例中,第三二叉树可以进行多级扩展,图10示出了一种第三二叉树的结构,其中,0节点记录账号与业务方之间的映射关系,该节点可存储有账户的账户标识(如记录用户的身份证号)、交互公钥信息等;1到18号节点为该账户的交易叶节点,记录具体业务记录信息。灰色节点为准根节点,它们曾经是第三二叉树的根节点,但随着账户在预设时间段内自身交易量的增长,又陆续转变为上级二叉树的中间节点。根据用户的查询需求,用户可以查询下载自己关联账户完整的第三二叉树,也可以仅存储上层近期的树叶。
S223,根据第三二叉树的第三根节点的节点信息,获取经账户确认的业务记录汇总信息。
在获取到第三二叉树后,则可以获取第三二叉树的根节点的节点信息,为便于区分,本实施例中将第三二叉树的根节点称为第三根节点;然后,可以根据第三根节点的节点信息,确定确认后的业务记录汇总信息。
具体例如,可以基于第三二叉树的第三根节点的节点信息,获取与第三根节点关联的两个子节点的节点信息的哈希值;对两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,将处理结果作为确认后的业务记录汇总信息。
在本实施例中,通过利用同一账户的业务记录信息生成第三二叉树,并根据第三二叉树的根节点信息生成的业务记录汇总信息,既能通过第三二叉树的根节点锁住该账户的历史业务记录信息,又能对新近业务的日常查询提供快速的回溯验证。
为了使本领域技术人员能够更好地理解上述步骤,以下通过一个例子对本申请实施例加以示例性说明,但应当理解的是,本申请实施例并不限于此。
具体实现中,用户和业务方可以进行身份注册,在后续交互过程中采用非对称加密技术(例如国密SM2算法)对相关的交互信息进行加密处理,具体而言,用户和业务方可各自拥有一套独立的公钥和私钥,通过数字签名来进行身份认证、安全通信:用户可以通过终端向业务方的服务端发送安全接入请求,并在接收到服务端返回的安全接入响应后,提供身份信息进行身份鉴别,服务端在对用户的身份信息鉴别通过后,可以与用户协商密钥。
其中,业务方的公钥向所有用户公示,而用户可在业务方开设账户时完成其公钥与账户之间的映射绑定,在用户每次通过对应账户与业务方进行交易时,业务方和账户对对方进行身份鉴别,完成彼此的身份认证,从而保证双方的交易可信,使得整个交易都是真实且不可抵赖的。
在业务处理过程中,如图11所示,业务方可以按照业务时间对当前获取到的多个业务记录信息进行周期性划分(例如每天划分一次),在单位时间内(即预设时间段内)的每一个账户(例如用户A),交易网内的每一个箭头都对应一笔交易,箭头始端为转出方,末端为转入方,横向虚线代表不同账户间的资源流向,纵向实线代表同一个账户内的资源流向。
因此,在单位时间内,业务方全部业务构成了一张纵横交织的交易网,横向的一条或多条虚线所对应的业务,其对应的业务记录信息可以生成第二二叉树(也称为横向证据树);每条纵向实线所对应的业务,其对应的业务记录信息可以生成第三二叉树,每个账户都可以查看、校验其对应的第三二叉树,进而可以生成相应的第一二叉树(也称为纵向证据树)。两者分别从不同维度锁定交易历史:前者从整体维度锁定业务方预设时间内的所有交易,后者从账户个体维度锁定每一位账户的全部交易历史,两者相互交织,彼此验证。
在业务方生成第一二叉树和第二二叉树后,可以分别获取对应的第一哈希值和第二哈希值,并在预设的可信中心中(以银行业为例,可信中心可以是银监会提供的数据处理中心)进行上链,将第一哈希值和第二哈希值存储在可信中心的链表结构中。其中,可信中心对其设置的链可设置一说明文本(公告),可信中心对该报告进行了数字签名,公众可由可信中心的公钥验证该数字签名(并获得公告的明文),可信中心对该数字签名求哈希值,作为链的起始节点。则该链的存储结构可以如图12所示。
在验证业务记录信息x是否被篡改时,可以包括如下步骤:
(1)横向上,x是业务方A的某个第二二叉树树的残枝的叶子;
(2)该第二二叉树树的第二根节点对应的第二哈希值roota1在可信中心的链上某节点中。因此,在其中一个验证步骤中,可以从x出发先沿第二二叉树中的残枝走到roota1,再从可信中的roota1沿链走到链的起始节点,实现对x的验证,沿途的数据联合组成证据链条。
(3)第一二叉树和第三二叉树的验证。一方面,客户B可以查询其对应的第三二叉树,确认客户B的第三二叉树中是否存在x;并且,客户B还可以通过第一二叉树查看其当前查看到的x是否被篡改,即可以获取客户B的第三二叉树的第三根节点对应的哈希值roota2,然后可以从roota2出发先沿第一二叉树中的残枝走到roota3,再从可信中的roota3沿链走到链的起始节点,实现对x的验证。
(4)交易对手的验证。例如客户B给客户C转账,B可以联系C,让C查询并校验B的第三二叉树,确认是否存在x。
关于取证,业务方A在受理取证申请时,可以先通过传统系统的数据库,查到相关的证据及日期,再由日期定位于当日的第一二叉树、第二二叉树和第三二叉树。通过证据的Hash值,找到对应的证据叶子,以该叶子出发直到root的残枝即为证据及证明,并将此残枝上各中间节点的节点信息提供给申请方即可。
由于可信中心的链是公开,各用户可以自行查询,用户也可以查询自己的第三二叉树,并向业务方A获取第一二叉树中的与第三二叉树的根节点哈希值相关的残枝,此外,也可以协商交易对手方查询第三二叉树,若经过比对,业务方A、客户B和客户C三方结果一致,则可以确定结果可信。
具体例如,业务方某天(如2022年1月1日)产生了一条张三给李四的转账10000元的业务记录信息,系统记录证据X(即业务记录信息)为张三转账李四10000元,业务方将其和当天的所有的业务记录信息构造二叉树形成,形成如图7所示的第二二叉树,并获取第二根节点对应的哈希值root20220101。
并且,还可以分别构造张三和李四各自的第三二叉树,并根据当前多个账户各自的第三二叉树的根节点,生成第一二叉树,张三和李四可以通过业务方提供的接口进行可信访问。
进而,业务方可以将第一二叉树和第二二叉树各自的第一哈希值ROOT20220101和第二哈5希值root20220101交由可信中心进行公证及公布,记录到可信中心当天(20220101)的链节点
上,并对所有公众发布。
关于可信中心的证据链的应用,若张三与业务方发生纠纷,认为20220101转账了10万元,业务方可将X至ROOT20220101、root20220101以及在可信中心的相关链条提交作为证据。由
于该链整体对外公布且无法篡改,因此张三、李四和业务方都可以基于上述信息校验第一二0叉树、第二二叉树和第三二叉树中相关节点信息,确定证据X未被篡改。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上
所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些5步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者
阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的业务记录存储0方法的业务记录存储装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现
方案相似,故下面所提供的一个或多个业务记录存储装置实施例中的具体限定可以参见上文中对于业务记录存储方法的限定,在此不再赘述。
在一个实施例中,如图13所示,提供了一种业务记录存储装置,所述装置包括:
记录信息收集模块1301,用于确定预设时间段内多个账户中每个账户对应的业务记录信5息;
汇总信息生成模块1302,用于针对每个所述账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
第一哈希值确定模块1303,用于根据多个账户中每个账户对应的业务记录汇总信息,确
定第一哈希值;
0第二哈希值确定模块1304,用于根据多个账户中每个账户对应的业务记录信息,确定第
二哈希值;
哈希值存储模块1305,用于将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
在一个实施例中,所述第一哈希值确定模块1303,用于:
将多个账户中每个账户对应的业务记录汇总信息,作为对应第一叶子节点的节点信息;
根据每个第一叶子节点的节点信息构造第一二叉树;所述第一二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第一叶子节点;
根据所述第一二叉树的第一根节点的节点信息,获取第一哈希值。
在一个实施例中,所述装置还包括:
第一中间节点确定模块,用于若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第一二叉树的中间节点对应的节点信息;所述第一二叉树的中间节点为所述目标业务记录信息关联的目标第一叶子节点与所述第一根节点之间的节点链路上的节点;
第一校验模块,用于根据所述目标第一叶子节点的节点信息和所述第一二叉树的中间节点对应的节点信息,确定第一待校验哈希值;
第一校验结果获取模块,用于根据所述第一待校验哈希值与所述可信中心上链的所述第一哈希值的比较结果,确定所述目标业务记录信息的校验结果。
在一个实施例中,所述第二哈希值确定模块1304,用于:
将多个账户中每个账户对应的业务记录信息,作为对应第二叶子节点的节点信息;
根据每个第二叶子节点的节点信息构造第二二叉树;所述第二二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的子节点的节点信息的哈希值,所述子节点包括所述第二叶子节点;
根据所述第二二叉树的第二根节点的节点信息,确定第二哈希值。
在一个实施例中,所述装置还包括:
第二中间节点确定模块,用于若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第二二叉树的中间节点对应的节点信息;所述中间节点为所述目标业务记录信息对应的目标第二叶子节点与所述第二二叉树的第二根节点之间的节点链路上的非叶子节点;
第二校验模块,用于根据所述目标业务记录信息和所述第二二叉树的中间节点对应的节点信息,确定第二待校验哈希值;
第二校验结果获取模块,用于根据所述第二待校验哈希值与所述可信中心上链的所述第二哈希值的比较结果,确定所述目标业务记录信息的校验结果。
在一个实施例中,所述第二哈希值确定模块1304,用于:
基于所述第二二叉树的第二根节点的节点信息,获取与所述第二根节点关联的两个子节点的节点信息的哈希值;
对所述两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,得到第二哈希值。
在一个实施例中,所述第二哈希值确定模块1304,用于:
确定待构造的第二二叉树当前层中各个节点;其中,第二二叉树的首层包括多个第二叶子节点;
获取多组节点,根据每组节点中各节点的节点信息的哈希值,得到下一层中的每个节点对应的节点信息,并将下一层确定为当前层;每组节点包括至多两个节点,且各组节点中的节点不同;
返回执行所述确定待构建的第二二叉树当前层中各个节点的步骤,直到当前层中的节点数量小于预设阈值,得到构造好的第二二叉树。
在一个实施例中,所述汇总信息生成模块1302:
将所述账户对应的各条业务记录信息,作为对应第三叶子节点的节点信息;
根据每个第三叶子节点的节点信息构造第三二叉树;所述第三二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第三叶子节点;
根据所述第三二叉树的第三根节点的节点信息,获取经所述账户确认的业务记录汇总信息。
上述业务记录存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务记录信息及其对应的二叉树。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种业务记录存储方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
确定预设时间段内多个账户各自的业务记录信息;
针对每个所述账户,根据所述账户的各条业务记录信息,获取经所述账户确认的业务记录汇总信息;
获取与多个所述账户的业务记录汇总信息对应的第一哈希值;
获取与多条所述业务记录信息对应的第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
在一个实施例中,处理器执行计算机程序时还实现上述其他实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
确定预设时间段内多个账户各自的业务记录信息;
针对每个所述账户,根据所述账户的各条业务记录信息,获取经所述账户确认的业务记录汇总信息;
获取与多个所述账户的业务记录汇总信息对应的第一哈希值;
获取与多条所述业务记录信息对应的第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
在一个实施例中,计算机程序被处理器执行时还实现上述其他实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
确定预设时间段内多个账户各自的业务记录信息;
针对每个所述账户,根据所述账户的各条业务记录信息,获取经所述账户确认的业务记录汇总信息;
获取与多个所述账户的业务记录汇总信息对应的第一哈希值;
获取与多条所述业务记录信息对应的第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
在一个实施例中,计算机程序被处理器执行时还实现上述其他实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (12)
1.一种业务记录存储方法,其特征在于,所述方法包括:
确定预设时间段内多个账户中每个账户对应的业务记录信息;
针对每个账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
2.根据权利要求1所述的方法,其特征在于,所述根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值,包括:
将多个账户中每个账户对应的业务记录汇总信息,作为对应第一叶子节点的节点信息;
根据每个第一叶子节点的节点信息构造第一二叉树;所述第一二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第一叶子节点;
根据所述第一二叉树的第一根节点的节点信息,获取第一哈希值。
3.根据权利要求2所述的方法,其特征在于,在所述将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链之后,还包括:
若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第一二叉树的中间节点对应的节点信息;所述第一二叉树的中间节点为所述目标业务记录信息关联的目标第一叶子节点与所述第一根节点之间的节点链路上的节点;
根据所述目标第一叶子节点的节点信息和所述第一二叉树的中间节点对应的节点信息,确定第一待校验哈希值;
根据所述第一待校验哈希值与所述可信中心上链的所述第一哈希值的比较结果,确定所述目标业务记录信息的校验结果。
4.根据权利要求1所述的方法,其特征在于,所述根据多个账户中每个账户对应的业务记录信息,确定第二哈希值,包括:
将多个账户中每个账户对应的业务记录信息,作为对应第二叶子节点的节点信息;
根据每个第二叶子节点的节点信息构造第二二叉树;所述第二二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的子节点的节点信息的哈希值,所述子节点包括所述第二叶子节点;
根据所述第二二叉树的第二根节点的节点信息,确定第二哈希值。
5.根据权利要求4所述的方法,其特征在于,在所述将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链之后,还包括:
若接收到针对所述预设时间段内的目标业务记录信息的校验请求,获取所述第二二叉树的中间节点对应的节点信息;所述中间节点为所述目标业务记录信息对应的目标第二叶子节点与所述第二二叉树的第二根节点之间的节点链路上的非叶子节点;
根据所述目标业务记录信息和所述第二二叉树的中间节点对应的节点信息,确定第二待校验哈希值;
根据所述第二待校验哈希值与所述可信中心上链的所述第二哈希值的比较结果,确定所述目标业务记录信息的校验结果。
6.根据权利要求4所述的方法,其特征在于,所述根据所述第二二叉树的第二根节点的节点信息,确定第二哈希值,包括:
基于所述第二二叉树的第二根节点的节点信息,获取与所述第二根节点关联的两个子节点的节点信息的哈希值;
对所述两个子节点的节点信息的哈希值进行拼接,并对拼接后得到的字符串进行哈希处理,得到第二哈希值。
7.根据权利要求4所述的方法,其特征在于,所述根据多个第二叶子节点各自的节点信息构造第二二叉树,包括:
确定待构造的第二二叉树当前层中各个节点;其中,第二二叉树的首层包括多个第二叶子节点;
获取多组节点,根据每组节点中各节点的节点信息的哈希值,得到下一层中的每个节点对应的节点信息,并将下一层确定为当前层;每组节点包括至多两个节点,且各组节点中的节点不同;
返回执行所述确定待构建的第二二叉树当前层中各个节点的步骤,直到当前层中的节点数量小于预设阈值,得到构造好的第二二叉树。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息,包括:
将所述账户对应的各条业务记录信息,作为对应第三叶子节点的节点信息;
根据每个第三叶子节点的节点信息构造第三二叉树;所述第三二叉树中的每个非叶子节点的节点信息包括与所述非叶子节点关联的至少一个子节点的节点信息的哈希值,所述子节点包括所述第三叶子节点;
根据所述第三二叉树的第三根节点的节点信息,获取经所述账户确认的业务记录汇总信息。
9.一种业务记录存储装置,其特征在于,所述装置包括:
记录信息收集模块,用于确定预设时间段内多个账户中每个账户对应的业务记录信息;
汇总信息生成模块,用于针对每个所述账户,根据所述账户对应的业务记录信息,获取经所述账户确认的所述账户对应的业务记录汇总信息;
第一哈希值确定模块,用于根据多个账户中每个账户对应的业务记录汇总信息,确定第一哈希值;
第二哈希值确定模块,用于根据多个账户中每个账户对应的业务记录信息,确定第二哈希值;
哈希值存储模块,用于将所述第一哈希值与所述第二哈希值关联,并将关联的所述第一哈希值和所述第二哈希值发送到预设的可信中心进行上链。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211589992.7A CN116015609A (zh) | 2022-12-12 | 2022-12-12 | 业务记录存储方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211589992.7A CN116015609A (zh) | 2022-12-12 | 2022-12-12 | 业务记录存储方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116015609A true CN116015609A (zh) | 2023-04-25 |
Family
ID=86030847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211589992.7A Pending CN116015609A (zh) | 2022-12-12 | 2022-12-12 | 业务记录存储方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116015609A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227302A (zh) * | 2024-05-27 | 2024-06-21 | 浙江邦盛科技股份有限公司 | 一种中间态时序协调计算方法、装置、设备及存储介质 |
-
2022
- 2022-12-12 CN CN202211589992.7A patent/CN116015609A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227302A (zh) * | 2024-05-27 | 2024-06-21 | 浙江邦盛科技股份有限公司 | 一种中间态时序协调计算方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bhutta et al. | A survey on blockchain technology: Evolution, architecture and security | |
US11743052B2 (en) | Platform for generating authenticated data objects | |
Dai et al. | A low storage room requirement framework for distributed ledger in blockchain | |
US20230106484A1 (en) | Cryptographic Asset Collateral Management | |
CN110046894B (zh) | 一种基于纠删码的分组可重构区块链建立方法 | |
CN110599137B (zh) | 电子票据数据处理方法、装置和计算机设备 | |
CN108200208B (zh) | 基于云计算的物流区块链共识算法 | |
EP3794767A1 (en) | Improved systems and methods for storage, generation and verification of tokens used to control access to a resource | |
KR20200105999A (ko) | 디지털 마크를 생성하기 위한 시스템 및 방법 | |
EP3869376B1 (en) | System and method for blockchain based decentralized storage with dynamic data operations | |
CN115380303A (zh) | 基于区块链的可信平台 | |
CN112801778A (zh) | 联盟式不良资产区块链 | |
Xiong et al. | Electronic evidence preservation model based on blockchain | |
Bosamia et al. | Comparisons of blockchain based consensus algorithms for security aspects | |
Bruschi et al. | Tunneling trust into the blockchain: A merkle based proof system for structured documents | |
CN110351292B (zh) | 私钥管理方法、装置、设备和存储介质 | |
CN114338081B (zh) | 多区块链统一身份认证方法、装置、计算机设备 | |
CN116015609A (zh) | 业务记录存储方法、装置、计算机设备和存储介质 | |
Li et al. | BEIR: A blockchain-based encrypted image retrieval scheme | |
Xiao et al. | A collaborative auditing scheme with dynamic data updates based on blockchain | |
He et al. | Enabling Decentralized and Dynamic Data Integrity Verification for Secure Cloud Storage via T‐Merkle Hash Tree Based Blockchain | |
Mohammed et al. | New Tax System based on Lightweight Blockchain Technology | |
Arya et al. | Blockchain: Basics, applications, challenges and opportunities | |
Mahapatro et al. | Blockchain segmentation: a storage optimization technique for large data | |
Li et al. | Post‐Quantum Privacy‐Preserving Provable Data Possession Scheme Based on Smart Contracts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |