CN114897532A - 操作日志处理方法、***、装置、设备和存储介质 - Google Patents

操作日志处理方法、***、装置、设备和存储介质 Download PDF

Info

Publication number
CN114897532A
CN114897532A CN202210810160.7A CN202210810160A CN114897532A CN 114897532 A CN114897532 A CN 114897532A CN 202210810160 A CN202210810160 A CN 202210810160A CN 114897532 A CN114897532 A CN 114897532A
Authority
CN
China
Prior art keywords
contract
transaction
log
operation log
service
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
Application number
CN202210810160.7A
Other languages
English (en)
Inventor
邱炜伟
汪小益
俞志斌
尚璇
胡麦芳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202210810160.7A priority Critical patent/CN114897532A/zh
Publication of CN114897532A publication Critical patent/CN114897532A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种操作日志处理方法、***、装置、设备和存储介质,属于区块链技术领域。包括:区块链***每接收到一个业务***发送的交易,根据交易调用业务合约,业务合约用于执行交易来操作业务合约的合约数据,且在执行完交易后将交易的操作日志存储至日志合约;业务***每隔预设时长从区块链***获取日志合约中存储的至少一个操作日志,并处理至少一个操作日志。本申请通过区块链***中设置的日志合约存储所有交易的操作日志,可实现对业务合约的合约数据的整个操作过程的记录。如此,业务***可根据从日志合约中获取的操作日志获知业务合约的合约数据的操作过程,据此可以处理操作日志,来保证链下数据处理与链上数据操作的同步。

Description

操作日志处理方法、***、装置、设备和存储介质
技术领域
本申请涉及区块链技术领域,特别涉及一种操作日志处理方法、***、装置、设备和存储介质。
背景技术
由于区块链***具有不可篡改性,所以区块链技术飞速发展,已经在各个领域中得到广泛应用。区块链***实质上是由多方参与共同维护的持续增长的分布式数据库,链下的任意一个参与方可以向区块链***发送交易来操作区块链***中的业务合约的合约数据。例如:链下的多个参与方向区块链***发送交易,区块链***调用业务合约依次执行该多个参与方中每个参与方发送的交易,来操作业务合约的合约数据,得到该合约数据的一个最终状态,这个最终状态是对该合约数据进行多次操作后得到的。
发明内容
本申请提供了一种操作日志处理方法、***、装置、设备和存储介质,可以使链下的业务***准确获知区块链***中的业务合约的合约数据的操作过程。所述技术方案如下:
第一方面,提供了一种操作日志处理方法,所述方法包括:
区块链***每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
所述多个业务***中的每个业务***每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
在本申请中,区块链***设置有日志合约。区块链***每接收到多个业务***中的一个业务***发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务***发送的所有交易对合约数据的整个操作过程。多个业务***中的每个业务***可以每隔预设时长从区块链***获取日志合约中存储的操作日志,由于区块链***的不可篡改性,所以业务***从区块链***中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务***根据获取到的操作日志可以准确获知区块链***中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
可选地,所述日志合约中所有操作日志的存储顺序与所述所有操作日志中每个操作日志所属的交易的执行顺序相同;
所述业务***每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志,包括:
所述业务***每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志。
可选地,所述业务***包括第一模块和多个第二模块,所述第一模块用于与所述区块链***进行通信,所述第二模块用于生成交易,所述方法还包括:
所述第一模块接收所述多个第二模块中任意的一个第二模块发送的订阅消息,根据所述订阅消息确定所述一个第二模块的订阅条件,所述订阅消息用于订阅操作日志,所述订阅条件用于指示所要订阅的操作日志需满足的条件;
可选地,所述业务***每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志,包括:
所述第一模块每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块;
所述多个第二模块中任意的一个第二模块根据接收到的操作日志执行相应处理流程。
可选地,所述第一模块根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块,包括:
所述第一模块按序将所述至少一个操作日志添加至先入先出队列;
对于所述先入先出队列中处于队头的目标操作日志,若所述目标操作日志满足第二目标模块的订阅条件,则所述第一模块将所述目标操作日志发送给所述第二目标模块,所述第二目标模块是所述多个第二模块中的一个第二模块。
可选地,所述先入先出队列为环形队列。
可选地,所述方法还包括:
所述业务***每处理一个操作日志后,删除所述区块链***中所述日志合约中存储的所述一个操作日志。
第二方面,提供了一种操作日志处理***,所述操作日志处理***包括区块链***和多个业务***;
所述区块链***,用于每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
所述业务***,用于每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
可选地,所述日志合约中所有操作日志的存储顺序与所述所有操作日志中每个操作日志所属的交易的执行顺序相同;
可选地,所述业务***用于:
每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志。
可选地,所述业务***包括第一模块和多个第二模块,所述第一模块用于与所述区块链***进行通信,所述第二模块用于生成交易;
所述第一模块,用于接收所述多个第二模块中任意的一个第二模块发送的订阅消息,根据所述订阅消息确定所述一个第二模块的订阅条件,所述订阅消息用于订阅操作日志,所述订阅条件用于指示所要订阅的操作日志需满足的条件;
可选地,所述第一模块,用于每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块;
所述多个第二模块中任意的一个第二模块,用于根据接收到的操作日志执行相应处理流程。
可选地,所述第一模块用于:
按序将所述至少一个操作日志添加至先入先出队列;
对于所述先入先出队列中处于队头的目标操作日志,若所述目标操作日志满足第二目标模块的订阅条件,则将所述目标操作日志发送给所述第二目标模块,所述第二目标模块是所述多个第二模块中的一个第二模块。
可选地,所述先入先出队列为环形队列。
可选地,所述业务***还用于:
每处理一个操作日志后,删除所述区块链***中所述日志合约中存储的所述一个操作日志。
第三方面,提供了一种操作日志处理方法,应用于区块链***,所述方法包括:
每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
每隔预设时长向所述多个业务***中每个业务***发送所述日志合约中存储的至少一个操作日志,以供所述多个业务***中的每个业务***处理所述至少一个操作日志。
在本申请中,区块链***设置有日志合约。区块链***每接收到多个业务***中的一个业务***发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务***发送的所有交易对合约数据的整个操作过程。多个业务***中的每个业务***可以每隔预设时长从区块链***获取日志合约中存储的操作日志,由于区块链***的不可篡改性,所以业务***从区块链***中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务***根据获取到的操作日志可以准确获知区块链***中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
第四方面,提供了一种操作日志处理装置,应用于区块链***,所述装置包括:
调用模块,用于每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
发送模块,用于每隔预设时长向所述多个业务***中每个业务***发送所述日志合约中存储的至少一个操作日志,以供所述多个业务***中的每个业务***处理所述至少一个操作日志。
可选地,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
第五方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第三方面所述的操作日志处理方法。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第三方面所述的操作日志处理方法。
第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第三方面所述的操作日志处理方法的步骤。
可以理解的是,上述第二方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。上述第四方面、第五方面、第六方面、第七方面的有益效果可以参见上述第三方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链***的结构示意图;
图2是本申请实施例提供的一种操作日志处理***的示意图;
图3是本申请实施例提供的一种操作日志处理方法的流程图;
图4是本申请实施例提供的另一种操作日志处理方法的流程图;
图5是本申请实施例提供的再一种操作日志处理方法的流程图;
图6是本申请实施例提供的一种操作日志处理装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在对本申请实施例进行解释说明之前,先对区块链的相关内容予以说明。
图1是本申请实施例提供的一种区块链***的结构示意图。
参见图1,区块链***100是指用于进行节点与节点之间数据共享的***,区块链***100中可以包括多个节点101。每个节点101在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护区块链***100内的共享数据。为了保证区块链***100内的信息互通,区块链***100中的每个节点101之间可以存在信息连接,节点101之间可以通过该信息连接进行信息传输。比如,当区块链***100中的任意节点101接收到输入信息时,区块链***100中的其他节点101便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链***100中全部节点101上存储的数据一致。
区块链***100具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链***100是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。
下面对本申请实施例的应用场景予以说明。
目前,链下的多个参与方可以向区块链***发送交易,区块链***可以调用业务合约依次执行该多个参与方中每个参与方发送的交易,来操作业务合约的合约数据,如此合约数据的状态会从初始状态变成一个最终状态,这个最终状态是对合约数据进行多次操作后得到的。
相关技术中,区块链***中没有提供对整个操作过程的记录机制,从而导致链下的多个参与方并不知道合约数据由初始状态变更为最终状态时中间经历了哪些变更操作。然而,链下的参与方往往需要基于这些变更操作进行一些本地化处理流程,所以对区块链***中的合约数据的操作过程的记录是非常有必要的。
为此,本申请实施例提供了一种操作日志处理方法,该操作日志处理方法可以应用于链下业务***基于区块链***中合约数据的操作过程执行一些本地化处理流程的场景中。
例如:该操作日志处理方法可以应用于业务***基于区块链***中某个区块链账户的操作记录执行相应的处理流程的场景中。在一些场景中,有业务***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的余额变动情况进行记录。如此为链下业务提供了便捷,同时保证了链下数据和链上数据的同步。
下面对本申请实施例涉及的***架构予以说明。
图2是本申请实施例提供的一种操作日志处理***的示意图。参见图2,该操作日志处理***包括:区块链***201和多个业务***202。
多个业务***202中的每个业务***202与区块链***201可以通过有线连接或无线连接进行通信。
多个业务***202中的每个业务***202为链下的参与方用于进行业务操作的***。比如,业务***202可以为银行***。任意一个业务***202可以部署在终端,也可以部署在服务器,该服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,本申请实施例对此不作限定。
区块链***201可以是上文图1实施例所示的区块链***100。区块链***201中设置有业务合约和日志合约。业务合约用于实现业务***202相关的业务功能。日志合约用于存储与业务合约的合约数据的操作过程相关的操作日志。
任意一个业务***202可以生成交易,并将该交易发送给区块链***201,该交易用于操作区块链***201中的业务合约的合约数据。
区块链***201用于接收多个业务***202中任意一个业务***202发送的交易,并执行该交易。具体地,区块链***201每接收到多个业务***202中的一个业务***202发送的交易,就可以根据该交易调用业务合约。业务合约可以执行该交易,且业务合约在执行完该交易后可以获取该交易的操作日志,之后业务合约可以将该交易的操作日志存储至日志合约。
多个业务***202中的每个业务***202可以从区块链***201获取日志合约中存储的操作日志,如此,多个业务***202中的每个业务***202可以获知区块链***201中业务合约的合约数据的操作过程,据此就可以进行相应的处理流程。
下面对本申请实施例提供的操作日志处理方法进行详细地解释说明。
图3是本申请实施例提供的一种操作日志处理方法的流程图。参见图3,该方法包括以下步骤。
步骤301:区块链***每接收到多个业务***中的一个业务***发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约。
多个业务***中的每个业务***为链下的参与方用于进行业务操作的***。比如,该业务***可以为银行***。可选地,该业务***可以具有业务***标识,该业务***标识用于唯一标识该业务***。例如,该业务***标识可以为该业务***的编号、IP(Internet Protocol,互联网协议)地址等。
该多个业务***中的任意一个业务***均可以生成交易。该交易的交易体中包含了该交易的发起方和接收方,该交易的发起方为操作者,即为这个业务***,该交易的接收方为***作者。该交易体中还指定了该交易的调用信息,即该交易所要调用的业务合约的相关信息。
该业务合约为一种部署在区块链***中执行业务操作的智能合约,该业务合约可以执行业务***发送的交易,以实现业务***相关的业务功能。并且,该业务合约还可以调用区块链***中设置的日志合约。
该操作日志用于指示该交易所执行的操作的相关信息,即指示与区块链***中业务合约的合约数据相关的操作信息。该操作日志可以包括操作者标识、合约数据标识、源状态、结果状态、操作类型等中的一个或多个。
该操作者标识用于标识该交易的发起方,例如:该操作者标识可以为业务***标识。该合约数据标识用于标识该交易所要操作的合约数据。该源状态为该交易未执行时该合约数据标识所标识的合约数据的状态,该结果状态为该交易执行后该合约数据标识所标识的合约数据的状态,例如:该源状态可以为“区块链账户余额:100”,该结果状态可以为“区块链账户余额:200”。
该操作类型为该交易对该合约数据标识所标识的合约数据所要进行的操作的类型。例如:该操作类型可以为更新(update)、删除(delete)、查询(query)、创建(create)等,本申请实施例对此不作限定。
日志合约(log contract)是一种部署在区块链***中用于存储操作日志的智能合约。日志合约提供了调用方法,使得业务合约可以调用日志合约,来存储交易的操作日志。且日志合约提供了查询方法,使得可以通过日志合约中的查询方法查询日志合约中存储的操作日志。
值得注意的是,日志合约可以通过线性存储(可以称为log entry)方式对每个交易的操作日志进行存储。也即是,日志合约可以将每个交易的操作日志有序的存储(可以称为append)至一个线性列表(也可称为线性容器)中。如此,可以保证日志合约中所有操作日志的存储顺序与所有操作日志中每个操作日志所属的交易的执行顺序相同,也即,业务合约所执行的所有交易的执行顺序与这些交易的操作日志在日志合约中的存储顺序相同,从而保证日志合约中存储的操作日志的顺序性。
区块链***每接收到多个业务***中的一个业务***发送的交易,就根据该交易调用业务合约,之后该业务合约执行该交易,且在执行完该交易后获取该交易的操作日志,该操作日志包括该交易相关的操作者标识、合约数据标识、源状态、结果状态、操作类型等信息。之后业务合约调用日志合约,以将该交易的操作日志存储至日志合约,也即将与业务合约的合约数据相关的操作信息存储至日志合约中。
值得说明的是,本申请实施例中,在区块链***中设置日志合约,从而业务合约每接收到一个交易,不仅可以执行交易,且可以调用日志合约来将交易的操作日志存储至日志合约中,也即将与业务合约的合约数据相关的操作信息存储至日志合约中。如此在业务合约依次执行多个交易来操作合约数据的情况下,可实现将与业务合约的合约数据的整个操作过程相关的操作信息均存储至日志合约中,从而实现对合约数据的操作过程的记录。
步骤302:该多个业务***中的每个业务***每隔预设时长从区块链***获取日志合约中存储的至少一个操作日志,并处理该至少一个操作日志。
预设时长可以预先进行设置,且预设时长可以设置的较小,比如,预设时长可以为5分钟、6分钟等。如此该多个业务***中的每个业务***从区块链***获取日志合约中存储的至少一个操作日志的时间间隔较小,从而可以保证该多个业务***中的每个业务***能够及时获取到该至少一个操作日志,进而及时处理该至少一个操作日志。
该至少一个操作日志为预设时长内区块链***存储至日志合约中的操作日志。如此,保证了业务***每次获取到的至少一个操作日志不会重复,从而提高***效率。
由于区块链***的不可篡改性,存储在日志合约中的所有操作日志不会被篡改,所以该多个业务***中的每个业务***从区块链***中的日志合约中获取到的至少一个操作日志真实记录有业务合约的合约数据的操作过程。
可选地,日志合约具有查询接口,则该多个业务***中的每个业务***可以每隔预设时长调用日志合约的查询接口,以向区块链***发送查询请求,该查询请求用于请求查询日志合约中存储的操作日志。区块链***接收到该查询请求后,可以将日志合约中存储的至少一个操作日志发送给各个业务***。
可选地,在该多个业务***中的每个业务***每隔预设时长从区块链***获取日志合约中存储的至少一个操作日志之后,可以先对该至少一个操作日志进行解析,再对解析后的该至少一个操作日志进行处理。
作为一种示例,业务***在对该至少一个操作日志进行解析时,可以将该至少一个操作日志中的每个操作日志的数据格式转换为预设格式。
预设格式可以预先进行设置,且预设格式为业务***所能识别和处理的数据格式。
由于区块链***存储的数据的数据格式是区块链***所特有的,即是仅限于区块链***能够识别和处理的数据格式。这种情况下,业务***从区块链***获取的该至少一个操作日志的数据格式是业务***不能识别和处理的,所以需要将该至少一个操作日志中的每个操作日志的数据格式转换为预设格式。如此便于业务***识别该至少一个操作日志中每个操作日志中的信息,进而便于业务***处理该至少一个操作日志。
具体地,步骤302的操作可以为:该多个业务***中的每个业务***每隔预设时长从区块链***按序获取日志合约中存储的至少一个操作日志,并按序处理该至少一个操作日志。
由于日志合约中所有操作日志的存储顺序与所有操作日志中每个操作日志所属的交易的执行顺序相同,所以为了实现链下数据与链上数据的同步,业务***可以每隔预设时长从区块链***按序获取日志合约中存储的至少一个操作日志,如此可以保证业务***获取该至少一个操作日志的顺序与该至少一个操作日志中每个操作日志所属的交易的执行顺序相同,之后按序处理该至少一个操作日志,如此可以保证处理该至少一个操作日志的顺序与该至少一个操作日志中每个操作日志所属的交易的执行顺序相同。
可选地,该业务***包括第一模块和多个第二模块。第一模块用于与区块链***进行通信,第二模块用于生成交易。第二模块生成交易后,将生成的交易发送给第一模块,由第一模块将该交易发送给区块链***。
这种情况下,该业务***每隔预设时长从区块链***按序获取日志合约中存储的至少一个操作日志,并按序处理该至少一个操作日志的操作可以为:第一模块每隔预设时长从区块链***按序获取日志合约中存储的该至少一个操作日志,根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块;多个第二模块中任意的一个第二模块根据接收到的操作日志执行相应处理流程。
多个第二模块中每个第二模块的订阅条件由第一模块预先确定,具体地,第一模块接收多个第二模块中任意的一个第二模块发送的订阅消息,根据该订阅消息确定这个第二模块的订阅条件。
该订阅消息用于订阅操作日志,示例地,该订阅消息中可以携带目标合约数据标识,目标合约数据标识为这个第二模块需要订阅的操作日志相关的合约数据的标识。该订阅条件用于指示所要订阅的操作日志需满足的条件。
例如:第一模块接收多个第二模块中的一个第二模块发送的订阅消息中携带的目标合约数据标识为03,第一模块根据该订阅消息可以确定这个第二模块的订阅条件为:所要订阅的操作日志中的合约数据标识为03。
第二模块根据接收到的操作日志执行的相应处理流程为本地化处理流程,例如:该本地化处理流程与该操作日志所指示的操作可以是相对应的。作为一种示例,一个交易是由业务***A发起的,这个交易指示的操作是区块链账户A向区块链账户B转账100,而在区块链***执行这个交易后,业务***C并不知道区块链账户B现在的状态。这种情况下,本申请实施例中,业务***C可以从区块链***获取日志合约中存储的这个交易的操作日志,根据该操作日志即可获知区块链账户B的余额从100更新到了200,那么业务***C在链下可以记录区块链账户B的余额变动情况为由100增至200。
这种情况下,第一模块根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块,可以使得每个第二模块可以获取到与自身关注的合约数据相关的操作日志。并且,按序发送该至少一个操作日志可以保证至少一个第二模块能够按序处理该至少一个操作日志,从而保证链下的本地化处理与区块链***中对合约数据的操作过程一致。
其中,第一模块根据多个第二模块中每个第二模块的订阅条件,按序将该至少一个操作日志发送给多个第二模块中的至少一个第二模块的操作可以为:第一模块按序将该至少一个操作日志添加至先入先出队列;对于该先入先出队列中处于队头的目标操作日志,若目标操作日志满足第二目标模块的订阅条件,则第一模块将目标操作日志发送给第二目标模块。
该先入先出队列是一种消息队列,其具有队头和队尾。队头用于输出数据,队尾用于添加数据。“先入先出”也即率先从队尾进入队列的数据可以率先从队头输出。也即,业务***可以从该先入先出队列的队头读取操作日志并发送给第二模块。
可选地,该先入先出队列可以为环形队列。环形队列为队头与队尾连接的先入先出队列。一般地,环形队列中存放的元素的个数是确定的,即是有限的。如此可以保证业务***不会因为内存满载而出现故障,从而节省存储资源,提高***性能。
可选地,该环形队列可以设置为无锁环形队列,如此可以保证队列空间重复利用,且实现多线程处理,即实现用于在队尾添加数据的线程和用于在队头读取数据的线程的同时进行,从而提高***性能。
可选地,该环形队列可以设置为阻塞模式。第一模块不断将操作日志添加至环形队列中,若出队的速度小于入队的速度,会导致该环形队列的空间不足。而将该环形队列设置为阻塞模式后,第一模块可以在环形队列的空间不足以存储新的操作日志时,等待环形队列的队头的操作日志被读取并发送给第二模块之后,再往环形队列的队尾添加操作日志。如此可以提高***性能。
目标操作日志为先入先出队列中处于队头的操作日志,也即将要从队列输出的操作日志。第二目标模块是多个第二模块中的一个第二模块,也即第二目标模块是订阅目标操作日志的第二模块。
第一模块按序将该至少一个操作日志添加至先入先出队列,如此先入先出队列中操作日志的顺序与区块链***中对合约数据的操作顺序一致。之后第一模块判断处于队头的一个操作日志是否满足任意一个第二模块的订阅条件,若这个操作日志满足某个第二模块的订阅条件,说明这个操作日志为这个第二模块所订阅的操作日志,则第一模块可以将这个操作日志发送给这个第二模块,即可以将这个操作日志从先入先出队列的队头读取出来并发送给这个第二模块,如此这个第二模块可以根据这个操作日志执行相应处理流程,即这个第二模块可以消费这个操作日志。这种情况下,先入先出队列的队头又会有新的操作日志,之后第一模块再判断队头的这个新的操作日志是否满足任意一个第二模块的订阅条件,若这个新的操作日志满足某个第二模块的订阅条件,说明这个新的操作日志为这个第二模块所订阅的操作日志,则第一模块可以将这个新的操作日志发送给这个第二模块,即可以将这个新的操作日志从先入先出队列的队头读取出来并发送给这个第二模块,如此这个第二模块可以根据这个新的操作日志执行相应处理流程。如此是按序读取先入先出队列中的操作日志并发送给各个第二模块,可以保证第二模块根据操作日志执行的本地化处理的顺序与区块链***中对合约数据的操作顺序一致,从而保证了链上数据操作和链下数据处理的同步。
值得注意的是,区块链***通过上述步骤301可以记录区块链***中对合约数据的操作过程,而多个业务***中的每个业务***通过上述步骤302可以从区块链***获取操作日志并处理。这种情况下,业务***每处理一个操作日志后,可以删除区块链***中日志合约中存储的这个操作日志。可选地,第一模块每将一个操作日志发送给一个第二模块后,即每当一个第二模块消费一个操作日志后,第一模块就可以指示区块链***删除日志合约中存储的这个操作日志。
由于区块链***会一直接收业务***发送的交易,所以区块链***会一直调用业务合约执行交易,则业务合约会不断将交易的操作日志存储至日志合约中,那么日志合约中的操作日志会越来越多,造成数据膨胀,从而影响日志合约的存储效率。而由于在业务***每处理一个操作日志后,链下数据处理已经与链上数据操作保持同步,因此日志合约中存储的这个操作日志后续一般不会再使用,所以可以删除区块链***中日志合约中存储的这个操作日志。如此,可以避免数据膨胀,以免数据大量积累而影响日志合约的存储效率,且可以节省存储资源。
值得注意的是,本申请实施例提供的操作日志处理方法可以使多个业务***在区块链***中对合约数据的操作变得透明,也即一个业务***发起交易,其余业务***均会获取这个业务***发起的交易的操作日志,来知道这个业务***发起的交易的详情,从而保证区块链***中对合约数据的操作的透明性。
为了便于理解,以业务***A向区块链***发送两个交易为例,结合图4来对本申请实施例提供的操作日志处理方法进行举例说明。
假如链下的参与方是参与方A和参与方B,参与方A的业务***是业务***A、参与方B的业务***是业务***B。假如业务***A生成的第一个交易指示的操作是区块链账户C向区块链账户D转账100,第二个交易指示的操作是区块链账户C向区块链账户D转账50。区块链账户C的余额是500,区块链账户D的余额是100。参见图4,该方法包括如下步骤401-步骤408。
步骤401:业务***A生成第一个交易,并将第一个交易发送至区块链***,以使区块链***调用业务合约执行第一个交易。同样的,业务***A在发送第一个交易后还可以生成第二个交易,并将第二个交易发送至区块链***,以使区块链***调用业务合约执行第二个交易。
步骤402:区块链***接收到业务***A发送的第一个交易后,调用业务合约执行第一个交易。之后,区块链***接收到业务***A发送的第二个交易后,调用业务合约执行第二个交易。
具体地,业务合约执行第一个交易后,业务合约的合约数据中区块链账户D的余额会从100更新成200。当业务合约执行第二个交易后,业务合约的合约数据中区块链账户D的余额会从200更新成250。
步骤403:区块链***调用业务合约执行第一个交易后,业务合约获取第一个交易的操作日志,也即获取操作者标识、合约数据标识、源状态、结果状态、操作类型等操作信息,并调用日志合约将第一个交易的操作日志存储至日志合约。之后,区块链***调用业务合约执行第二个交易后,业务合约获取第二个交易的操作日志,并调用日志合约将第二个交易的操作日志存储至日志合约。
具体地,第一个交易的操作日志的操作者标识为业务***A的标识,合约数据标识为区块链账户D的ID(identifier,标识符),源状态为“区块链账户余额:100”,结果状态为“区块链账户余额:200”,操作类型为更新。第二个交易的操作日志的操作者标识为业务***A的标识,合约数据标识为区块链账户D的ID,源状态为“区块链账户余额:200”,结果状态为“区块链账户余额:250”,操作类型为更新。日志合约中先存储的是第一个交易的操作日志,后一个存储的是第二个交易的操作日志。
步骤404:业务***A和业务***B的第一模块可以每隔预设时长从区块链***获取日志合约中存储的至少一个操作日志。
步骤405:业务***A和业务***B的第一模块获取到日志合约中存储的至少一个操作日志后,可以对该至少一个操作日志进行解析。
具体地,第一模块可以将该至少一个操作日志的数据格式转换为预设格式,以实现对该至少一个操作日志的解析,以方便后续识别和处理。
步骤406:业务***A的第一模块将解析后的该至少一个操作日志按序添加至业务***A中的先入先出队列中,业务***B的第一模块将解析后的该至少一个操作日志按序添加至业务***B中的先入先出队列中。先入先出队列中操作日志的顺序与第一个交易和第二个交易的执行顺序相同。
步骤407:业务***A的第一模块将先入先出队列中的操作日志按序发送给业务***A的第二模块,业务***B的第一模块将先入先出队列中的操作日志按序发送给业务***B的第二模块。
具体地,业务***A和业务***B中的各个第二模块均具有订阅条件,某个第二模块的订阅条件是根据这个第二模块发送的订阅消息确定的。例如,业务***A的一个第二模块发送了订阅有关区块链账户D的操作日志的订阅消息,则这个第二模块的订阅条件为:订阅合约数据标识为区块链账户D的ID的操作日志。那么对于先入先出队列中队头的一个操作日志,若这个操作日志中的合约数据标识为区块链账户D的ID,则可以确定这个操作日志满足这个第二模块的订阅条件,则将这个操作日志发送给这个第二模块。
步骤408:业务***A的一个第二模块接收到第一模块发送的一个操作日志后,可以根据接收到的这个操作日志执行相应处理流程。同样的,业务***B的一个第二模块接收到第一模块发送的一个操作日志后,可以根据接收到的这个操作日志执行相应处理流程。
例如:业务***B的一个第二模块接收到的操作日志中的操作者标识为业务***A的标识,合约数据标识为区块链账户D的ID,源状态为“区块链账户余额:100”,结果状态为“区块链账户余额:200”,操作类型为更新。则业务***B的第二模块可以基于这个操作日志在链下记录区块链账户D的余额变动情况为由100增至200。之后,业务***B的一个第二模块又接收到一个操作日志,这个操作日志中的操作者标识为业务***A的标识,合约数据标识为区块链账户D的ID,源状态为“区块链账户余额:200”,结果状态为“区块链账户余额:250”,操作类型为更新。则业务***B的第二模块可以基于这个操作日志在链下记录区块链账户D的余额变动情况为由200增至250。如此保证了链下数据处理与链上数据操作的同步。
在本申请实施例中,区块链***设置有日志合约。区块链***每接收到多个业务***中的一个业务***发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务***发送的所有交易对合约数据的整个操作过程。多个业务***中的每个业务***可以每隔预设时长从区块链***获取日志合约中存储的操作日志,由于区块链***的不可篡改性,所以业务***从区块链***中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务***根据获取到的操作日志可以准确获知区块链***中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
图5是本申请实施例提供的一种操作日志处理方法的流程图。该操作日志处理方法应用于区块链***,参见图5,该方法包括以下步骤。
步骤501:区块链***每接收到多个业务***中的一个业务***发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约。
步骤501的相关内容已经在步骤301中进行详细说明,本申请实施例对此不再赘述。
步骤502:区块链***每隔预设时长向该多个业务***中每个业务***发送日志合约中存储的至少一个操作日志,以供该多个业务***中的每个业务***处理该至少一个操作日志。
步骤502的相关内容已经在步骤302中进行详细说明,本申请实施例对此不再赘述。
在本申请实施例中,区块链***设置有日志合约。区块链***每接收到多个业务***中的一个业务***发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务***发送的所有交易对合约数据的整个操作过程。多个业务***中的每个业务***可以每隔预设时长从区块链***获取日志合约中存储的操作日志,由于区块链***的不可篡改性,所以业务***从区块链***中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务***根据获取到的操作日志可以准确获知区块链***中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
图6是本申请实施例提供的一种操作日志处理装置的结构示意图。该操作日志处理装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图7所示的计算机设备,该计算机设备可以为区块链***。参见图6,该装置包括:调用模块601、发送模块602。
调用模块601,用于每接收到多个业务***中的一个业务***发送的交易,根据该交易调用业务合约,该交易用于操作该业务合约的合约数据,该业务合约用于执行该交易,且在执行完该交易后获取该交易的操作日志,将该交易的操作日志存储至日志合约;
发送模块602,用于每隔预设时长向该多个业务***中每个业务***发送日志合约中存储的至少一个操作日志,以供该多个业务***中的每个业务***处理该至少一个操作日志。
可选地,该操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,该操作者标识用于标识该交易的发起方,该合约数据标识用于标识该交易所要操作的合约数据,该源状态为该交易未执行时该合约数据标识所标识的合约数据的状态,该结果状态为该交易执行后该合约数据标识所标识的合约数据的状态,该操作类型为该交易对该合约数据标识所标识的合约数据所要进行的操作的类型。
在本申请实施例中,区块链***设置有日志合约。区块链***每接收到多个业务***中的一个业务***发送的交易,根据交易调用业务合约,这种情况下,业务合约执行交易,以对业务合约的合约数据进行操作,且在执行完交易后获取交易的操作日志,将交易的操作日志存储至日志合约,如此通过日志合约可以记录多个业务***发送的所有交易对合约数据的整个操作过程。多个业务***中的每个业务***可以每隔预设时长从区块链***获取日志合约中存储的操作日志,由于区块链***的不可篡改性,所以业务***从区块链***中的日志合约中获取到的操作日志真实记录有交易对合约数据的操作过程。如此,业务***根据获取到的操作日志可以准确获知区块链***中的合约数据的操作过程,然后可以对获取到的操作日志进行处理,以保证链下数据处理与链上数据操作的同步。
需要说明的是:上述实施例提供的操作日志处理装置在对操作日志进行处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
上述实施例提供的操作日志处理装置与操作日志处理方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
图7为本申请实施例提供的一种计算机设备的结构示意图。如图7所示,计算机设备7包括:处理器70、存储器71以及存储在存储器71中并可在处理器70上运行的计算机程序72,处理器70执行计算机程序72时实现上述图5实施例中的操作日志处理方法中的步骤。
计算机设备7可以是包括有多个服务器的服务器集群,该服务器集群可以为区块链***。本领域技术人员可以理解,图7仅仅是计算机设备7的举例,并不构成对计算机设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器70可以是中央处理单元(Central Processing Unit,CPU),处理器70还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器71在一些实施例中可以是计算机设备7的内部存储单元,比如计算机设备7的硬盘或内存。存储器71在另一些实施例中也可以是计算机设备7的外部存储设备,比如计算机设备7上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器71还可以既包括计算机设备7的内部存储单元也包括外部存储设备。存储器71用于存储操作***、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (12)

1.一种操作日志处理方法,其特征在于,所述方法包括:
区块链***每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
所述多个业务***中的每个业务***每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
2.如权利要求1所述的方法,其特征在于,所述操作日志包括操作者标识、合约数据标识、源状态、结果状态、操作类型,所述操作者标识用于标识所述交易的发起方,所述合约数据标识用于标识所述交易所要操作的合约数据,所述源状态为所述交易未执行时所述合约数据标识所标识的合约数据的状态,所述结果状态为所述交易执行后所述合约数据标识所标识的合约数据的状态,所述操作类型为所述交易对所述合约数据标识所标识的合约数据所要进行的操作的类型。
3.如权利要求1所述的方法,其特征在于,所述日志合约中所有操作日志的存储顺序与所述所有操作日志中每个操作日志所属的交易的执行顺序相同;
所述业务***每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志,包括:
所述业务***每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志。
4.如权利要求3所述的方法,其特征在于,所述业务***包括第一模块和多个第二模块,所述第一模块用于与所述区块链***进行通信,所述第二模块用于生成交易,所述方法还包括:
所述第一模块接收所述多个第二模块中任意的一个第二模块发送的订阅消息,根据所述订阅消息确定所述一个第二模块的订阅条件,所述订阅消息用于订阅操作日志,所述订阅条件用于指示所要订阅的操作日志需满足的条件;
所述业务***每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,并按序处理所述至少一个操作日志,包括:
所述第一模块每隔所述预设时长从所述区块链***按序获取所述日志合约中存储的所述至少一个操作日志,根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块;
所述多个第二模块中任意的一个第二模块根据接收到的操作日志执行相应处理流程。
5.如权利要求4所述的方法,其特征在于,所述第一模块根据所述多个第二模块中每个第二模块的订阅条件,按序将所述至少一个操作日志发送给所述多个第二模块中的至少一个第二模块,包括:
所述第一模块按序将所述至少一个操作日志添加至先入先出队列;
对于所述先入先出队列中处于队头的目标操作日志,若所述目标操作日志满足第二目标模块的订阅条件,则所述第一模块将所述目标操作日志发送给所述第二目标模块,所述第二目标模块是所述多个第二模块中的一个第二模块。
6.如权利要求5所述的方法,其特征在于,所述先入先出队列为环形队列。
7.如权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
所述业务***每处理一个操作日志后,删除所述区块链***中所述日志合约中存储的所述一个操作日志。
8.一种操作日志处理方法,其特征在于,应用于区块链***,所述方法包括:
每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
每隔预设时长向所述多个业务***中每个业务***发送所述日志合约中存储的至少一个操作日志,以供所述多个业务***中的每个业务***处理所述至少一个操作日志。
9.一种操作日志处理***,其特征在于,所述操作日志处理***包括区块链***和多个业务***;
所述区块链***,用于每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
所述业务***,用于每隔预设时长从所述区块链***获取所述日志合约中存储的至少一个操作日志,并处理所述至少一个操作日志。
10.一种操作日志处理装置,其特征在于,应用于区块链***,所述装置包括:
调用模块,用于每接收到多个业务***中的一个业务***发送的交易,根据所述交易调用业务合约,所述交易用于操作所述业务合约的合约数据,所述业务合约用于执行所述交易,且在执行完所述交易后获取所述交易的操作日志,将所述交易的操作日志存储至日志合约;
发送模块,用于每隔预设时长向所述多个业务***中每个业务***发送所述日志合约中存储的至少一个操作日志,以供所述多个业务***中的每个业务***处理所述至少一个操作日志。
11.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求8所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求8所述的方法。
CN202210810160.7A 2022-07-11 2022-07-11 操作日志处理方法、***、装置、设备和存储介质 Pending CN114897532A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210810160.7A CN114897532A (zh) 2022-07-11 2022-07-11 操作日志处理方法、***、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210810160.7A CN114897532A (zh) 2022-07-11 2022-07-11 操作日志处理方法、***、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN114897532A true CN114897532A (zh) 2022-08-12

Family

ID=82729561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210810160.7A Pending CN114897532A (zh) 2022-07-11 2022-07-11 操作日志处理方法、***、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114897532A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116976898A (zh) * 2023-09-25 2023-10-31 腾讯科技(深圳)有限公司 一种数据获取方法、数据可视化方法、装置及相关产品

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108269190A (zh) * 2018-01-17 2018-07-10 深圳四方精创资讯股份有限公司 基于跨链中继平台的跨链方法及其***
CN109978573A (zh) * 2019-04-03 2019-07-05 上海中商网络股份有限公司 一种基于区块链的信息溯源***
CN111061685A (zh) * 2019-11-21 2020-04-24 腾讯科技(深圳)有限公司 日志查询方法、装置、节点设备及存储介质
US20200210414A1 (en) * 2019-08-30 2020-07-02 Alibaba Group Holding Limited Blockchain transaction processing method and apparatus
CN111383122A (zh) * 2020-05-29 2020-07-07 支付宝(杭州)信息技术有限公司 基于区块链的资产管理方法、装置及电子设备
CN112818056A (zh) * 2020-12-31 2021-05-18 杭州趣链科技有限公司 一种区块链的日志安全共享方法、***与装置
CN112866282A (zh) * 2021-02-10 2021-05-28 中国人民银行数字货币研究所 区块链中时间信息验证方法和装置
CN113689216A (zh) * 2021-10-26 2021-11-23 腾讯科技(深圳)有限公司 跨链事务处理方法及装置、设备、存储介质、程序产品

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108269190A (zh) * 2018-01-17 2018-07-10 深圳四方精创资讯股份有限公司 基于跨链中继平台的跨链方法及其***
CN109978573A (zh) * 2019-04-03 2019-07-05 上海中商网络股份有限公司 一种基于区块链的信息溯源***
US20200210414A1 (en) * 2019-08-30 2020-07-02 Alibaba Group Holding Limited Blockchain transaction processing method and apparatus
CN111061685A (zh) * 2019-11-21 2020-04-24 腾讯科技(深圳)有限公司 日志查询方法、装置、节点设备及存储介质
CN111383122A (zh) * 2020-05-29 2020-07-07 支付宝(杭州)信息技术有限公司 基于区块链的资产管理方法、装置及电子设备
CN112818056A (zh) * 2020-12-31 2021-05-18 杭州趣链科技有限公司 一种区块链的日志安全共享方法、***与装置
CN112866282A (zh) * 2021-02-10 2021-05-28 中国人民银行数字货币研究所 区块链中时间信息验证方法和装置
CN113689216A (zh) * 2021-10-26 2021-11-23 腾讯科技(深圳)有限公司 跨链事务处理方法及装置、设备、存储介质、程序产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116976898A (zh) * 2023-09-25 2023-10-31 腾讯科技(深圳)有限公司 一种数据获取方法、数据可视化方法、装置及相关产品
CN116976898B (zh) * 2023-09-25 2024-02-23 腾讯科技(深圳)有限公司 一种数据获取方法、数据可视化方法、装置及相关产品

Similar Documents

Publication Publication Date Title
CN106375458B (zh) 服务调用***、方法及装置
CN108712332B (zh) 一种通信方法、***和装置
CN108347477B (zh) 数据发送方法、装置以及服务器
CN111163130B (zh) 一种网络服务***及其数据传输方法
US10303529B2 (en) Protocol for communication of data structures
CN108121608A (zh) 一种队列调度方法以及节点设备
CN110908812B (zh) 业务数据处理方法、装置、可读存储介质和计算机设备
CN111831748A (zh) 数据同步方法、装置及存储介质
CN109167819B (zh) 数据同步***、方法、装置及存储介质
CN114897532A (zh) 操作日志处理方法、***、装置、设备和存储介质
CN112711683A (zh) 数据比对方法、装置及计算机设备
CN108830724B (zh) 一种资源数据包处理方法及终端设备
CN107342981B (zh) 传感器数据的传输方法及装置、虚拟现实头戴设备
CN111866157B (zh) 云服务网关及云服务内外请求格式转换方法
CN113779021B (zh) 数据处理方法、装置、计算机***及可读存储介质
CN115576661A (zh) 数据处理***、方法和控制器
CN112416980A (zh) 数据业务处理方法、装置及设备
CN112153148A (zh) 基于消息接收端的消息堆积处理方法及装置
US20140019992A1 (en) Method of Parallel Processing of Ordered Data Streams
CN117082017B (zh) 一种白盒交换机扩展卡管理的方法及装置
CN115953282B (zh) 一种视频任务的处理方法及装置
CN116208573A (zh) 数据处理方法、装置、电子设备和存储介质
CN117742998B (zh) 一种面向计费采集数据转发的高性能队列方法及***
CN113162990B (zh) 消息发送方法、装置、设备和存储介质
CN113691434B (zh) 数据传输***、方法、电子设备及存储介质

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