操作日志处理方法、系统、装置、设备和存储介质与流程

文档序号:31120979发布日期:2022-08-13 00:53阅读:78来源:国知局
操作日志处理方法、系统、装置、设备和存储介质与流程

1.本技术涉及区块链技术领域,特别涉及一种操作日志处理方法、系统、装置、设备和存储介质。


背景技术:

2.由于区块链系统具有不可篡改性,所以区块链技术飞速发展,已经在各个领域中得到广泛应用。区块链系统实质上是由多方参与共同维护的持续增长的分布式数据库,链下的任意一个参与方可以向区块链系统发送交易来操作区块链系统中的业务合约的合约数据。例如:链下的多个参与方向区块链系统发送交易,区块链系统调用业务合约依次执行该多个参与方中每个参与方发送的交易,来操作业务合约的合约数据,得到该合约数据的一个最终状态,这个最终状态是对该合约数据进行多次操作后得到的。


技术实现要素:

3.本技术提供了一种操作日志处理方法、系统、装置、设备和存储介质,可以使链下的业务系统准确获知区块链系统中的业务合约的合约数据的操作过程。所述技术方案如下:第一方面,提供了一种操作日志处理方法,所述方法包括:区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;所述多个业务系统中的每个业务系统每隔预设时长从所述区块链系统获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
4.在本技术中,区块链系统设置有日志合约。区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务系统发送的所有交易对合约数据的整个操作过程。多个业务系统中的每个业务系统可以每隔预设时长从区块链系统获取日志合约中存储的操作日志,由于区块链系统的不可篡改性,所以业务系统从区块链系统中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务系统根据获取到的操作日志可以准确获知区块链系统中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
5.可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所
述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
6.可选地,所述日志合约中所有操作日志的存储顺序与所述所有操作日志中每个操作日志所属的交易的执行顺序相同;所述业务系统每隔预设时长从所述区块链系统获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志,包括:所述业务系统每隔所述预设时长从所述区块链系统按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志。
7.可选地,所述业务系统包括第一模块和多个第二模块,所述第一模块用于与所述区块链系统进行通信,所述第二模块用于生成交易,所述方法还包括:所述第一模块接收所述多个第二模块中任意的一个第二模块发送的订阅消息,根据所述订阅消息确定所述一个第二模块的订阅条件,所述订阅消息用于订阅操作日志,所述订阅条件用于指示所要订阅的操作日志需满足的条件;可选地,所述业务系统每隔所述预设时长从所述区块链系统按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志,包括:所述第一模块每隔所述预设时长从所述区块链系统按序获取所述日志合约中存储的所述至少一个操作日志,根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块;所述多个第二模块中任意的一个第二模块根据接收到的操作日志执行相应处理流程。
8.可选地,所述第一模块根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块,包括:所述第一模块按序将所述至少一个操作日志添加至先入先出队列;对于所述先入先出队列中处于队头的目标操作日志,若所述目标操作日志满足第二目标模块的订阅条件,则所述第一模块将所述目标操作日志发送给所述第二目标模块,所述第二目标模块是所述多个第二模块中的一个第二模块。
9.可选地,所述先入先出队列为环形队列。
10.可选地,所述方法还包括:所述业务系统每处理一个操作日志后,删除所述区块链系统中所述日志合约中存储的所述一个操作日志。
11.第二方面,提供了一种操作日志处理系统,所述操作日志处理系统包括区块链系统和多个业务系统;所述区块链系统,用于每接收到多个业务系统中的一个业务系统发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;所述业务系统,用于每隔预设时长从所述区块链系统获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
12.可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所
要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
13.可选地,所述日志合约中所有操作日志的存储顺序与所述所有操作日志中每个操作日志所属的交易的执行顺序相同;可选地,所述业务系统用于:每隔所述预设时长从所述区块链系统按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志。
14.可选地,所述业务系统包括第一模块和多个第二模块,所述第一模块用于与所述区块链系统进行通信,所述第二模块用于生成交易;所述第一模块,用于接收所述多个第二模块中任意的一个第二模块发送的订阅消息,根据所述订阅消息确定所述一个第二模块的订阅条件,所述订阅消息用于订阅操作日志,所述订阅条件用于指示所要订阅的操作日志需满足的条件;可选地,所述第一模块,用于每隔所述预设时长从所述区块链系统按序获取所述日志合约中存储的所述至少一个操作日志,根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块;所述多个第二模块中任意的一个第二模块,用于根据接收到的操作日志执行相应处理流程。
15.可选地,所述第一模块用于:按序将所述至少一个操作日志添加至先入先出队列;对于所述先入先出队列中处于队头的目标操作日志,若所述目标操作日志满足第二目标模块的订阅条件,则将所述目标操作日志发送给所述第二目标模块,所述第二目标模块是所述多个第二模块中的一个第二模块。
16.可选地,所述先入先出队列为环形队列。
17.可选地,所述业务系统还用于:每处理一个操作日志后,删除所述区块链系统中所述日志合约中存储的所述一个操作日志。
18.第三方面,提供了一种操作日志处理方法,应用于区块链系统,所述方法包括:每接收到多个业务系统中的一个业务系统发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;每隔预设时长向所述多个业务系统中每个业务系统发送所述日志合约中存储的至少一个操作日志,以供所述多个业务系统中的每个业务系统处理所述至少一个操作日志。
19.在本技术中,区块链系统设置有日志合约。区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务系统发送的所有交易对合约数据的整个操作过程。多个业务系统中的每个业务系统可以每隔预设时长从区块链系统获取
日志合约中存储的操作日志,由于区块链系统的不可篡改性,所以业务系统从区块链系统中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务系统根据获取到的操作日志可以准确获知区块链系统中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
20.可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
21.第四方面,提供了一种操作日志处理装置,应用于区块链系统,所述装置包括:调用模块,用于每接收到多个业务系统中的一个业务系统发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;发送模块,用于每隔预设时长向所述多个业务系统中每个业务系统发送所述日志合约中存储的至少一个操作日志,以供所述多个业务系统中的每个业务系统处理所述至少一个操作日志。
22.可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
23.第五方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第三方面所述的操作日志处理方法。
24.第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第三方面所述的操作日志处理方法。
25.第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第三方面所述的操作日志处理方法的步骤。
26.可以理解的是,上述第二方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。上述第四方面、第五方面、第六方面、第七方面的有益效果可以参见上述第三方面中的相关描述,在此不再赘述。
附图说明
27.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1是本技术实施例提供的一种区块链系统的结构示意图;
图2是本技术实施例提供的一种操作日志处理系统的示意图;图3是本技术实施例提供的一种操作日志处理方法的流程图;图4是本技术实施例提供的另一种操作日志处理方法的流程图;图5是本技术实施例提供的再一种操作日志处理方法的流程图;图6是本技术实施例提供的一种操作日志处理装置的结构示意图;图7是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
29.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
30.应当理解的是,本技术提及的“多个”是指两个或两个以上。在本技术的描述中,除非另有说明,“/”表示或的意思,比如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述本技术的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
31.在对本技术实施例进行解释说明之前,先对区块链的相关内容予以说明。
32.图1是本技术实施例提供的一种区块链系统的结构示意图。
33.参见图1,区块链系统100是指用于进行节点与节点之间数据共享的系统,区块链系统100中可以包括多个节点101。每个节点101在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护区块链系统100内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个节点101之间可以存在信息连接,节点101之间可以通过该信息连接进行信息传输。比如,当区块链系统100中的任意节点101接收到输入信息时,区块链系统100中的其他节点101便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统100中全部节点101上存储的数据一致。
34.区块链系统100具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链系统100是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。
35.下面对本技术实施例的应用场景予以说明。
36.目前,链下的多个参与方可以向区块链系统发送交易,区块链系统可以调用业务合约依次执行该多个参与方中每个参与方发送的交易,来操作业务合约的合约数据,如此合约数据的状态会从初始状态变成一个最终状态,这个最终状态是对合约数据进行多次操作后得到的。
37.相关技术中,区块链系统中没有提供对整个操作过程的记录机制,从而导致链下的多个参与方并不知道合约数据由初始状态变更为最终状态时中间经历了哪些变更操作。然而,链下的参与方往往需要基于这些变更操作进行一些本地化处理流程,所以对区块链系统中的合约数据的操作过程的记录是非常有必要的。
38.为此,本技术实施例提供了一种操作日志处理方法,该操作日志处理方法可以应用于链下业务系统基于区块链系统中合约数据的操作过程执行一些本地化处理流程的场景中。
39.例如:该操作日志处理方法可以应用于业务系统基于区块链系统中某个区块链账户的操作记录执行相应的处理流程的场景中。在一些场景中,有业务系统a、业务系统b、业务系统c,业务系统a向区块链系统发出一个交易,这个交易指示的操作为区块链账户a向区块链账户b转账100。假设区块链账户a的余额是200,区块链账户b的余额是100。区块链系统接收到这个交易后调用业务合约执行这个交易,业务合约执行这个交易的过程就是将区块链账户a的余额减少100,将区块链账户b的余额增加100的过程,则业务合约执行完这个交易后,区块链账户a的余额会更新为100,区块链账户b的余额会更新为200。在本技术实施例中,业务合约执行完这个交易后还会获取这个交易相关的操作记录(在本技术实施例中可以称为操作日志),这个交易的操作日志可以用于指示区块链账户b的余额从100更新到200,之后,业务合约可以调用日志合约,将这个交易的操作日志存储到日志合约中。之后业务系统a、业务系统b、业务系统c可以从区块链系统获取日志合约中存储的操作日志,从而业务系统a、业务系统b、业务系统c均可以根据该操作日志执行相应的处理流程,如可以在链下对区块链账户b的余额变动情况进行记录。如此为链下业务提供了便捷,同时保证了链下数据和链上数据的同步。
40.下面对本技术实施例涉及的系统架构予以说明。
41.图2是本技术实施例提供的一种操作日志处理系统的示意图。参见图2,该操作日志处理系统包括:区块链系统201和多个业务系统202。
42.多个业务系统202中的每个业务系统202与区块链系统201可以通过有线连接或无线连接进行通信。
43.多个业务系统202中的每个业务系统202为链下的参与方用于进行业务操作的系统。比如,业务系统202可以为银行系统。任意一个业务系统202可以部署在终端,也可以部署在服务器,该服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,本技术实施例对此不作限定。
44.区块链系统201可以是上文图1实施例所示的区块链系统100。区块链系统201中设置有业务合约和日志合约。业务合约用于实现业务系统202相关的业务功能。日志合约用于存储与业务合约的合约数据的操作过程相关的操作日志。
45.任意一个业务系统202可以生成交易,并将该交易发送给区块链系统201,该交易用于操作区块链系统201中的业务合约的合约数据。
46.区块链系统201用于接收多个业务系统202中任意一个业务系统202发送的交易,并执行该交易。具体地,区块链系统201每接收到多个业务系统202中的一个业务系统202发送的交易,就可以根据该交易调用业务合约。业务合约可以执行该交易,且业务合约在执行完该交易后可以获取该交易的操作日志,之后业务合约可以将该交易的操作日志存储至日志合约。
47.多个业务系统202中的每个业务系统202可以从区块链系统201获取日志合约中存储的操作日志,如此,多个业务系统202中的每个业务系统202可以获知区块链系统201中业务合约的合约数据的操作过程,据此就可以进行相应的处理流程。
48.下面对本技术实施例提供的操作日志处理方法进行详细地解释说明。
49.图3是本技术实施例提供的一种操作日志处理方法的流程图。参见图3,该方法包括以下步骤。
50.步骤301:区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约。
51.多个业务系统中的每个业务系统为链下的参与方用于进行业务操作的系统。比如,该业务系统可以为银行系统。可选地,该业务系统可以具有业务系统标识,该业务系统标识用于唯一标识该业务系统。例如,该业务系统标识可以为该业务系统的编号、ip(internet protocol,互联网协议)地址等。
52.该多个业务系统中的任意一个业务系统均可以生成交易。该交易的交易体中包含了该交易的发起方和接收方,该交易的发起方为操作者,即为这个业务系统,该交易的接收方为被操作者。该交易体中还指定了该交易的调用信息,即该交易所要调用的业务合约的相关信息。
53.该业务合约为一种部署在区块链系统中执行业务操作的智能合约,该业务合约可以执行业务系统发送的交易,以实现业务系统相关的业务功能。并且,该业务合约还可以调用区块链系统中设置的日志合约。
54.该操作日志用于指示该交易所执行的操作的相关信息,即指示与区块链系统中业务合约的合约数据相关的操作信息。该操作日志可以包括操作者标识、合约数据标识、源状态、结果状态、操作类型等中的一个或多个。
55.该操作者标识用于标识该交易的发起方,例如:该操作者标识可以为业务系统标识。该合约数据标识用于标识该交易所要操作的合约数据。该源状态为该交易未执行时该合约数据标识所标识的合约数据的状态,该结果状态为该交易执行后该合约数据标识所标识的合约数据的状态,例如:该源状态可以为“区块链账户余额:100”,该结果状态可以为“区块链账户余额:200”。
56.该操作类型为该交易对该合约数据标识所标识的合约数据所要进行的操作的类型。例如:该操作类型可以为更新(update)、删除(delete)、查询(query)、创建(create)等,本技术实施例对此不作限定。
57.日志合约(log contract)是一种部署在区块链系统中用于存储操作日志的智能合约。日志合约提供了调用方法,使得业务合约可以调用日志合约,来存储交易的操作日志。且日志合约提供了查询方法,使得可以通过日志合约中的查询方法查询日志合约中存储的操作日志。
58.值得注意的是,日志合约可以通过线性存储(可以称为log entry)方式对每个交易的操作日志进行存储。也即是,日志合约可以将每个交易的操作日志有序的存储(可以称为append)至一个线性列表(也可称为线性容器)中。如此,可以保证日志合约中所有操作日志的存储顺序与所有操作日志中每个操作日志所属的交易的执行顺序相同,也即,业务合约所执行的所有交易的执行顺序与这些交易的操作日志在日志合约中的存储顺序相同,从而保证日志合约中存储的操作日志的顺序性。
59.区块链系统每接收到多个业务系统中的一个业务系统发送的交易,就根据该交易
调用业务合约,之后该业务合约执行该交易,且在执行完该交易后获取该交易的操作日志,该操作日志包括该交易相关的操作者标识、合约数据标识、源状态、结果状态、操作类型等信息。之后业务合约调用日志合约,以将该交易的操作日志存储至日志合约,也即将与业务合约的合约数据相关的操作信息存储至日志合约中。
60.值得说明的是,本技术实施例中,在区块链系统中设置日志合约,从而业务合约每接收到一个交易,不仅可以执行交易,且可以调用日志合约来将交易的操作日志存储至日志合约中,也即将与业务合约的合约数据相关的操作信息存储至日志合约中。如此在业务合约依次执行多个交易来操作合约数据的情况下,可实现将与业务合约的合约数据的整个操作过程相关的操作信息均存储至日志合约中,从而实现对合约数据的操作过程的记录。
61.步骤302:该多个业务系统中的每个业务系统每隔预设时长从区块链系统获取日志合约中存储的至少一个操作日志,并处理该至少一个操作日志。
62.预设时长可以预先进行设置,且预设时长可以设置的较小,比如,预设时长可以为5分钟、6分钟等。如此该多个业务系统中的每个业务系统从区块链系统获取日志合约中存储的至少一个操作日志的时间间隔较小,从而可以保证该多个业务系统中的每个业务系统能够及时获取到该至少一个操作日志,进而及时处理该至少一个操作日志。
63.该至少一个操作日志为预设时长内区块链系统存储至日志合约中的操作日志。如此,保证了业务系统每次获取到的至少一个操作日志不会重复,从而提高系统效率。
64.由于区块链系统的不可篡改性,存储在日志合约中的所有操作日志不会被篡改,所以该多个业务系统中的每个业务系统从区块链系统中的日志合约中获取到的至少一个操作日志真实记录有业务合约的合约数据的操作过程。
65.可选地,日志合约具有查询接口,则该多个业务系统中的每个业务系统可以每隔预设时长调用日志合约的查询接口,以向区块链系统发送查询请求,该查询请求用于请求查询日志合约中存储的操作日志。区块链系统接收到该查询请求后,可以将日志合约中存储的至少一个操作日志发送给各个业务系统。
66.可选地,在该多个业务系统中的每个业务系统每隔预设时长从区块链系统获取日志合约中存储的至少一个操作日志之后,可以先对该至少一个操作日志进行解析,再对解析后的该至少一个操作日志进行处理。
67.作为一种示例,业务系统在对该至少一个操作日志进行解析时,可以将该至少一个操作日志中的每个操作日志的数据格式转换为预设格式。
68.预设格式可以预先进行设置,且预设格式为业务系统所能识别和处理的数据格式。
69.由于区块链系统存储的数据的数据格式是区块链系统所特有的,即是仅限于区块链系统能够识别和处理的数据格式。这种情况下,业务系统从区块链系统获取的该至少一个操作日志的数据格式是业务系统不能识别和处理的,所以需要将该至少一个操作日志中的每个操作日志的数据格式转换为预设格式。如此便于业务系统识别该至少一个操作日志中每个操作日志中的信息,进而便于业务系统处理该至少一个操作日志。
70.具体地,步骤302的操作可以为:该多个业务系统中的每个业务系统每隔预设时长从区块链系统按序获取日志合约中存储的至少一个操作日志,并按序处理该至少一个操作日志。
71.由于日志合约中所有操作日志的存储顺序与所有操作日志中每个操作日志所属的交易的执行顺序相同,所以为了实现链下数据与链上数据的同步,业务系统可以每隔预设时长从区块链系统按序获取日志合约中存储的至少一个操作日志,如此可以保证业务系统获取该至少一个操作日志的顺序与该至少一个操作日志中每个操作日志所属的交易的执行顺序相同,之后按序处理该至少一个操作日志,如此可以保证处理该至少一个操作日志的顺序与该至少一个操作日志中每个操作日志所属的交易的执行顺序相同。
72.可选地,该业务系统包括第一模块和多个第二模块。第一模块用于与区块链系统进行通信,第二模块用于生成交易。第二模块生成交易后,将生成的交易发送给第一模块,由第一模块将该交易发送给区块链系统。
73.这种情况下,该业务系统每隔预设时长从区块链系统按序获取日志合约中存储的至少一个操作日志,并按序处理该至少一个操作日志的操作可以为:第一模块每隔预设时长从区块链系统按序获取日志合约中存储的该至少一个操作日志,根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块;多个第二模块中任意的一个第二模块根据接收到的操作日志执行相应处理流程。
74.多个第二模块中每个第二模块的订阅条件由第一模块预先确定,具体地,第一模块接收多个第二模块中任意的一个第二模块发送的订阅消息,根据该订阅消息确定这个第二模块的订阅条件。
75.该订阅消息用于订阅操作日志,示例地,该订阅消息中可以携带目标合约数据标识,目标合约数据标识为这个第二模块需要订阅的操作日志相关的合约数据的标识。该订阅条件用于指示所要订阅的操作日志需满足的条件。
76.例如:第一模块接收多个第二模块中的一个第二模块发送的订阅消息中携带的目标合约数据标识为03,第一模块根据该订阅消息可以确定这个第二模块的订阅条件为:所要订阅的操作日志中的合约数据标识为03。
77.第二模块根据接收到的操作日志执行的相应处理流程为本地化处理流程,例如:该本地化处理流程与该操作日志所指示的操作可以是相对应的。作为一种示例,一个交易是由业务系统a发起的,这个交易指示的操作是区块链账户a向区块链账户b转账100,而在区块链系统执行这个交易后,业务系统c并不知道区块链账户b现在的状态。这种情况下,本技术实施例中,业务系统c可以从区块链系统获取日志合约中存储的这个交易的操作日志,根据该操作日志即可获知区块链账户b的余额从100更新到了200,那么业务系统c在链下可以记录区块链账户b的余额变动情况为由100增至200。
78.这种情况下,第一模块根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块,可以使得每个第二模块可以获取到与自身关注的合约数据相关的操作日志。并且,按序发送该至少一个操作日志可以保证至少一个第二模块能够按序处理该至少一个操作日志,从而保证链下的本地化处理与区块链系统中对合约数据的操作过程一致。
79.其中,第一模块根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块的操作可以为:第一模块按序将该至少一个操作日志添加至先入先出队列;对于该先入先出队列中处于队头的目标操作日志,若目标操作日志满足第二目标模块的订阅条件,则第一模块将目标操作日志发送给第
二目标模块。
80.该先入先出队列是一种消息队列,其具有队头和队尾。队头用于输出数据,队尾用于添加数据。“先入先出”也即率先从队尾进入队列的数据可以率先从队头输出。也即,业务系统可以从该先入先出队列的队头读取操作日志并发送给第二模块。
81.可选地,该先入先出队列可以为环形队列。环形队列为队头与队尾连接的先入先出队列。一般地,环形队列中存放的元素的个数是确定的,即是有限的。如此可以保证业务系统不会因为内存满载而出现故障,从而节省存储资源,提高系统性能。
82.可选地,该环形队列可以设置为无锁环形队列,如此可以保证队列空间重复利用,且实现多线程处理,即实现用于在队尾添加数据的线程和用于在队头读取数据的线程的同时进行,从而提高系统性能。
83.可选地,该环形队列可以设置为阻塞模式。第一模块不断将操作日志添加至环形队列中,若出队的速度小于入队的速度,会导致该环形队列的空间不足。而将该环形队列设置为阻塞模式后,第一模块可以在环形队列的空间不足以存储新的操作日志时,等待环形队列的队头的操作日志被读取并发送给第二模块之后,再往环形队列的队尾添加操作日志。如此可以提高系统性能。
84.目标操作日志为先入先出队列中处于队头的操作日志,也即将要从队列输出的操作日志。第二目标模块是多个第二模块中的一个第二模块,也即第二目标模块是订阅目标操作日志的第二模块。
85.第一模块按序将该至少一个操作日志添加至先入先出队列,如此先入先出队列中操作日志的顺序与区块链系统中对合约数据的操作顺序一致。之后第一模块判断处于队头的一个操作日志是否满足任意一个第二模块的订阅条件,若这个操作日志满足某个第二模块的订阅条件,说明这个操作日志为这个第二模块所订阅的操作日志,则第一模块可以将这个操作日志发送给这个第二模块,即可以将这个操作日志从先入先出队列的队头读取出来并发送给这个第二模块,如此这个第二模块可以根据这个操作日志执行相应处理流程,即这个第二模块可以消费这个操作日志。这种情况下,先入先出队列的队头又会有新的操作日志,之后第一模块再判断队头的这个新的操作日志是否满足任意一个第二模块的订阅条件,若这个新的操作日志满足某个第二模块的订阅条件,说明这个新的操作日志为这个第二模块所订阅的操作日志,则第一模块可以将这个新的操作日志发送给这个第二模块,即可以将这个新的操作日志从先入先出队列的队头读取出来并发送给这个第二模块,如此这个第二模块可以根据这个新的操作日志执行相应处理流程。如此是按序读取先入先出队列中的操作日志并发送给各个第二模块,可以保证第二模块根据操作日志执行的本地化处理的顺序与区块链系统中对合约数据的操作顺序一致,从而保证了链上数据操作和链下数据处理的同步。
86.值得注意的是,区块链系统通过上述步骤301可以记录区块链系统中对合约数据的操作过程,而多个业务系统中的每个业务系统通过上述步骤302可以从区块链系统获取操作日志并处理。这种情况下,业务系统每处理一个操作日志后,可以删除区块链系统中日志合约中存储的这个操作日志。可选地,第一模块每将一个操作日志发送给一个第二模块后,即每当一个第二模块消费一个操作日志后,第一模块就可以指示区块链系统删除日志合约中存储的这个操作日志。
87.由于区块链系统会一直接收业务系统发送的交易,所以区块链系统会一直调用业务合约执行交易,则业务合约会不断将交易的操作日志存储至日志合约中,那么日志合约中的操作日志会越来越多,造成数据膨胀,从而影响日志合约的存储效率。而由于在业务系统每处理一个操作日志后,链下数据处理已经与链上数据操作保持同步,因此日志合约中存储的这个操作日志后续一般不会再使用,所以可以删除区块链系统中日志合约中存储的这个操作日志。如此,可以避免数据膨胀,以免数据大量积累而影响日志合约的存储效率,且可以节省存储资源。
88.值得注意的是,本技术实施例提供的操作日志处理方法可以使多个业务系统在区块链系统中对合约数据的操作变得透明,也即一个业务系统发起交易,其余业务系统均会获取这个业务系统发起的交易的操作日志,来知道这个业务系统发起的交易的详情,从而保证区块链系统中对合约数据的操作的透明性。
89.为了便于理解,以业务系统a向区块链系统发送两个交易为例,结合图4来对本技术实施例提供的操作日志处理方法进行举例说明。
90.假如链下的参与方是参与方a和参与方b,参与方a的业务系统是业务系统a、参与方b的业务系统是业务系统b。假如业务系统a生成的第一个交易指示的操作是区块链账户c向区块链账户d转账100,第二个交易指示的操作是区块链账户c向区块链账户d转账50。区块链账户c的余额是500,区块链账户d的余额是100。参见图4,该方法包括如下步骤401-步骤408。
91.步骤401:业务系统a生成第一个交易,并将第一个交易发送至区块链系统,以使区块链系统调用业务合约执行第一个交易。同样的,业务系统a在发送第一个交易后还可以生成第二个交易,并将第二个交易发送至区块链系统,以使区块链系统调用业务合约执行第二个交易。
92.步骤402:区块链系统接收到业务系统a发送的第一个交易后,调用业务合约执行第一个交易。之后,区块链系统接收到业务系统a发送的第二个交易后,调用业务合约执行第二个交易。
93.具体地,业务合约执行第一个交易后,业务合约的合约数据中区块链账户d的余额会从100更新成200。当业务合约执行第二个交易后,业务合约的合约数据中区块链账户d的余额会从200更新成250。
94.步骤403:区块链系统调用业务合约执行第一个交易后,业务合约获取第一个交易的操作日志,也即获取操作者标识、合约数据标识、源状态、结果状态、操作类型等操作信息,并调用日志合约将第一个交易的操作日志存储至日志合约。之后,区块链系统调用业务合约执行第二个交易后,业务合约获取第二个交易的操作日志,并调用日志合约将第二个交易的操作日志存储至日志合约。
95.具体地,第一个交易的操作日志的操作者标识为业务系统a的标识,合约数据标识为区块链账户d的id(identifier,标识符),源状态为“区块链账户余额:100”,结果状态为“区块链账户余额:200”,操作类型为更新。第二个交易的操作日志的操作者标识为业务系统a的标识,合约数据标识为区块链账户d的id,源状态为“区块链账户余额:200”,结果状态为“区块链账户余额:250”,操作类型为更新。日志合约中先存储的是第一个交易的操作日志,后一个存储的是第二个交易的操作日志。
96.步骤404:业务系统a和业务系统b的第一模块可以每隔预设时长从区块链系统获取日志合约中存储的至少一个操作日志。
97.步骤405:业务系统a和业务系统b的第一模块获取到日志合约中存储的至少一个操作日志后,可以对该至少一个操作日志进行解析。
98.具体地,第一模块可以将该至少一个操作日志的数据格式转换为预设格式,以实现对该至少一个操作日志的解析,以方便后续识别和处理。
99.步骤406:业务系统a的第一模块将解析后的该至少一个操作日志按序添加至业务系统a中的先入先出队列中,业务系统b的第一模块将解析后的该至少一个操作日志按序添加至业务系统b中的先入先出队列中。先入先出队列中操作日志的顺序与第一个交易和第二个交易的执行顺序相同。
100.步骤407:业务系统a的第一模块将先入先出队列中的操作日志按序发送给业务系统a的第二模块,业务系统b的第一模块将先入先出队列中的操作日志按序发送给业务系统b的第二模块。
101.具体地,业务系统a和业务系统b中的各个第二模块均具有订阅条件,某个第二模块的订阅条件是根据这个第二模块发送的订阅消息确定的。例如,业务系统a的一个第二模块发送了订阅有关区块链账户d的操作日志的订阅消息,则这个第二模块的订阅条件为:订阅合约数据标识为区块链账户d的id的操作日志。那么对于先入先出队列中队头的一个操作日志,若这个操作日志中的合约数据标识为区块链账户d的id,则可以确定这个操作日志满足这个第二模块的订阅条件,则将这个操作日志发送给这个第二模块。
102.步骤408:业务系统a的一个第二模块接收到第一模块发送的一个操作日志后,可以根据接收到的这个操作日志执行相应处理流程。同样的,业务系统b的一个第二模块接收到第一模块发送的一个操作日志后,可以根据接收到的这个操作日志执行相应处理流程。
103.例如:业务系统b的一个第二模块接收到的操作日志中的操作者标识为业务系统a的标识,合约数据标识为区块链账户d的id,源状态为“区块链账户余额:100”,结果状态为“区块链账户余额:200”,操作类型为更新。则业务系统b的第二模块可以基于这个操作日志在链下记录区块链账户d的余额变动情况为由100增至200。之后,业务系统b的一个第二模块又接收到一个操作日志,这个操作日志中的操作者标识为业务系统a的标识,合约数据标识为区块链账户d的id,源状态为“区块链账户余额:200”,结果状态为“区块链账户余额:250”,操作类型为更新。则业务系统b的第二模块可以基于这个操作日志在链下记录区块链账户d的余额变动情况为由200增至250。如此保证了链下数据处理与链上数据操作的同步。
104.在本技术实施例中,区块链系统设置有日志合约。区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务系统发送的所有交易对合约数据的整个操作过程。多个业务系统中的每个业务系统可以每隔预设时长从区块链系统获取日志合约中存储的操作日志,由于区块链系统的不可篡改性,所以业务系统从区块链系统中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务系统根据获取到的操作日志可以准确获知区块链系统中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
105.图5是本技术实施例提供的一种操作日志处理方法的流程图。该操作日志处理方法应用于区块链系统,参见图5,该方法包括以下步骤。
106.步骤501:区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约。
107.步骤501的相关内容已经在步骤301中进行详细说明,本技术实施例对此不再赘述。
108.步骤502:区块链系统每隔预设时长向该多个业务系统中每个业务系统发送日志合约中存储的至少一个操作日志,以供该多个业务系统中的每个业务系统处理该至少一个操作日志。
109.步骤502的相关内容已经在步骤302中进行详细说明,本技术实施例对此不再赘述。
110.在本技术实施例中,区块链系统设置有日志合约。区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务系统发送的所有交易对合约数据的整个操作过程。多个业务系统中的每个业务系统可以每隔预设时长从区块链系统获取日志合约中存储的操作日志,由于区块链系统的不可篡改性,所以业务系统从区块链系统中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务系统根据获取到的操作日志可以准确获知区块链系统中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
111.图6是本技术实施例提供的一种操作日志处理装置的结构示意图。该操作日志处理装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图7所示的计算机设备,该计算机设备可以为区块链系统。参见图6,该装置包括:调用模块601、发送模块602。
112.调用模块601,用于每接收到多个业务系统中的一个业务系统发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约;发送模块602,用于每隔预设时长向该多个业务系统中每个业务系统发送日志合约中存储的至少一个操作日志,以供该多个业务系统中的每个业务系统处理该至少一个操作日志。
113.可选地,该操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,该操作者标识用于标识该交易的发起方,该合约数据标识用于标识该交易所要操作的合约数据,该源状态为该交易未执行时该合约数据标识所标识的合约数据的状态,该结果状态为该交易执行后该合约数据标识所标识的合约数据的状态,该操作类型为该交易对该合约数据标识所标识的合约数据所要进行的操作的类型。
114.在本技术实施例中,区块链系统设置有日志合约。区块链系统每接收到多个业务系统中的一个业务系统发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的
操作日志存储至日志合约,如此通过日志合约可以记录多个业务系统发送的所有交易对合约数据的整个操作过程。多个业务系统中的每个业务系统可以每隔预设时长从区块链系统获取日志合约中存储的操作日志,由于区块链系统的不可篡改性,所以业务系统从区块链系统中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务系统根据获取到的操作日志可以准确获知区块链系统中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
115.需要说明的是:上述实施例提供的操作日志处理装置在对操作日志进行处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
116.上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术实施例的保护范围。
117.上述实施例提供的操作日志处理装置与操作日志处理方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
118.图7为本技术实施例提供的一种计算机设备的结构示意图。如图7所示,计算机设备7包括:处理器70、存储器71以及存储在存储器71中并可在处理器70上运行的计算机程序72,处理器70执行计算机程序72时实现上述图5实施例中的操作日志处理方法中的步骤。
119.计算机设备7可以是包括有多个服务器的服务器集群,该服务器集群可以为区块链系统。本领域技术人员可以理解,图7仅仅是计算机设备7的举例,并不构成对计算机设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
120.处理器70可以是中央处理单元(central processing unit,cpu),处理器70还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
121.存储器71在一些实施例中可以是计算机设备7的内部存储单元,比如计算机设备7的硬盘或内存。存储器71在另一些实施例中也可以是计算机设备7的外部存储设备,比如计算机设备7上配备的插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器71还可以既包括计算机设备7的内部存储单元也包括外部存储设备。存储器71用于存储操作系统、应用程序、引导装载程序(boot loader)、数据以及其他程序等。存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
122.本技术实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
123.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
124.本技术实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
125.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、rom(read-only memory,只读存储器)、ram(random access memory,随机存取存储器)、cd-rom(compact disc read-only memory,只读光盘)、磁带、软盘和光数据存储设备等。本技术提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
126.应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
127.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
128.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
129.在本技术所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
130.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
131.以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应
包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1