CN111061685B - 日志查询方法、装置、节点设备及存储介质 - Google Patents
日志查询方法、装置、节点设备及存储介质 Download PDFInfo
- Publication number
- CN111061685B CN111061685B CN201911151996.5A CN201911151996A CN111061685B CN 111061685 B CN111061685 B CN 111061685B CN 201911151996 A CN201911151996 A CN 201911151996A CN 111061685 B CN111061685 B CN 111061685B
- Authority
- CN
- China
- Prior art keywords
- log
- target
- contract
- log data
- transaction
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种日志查询方法、装置、节点设备以及存储介质,其中方法包括:接收日志查询请求,日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;根据第一地址获取日志管理合约,日志管理合约包括预编译合约的第二地址,预编译合约用于将来自日志管理合约的区块链中业务交易产生的日志数据并传输至预设存储位置进行存储;通过运行日志管理合约根据第二地址调用预编译合约从预设存储位置中获取目标日志数据的标识对应的目标日志数据。采用本发明实施例可以更为便利地查询日志。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种日志查询方法、装置、节点设备及存储介质。
背景技术
随着区块链技术的发展,区块链被越来越多的企业和用户使用。在区块链中,用户或企业向区块链中发布交易,区块链中的节点设备执行交易所指示的业务,并将执行所指示业务过程产生的日志数据进行存储,以便于后续用户可以通过日志数据分析所述业务的执行情况。
目前,区块链中的日志数据大多数是通过MPT树(一种加密的数据认证结构加密算法)进行加密后以键值对的形式存储在数据库中。如果用户想要查询日志数据时,需要根据交易哈希值从数据库中查询经过加密处理的非明文的日志数据,用户不能直接对非明文日志进行分析,需要采用相应解密方法才可得到明文日志。该种查询日志的方法过程比较繁琐,不够便利。因此,在区块链中如何更为便利地查询日志数据成为当前研究的热点问题。
发明内容
本发明实施例提供了一种日志查询方法、装置、节点设备及存储介质,可以实现更为便利地查询日志。
一方面,本发明实施例提供了一种日志查询方法,包括:
接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求查询的目标日志数据的标识;
根据所述第一地址获取所述日志管理合约,所述日志管理合约使用预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
再一方面,本发明实施例提供了一种日志查询装置,包括:
接收单元,用于接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求查询的目标日志数据的标识;
获取单元,用于根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
所述获取单元,还用于通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
又一方面,本发明实施例提供了一种节点设备,包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求查询的目标日志数据的标识;
根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
又一方面,本发明实施例还提供了一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行上面所述的日志查询方法。
本发明实施例通过预编译合约将区块链中业务交易产生的日志数据传输至预设存储位置进行存储。当接收到针对区块链中产生的目标日志数据的查询请求时,根据日志查询请求中日志管理合约的第一地址,获取日志管理合约,该日志管理合约中包括预编译合约的第二地址,可以通过查询日志管理合约根据第二地址调用预编译合约从所述预设存储位置获取目标日志数据。在上述日志查询过程中,通过日志管理合约调用预编译合约的方式实现目标日志数据查询,可提高日志查询的便利性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种账户和智能合约之间的关系示意图;
图1b是本发明实施例提供的一种与智能合约无关的交易被执行的示意图;
图1c是本发明实施例提供的一种与智能合约相关的交易被执行的示意图;
图2a是本发明实施例提供的一种日志管理系统的交互图;
图2b是本发明实施例提供的一种日志管理系统的架构图;
图3是本发明实施例提供的一种日志查询方法的流程示意图;
图4是本发明实施例提供的另一种日志查询方法的流程示意图;
图5是本发明实施例提供的一种日志查询装置的结构示意图;
图6是本发明实施例提供的一种节点设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
区块链是一种分布式数据存储、点对点传输、共识机制和加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库。区块链中涉及到主要概念包括智能合约、虚拟机、账户、交易、事件以及日志,下面具体介绍:
智能合约:智能合约是区块链的核心,相当于区块链中的自动代理人,每个智能合约对应一个合约地址。当接收到包括合约地址的交易时,合约地址对应的智能合约被激活,区块链运行智能合约对应的代码。
虚拟机(Environment Virtual Machine,EVM):是区块链的运行环境,区块链中的智能合约在虚拟机中运行。每个参与到区块链的节点都会运行EVM作为区块验证协议的一部分,虚拟机EVM是一个完全隔绝外界通讯的沙盒。
账户:区块链中包括外部账户和合约账户,外部账户是由私钥控制的且没有任何代码与之关联的账户。而合约账户是给智能合约分配的账户,被合约代码控制且有代码与之关联。外部账号的地址是由公钥决定的,而合约账户的地址是在智能合约被创建时决定的。每一个账户都有对应的余额,该余额可以被其他用户发送过来带有以太币的交易所更改。外部账户和合约账户之间、合约账户和合约账户之间可以进行信息交互。参考图1a,为本发明实施例提供的一种外部账户、合约账户以及智能合约之间的交互示意图,开发者通过合约账户来定义智能合约的业务逻辑,也即开发者在合约账户中部署智能合约,外部账户可以通过向合约账户发送交易,触发合约账户对应的智能合约执行以完成账户之间的交易。
交易:交易是一个账户和另外一个账户之间的信息交互,通俗来讲,交易就是一个账户向另外一个账户发送一笔被签名的消息数据包的过程,区块链记录并存储相应的数据。一个交易中可包括交易的发送者标识(也即拥有外部账户的用户)、交易的接收者标识、交易资源数量amount以及其他数据等。任意一个外部账户都可以通过使用其对应的私钥创建和签署交易,该交易可以是转账交易,也可以是和智能合约有关的交易,比如用于创建智能合约或者触发智能合约的交易。
事件event:是区块链提供的一种链内链外沟通的一种机制,通过触发事件,智能合约可以通知链外组件某个交易完成了什么操作。日志:可以理解为交易被执行过程中产生的交易收据中的一部分,日志代表对事件的存储。
在一个实施例中,区块链中的每笔交易会被转换成一个消息对象传入EVM中执行,具体实现中,在交易被转换为消息对象时,交易中包括的发送者标识对应到消息对象中发送者账户的地址、交易的接收者标识对应到消息对象中的接收者账户的地址,其他内容可不变;如果该交易是智能合约的创建或者调用,则交易被转换成消息对象后进一步被转换成合约对象,以在EVM中执行,具体实现中,消息对象被转换为合约对象时,消息对象中发送者账户的地址对应于合约对象中调用智能合约的调用者账户地址、消息对象中接收者账户的地址对应于合约对象中的合约账户地址、交易资源数量amount对应转账值value。参考图1b所示,为本发明实施例提供的一种与智能合约无关的交易被执行的示意图。图1b中,假设外部账户向区块链中发布一个转账交易,该转账交易中可包括发布交易的发送者标识、接收该转账交易的接收者标识、交易资源数据(也即需要转账的数量)以及其他数据等等。区块链的节点设备将转账交易转换为消息对象(具体转换过程如上述),该消息对象被传入EVM中执行,具体执行中根据交易资源数据修改EVM数据库中发送者账户对应的账户余额即可。
参考图1c,为本发明实施例提供的一种与智能合约有关的交易被执行的示意图。在图1c中,外部账户向区块链中发布一个关于智能合约的交易后,该交易被转换为消息对象,进一步的,将消息对象转换为合约对象(具体转换过程如上述),根据合约地址从数据库中获取合约地址对应的代码,然后送入EVM中执行。具体地,虚拟机EVM是通过虚拟机中的EVM解释器执行智能合约对应的代码。EVM解释器是一个基于栈式的机器,拥有自己的计算机、堆栈、内存和资源gas池。
在一个实施例中,上述的智能合约均指普通的智能合约,普通的智能合约在EVM中执行,具体执行过程可参见图1b所示。区块链中还包括预编译合约,预编译合约是运行在EVM外部的,预编译合约是EVM中为了提供一些较为复杂的库函数(多用于加密、哈希等复杂运算)而采用的一种折中方案,适用于合约逻辑简单但调用频繁,或者合约逻辑固定而计算量大的场景。预编译合约通常是在开发者的客户端,用客户端代码实现。
在区块链中,现有的日志数据需要经过默克尔树(Merkle Patricia Trees,MPT)的加密处理,最后以键值对的形式存储在数据库中。当用户想要查询日志数据时,需要向节点发送请求,区块链根据交易哈希查找到相应日志数据并返回日志数据。由于数据库中存储的日志是经过加密处理的,所以区块链在获取到日志数据后需要对获取到的日志数据进行解密处理,得到用户可看懂的明文数据,然后再返回给用户,这种查询日志的方式过程繁琐。
为了解决现有日志查询中存在的问题,本发明实施例基于预编译合约提出了一种日志管理系统,以更快速更高效的实现日志查询。下面通过图2a和图2b描述本发明实施例提供日志管理系统:图2a为本发明实施例提供的一种日志管理系统的交互图,图2a中包括区块链101、区块链的开发者终端102以及用户终端103,开发者终端102是区块链的开发者所使用的终端,用户终端103可以是区块链的外部账户对应的用户所使用的终端。区块链101是联盟链,区块链中包括多个节点设备,开发者和用户可以是相同的,此时开发者终端102和用户终端103是同一终端。图2b为本发明实施例提供的一种日志管理系统的架构图,在图2b中201表示预编译合约以及预编译合约中包括的内容,202表示日志管理合约以及日志管理合约中包括的内容,203表示业务合约以及业务合约包括的内容。204表示用于存储日志数据的文件系统或者数据库,205表示区块链授权的日志分析系统,日志分析系统205可对文件系统或者数据库中存储的日志进行统计和分析。
开发者通过开发者终端102编写预编译合约,该预编译合约相当于区块链的系统合约,在编写预编译合约时为预编译合约指定一个地址,该地址作为其他合约调用预编译合约的依据,换句话说,其他业合约可以使用该地址调用预编译合约。通过编写一个预编译合约实现一个日志数据记录器,可以将区块链中产生的日志数据以结构化数据的形式存在预设文件或者数据库中。为了防止其他用户直接通过预编译合约的地址调用预编译合约,开发者编写的预编译合约以及预编译合约的地址均不对外公布。
开发者在编写预编译合约时,可以在预编译合约中写入日志记录方法、日志查询方法以及日志权限管理方法如图2b中201所示以便于后续可以调用预编译合约采用相应的方法存储日志、查询日志以及对日志权限进行管理。
为了让其他用户可以调用预编译合约来存储或者查询日志,开发者可以为预编译合约编写一个对应的日志管理合约,然后将该日志管理合约的合约地址展示给其他用户,以便于其他用户可以通过向日志管理合约的地址发送交易或者业务合约来调用预编译合约存储或者获取相应的日志数据。该日志管理合约中可存储预编译合约的地址,当日志管理合约运行时,自动根据预编译合约的地址调用预编译合约来记录或者查询日志。同样的,为了安全起见,该日志管理合约的源代码也不对外公开,以防止不法用户通过源代码获取到预编译合约的地址,绕开此日志管理合约直接调用预编译合约。
在一个实施例中,日志管理合约作为用户和预编译合约之间的纽带,其中可存储多种类型日志数据的日志记录方法和日志查询方法以及各种方法对应的参数列表。可选的,日志管理合约可以为用户提供一个对外接口,通过对外接口向用户展示日志管理合约对应的合约地址以及日志管理合约中包括的上述方法和对应的参数列表,以使得用户可以通过编写业务合约的方式或者发布业务交易的方式调用日志管理合约中的方法和相应参数,记录想要记录的日志数据或者查询想要查询的日志数据。
在一个实施例中,用户可以通过向区块链中发布交易或者发布业务合约的方式记录想要记录的日志数据,或者查询想要的日志数据。如果用户通过编写业务合约的方式记录想要记录的日志,则可以在编写业务合约时指定需要调用预编译合约存储执行业务交易过程中的哪些具体日志数据如图2b所示,假设用户所要执行业务为存款或取款的业务,在编写业务管理合约时可以写入执行存储业务时,通过预编译合约记录哪些内容,比如在执行存款业务时,想要通过预编译合约记录存款业务交易中转入n(n为正整数)个币以及该存款业务交易所在区块的块高;再如,在执行取款业务时,通过预编译合约记录取款业务交易中提取n个币以及取款业务交易所在区块的块高。
基于上述的日志管理系统,本发明实施例提供了一种日志查询方案,通过日志管理合约调用预编译合约的方式来查询用户所需的日志数据,实现更为便利的日志查询。具体地,所述日志查询方案可包括:接收日志查询请求,并根据日志查询请求中包括的日志管理合约的第一地址获取日志管理合约,通过运行日志管理合约根据预编译合约的第二地址调用预编译合约获取日志查询请求所请求的目标日志数据。
基于上述描述,本发明实施例提供了一种日志查询方法,参考图3为本发明实施例提供了一种日志查询方法的流程示意图。图3所示的日志查询方法可以法应用在区块链中,由区块链中的节点设备执行。所述日志查询方法可包括以下步骤:
步骤S301、接收日志查询请求,日志查询请求包括区块链中日志管理合约的第一地址和所请求查询的目标日志数据的标识。
其中,所述日志查询请求可以是目标外部账户发布到区块链中的,所述目标外部账户可以指区块链的任意一个外部账户。由前述可知,预编译合约的第二地址不对外公开,为了让外部账户成功调用预编译合约,开发者还为预编译合约开发了一个对应的日志管理合约,该日志管理合约中包括预编译合约的第二地址,将日志管理合约的第一地址展示给外部账户,外部账户可以向第一地址发送请求以启动日志管理合约。当日志管理合约运行时,自动根据第二地址调用预编译合约。
由此可见,如果目标账户想要通过预编译合约来查询目标日志数据,需启动日志管理合约,因此目标账户在发送日志查询请求时,需要将日志管理合约的第一地址携带在日志查询请求中。
在一个实施例中,开发者在编写日志管理合约时,可以提供一个对外接口(Ilogger),该对外接口可提供一系列的日志记录方法和/或日志查询方法,以及各种方法对应的参数,通过对外接口日志管理合约就可以知道日志管理合约里面包括的日志记录方法或者日志查询方法,以及相应的方法下都需要哪些参数,从而就可以给目标账户看,以使得目标账户了解日志管理系统提供的方法。目标账户在发送日志查询请求时,可以将目标日志对应的日志查询方法以及该日志查询方法所需的参数携带在日志查询请求中,以使得日志管理合约调用预编译合约采用相应日志查询方法获得目标日志数据。假设第一地址为0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c,则目标账户在发送日志查询请求时,可以将变量ILogger log携带在日志查询请求中,就可以实现通过日志管理合约调用预编译合约获取目标日志数据。可选的,ILogger log变量可以通过如下式子表示:
ILogger log=logger(address(0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c))
在一个实施例中,为了防止恶意账户不停地在区块链中刷日志,浪费存储空间,所述日志管理合约还可以进行提供账户黑名单和白名单的设置接口。具体实现中,管理者可以通过日志管理合约提供的设置接口设置将哪些账户确定为黑名单账户,哪些账户设置为白名单账户;当检测到黑名单账户向第一地址发送了日志查询请求或者其他业务交易时,日志管理合约可不运行。
在一个实施例中,日志记录方法和日志查询方法是相对应的,通俗来讲,通过什么方法存储的日志数据,需要使用匹配的方法查询该日志数据。所述日志记录方法和所述日志查询方法相对应可以指所述日志记录方法和所述日志查询方法相同;或者,所述日志记录方法和所述日志查询方法相对应也可以指两者之间存在映射关系。为了方便描述,本发明实施例下面的描述中以日志记录方法和所述日志查询方法相同为例。
在一个实施例中,区块链中的日志数据大体上可以分为三种类型:重要日志数据、普通错误日志数据以及重大错误日志数据。不同类型的业务交易产生的日志数据中对上述三种类型日志数据定义不同。比如,对于转账业务交易来说,重要日志数据可以指转账流水、普通错误日志数据可以指转账时转账方账户余额不足等;对于授权业务交易中,重要日志数据可以指授权的日志数据,或者撤权的日志数据等等,本发明实施例中不一一列举。
在一个实施例中,每种类型的日志数据对应的日志查询方法不同。举例来说,对于重要日志数据对应的日志查询方法可以是:Important(uint errorCode,string msg),其中errorCode表示日志数据的标识,也可以称为日志数据的代码,用于唯一表示这一类日志数据的,string表示以明文的形式将日志数据进行存储;对于普通错误日志数据对应的日志查询方法可以是Error(uint errorCode,string msg);重大错误日志数据对应的日志查询方法可以是Fotal(uint errorCode,string msg)。可选的,上述列列举的几种日志查询方法,均是在日志数据是以明文形式存储的场景下,如果日志数据是以非明文形式存储的,则重要日志对应的日志查询方法可以是Important(uint errorCode,bytes msg),bytes表示以非明文的形式存储了日志数据;普通错误日志数据对应的日志查询方法可以为:Error(uint errorCode,bytes msg);重大错误日志数据对应的日志查询方法可以为:Fotal(uint errorCode,bytes msg)。
基于上述描述,目标账户发送的日志查询请求中还可以包括日志数据类型和所述日志数据类型对应的第一日志查询方法,所述日志数据类型用于表示目标账户想要查询哪种类型的日志数据,所述日志数据类型包括上述三种类型中的任意一种,例如日志数据类型可以是重要日志数据、普通错误日志数据等等。第一日志查询方法是指与该日志数据类型对应的,如果日志数据类型为重要日志数据,则第一日志查询方法是与重要日志数据对应的日志查询方法,比如可以是上述的Important(uint errorCode,string msg),或者Important(uint errorCode,bytes msg)。
在一个实施例中,目标账户可以根据自身的需求选择将哪些日志数据进行明文存储,将哪些日志数据进行非明文存储(也称为二进制存储)。在进行非明文存储时,可以是采用目标账户对应的公钥对日志数据进行加密处理,得到非明文的二进制数据。该二进制数可以通过目标账户对应的私钥进行解密处理,得到明文的日志数据。
在一个实施例中,所述日志查询请求可以是在运行目标账户发布的日志查询业务合约时产生的。可选的,目标账户可以预先编写一个日志查询业务合约,并将该日志查询业务合约发布到区块链中,该日志查询业务合约用于指示当检测到目标账户发送日志查询交易时触发执行日志查询业务合约以生成日志查询请求。可选的,用户发布的日志查询交易中携带日志管理合约的第一地址和目标日志数据的标识。日志查询业务合约在运行时根据日志管理合约的第一地址和日志数据的标识生成日志查询请求。
步骤S302、根据第一地址获取日志管理合约,该日志管理合约包括预编译合约的第二地址。
由前述可知,区块链中的智能合约是存储在合约账户中的,因此,步骤S302中所述日志管理合约的第一地址即指存储所述日志管理合约的合约账户的地址。在一个实施例中,在步骤S301中目标账户发送携带第一地址的日志查询请求实际上可以理解为目标账户向第一地址对应的合约账户发送了日志查询请求,当接收到日志查询请求后,节点设备从数据库中获取第一地址对应的合约账户中的代码,即获取日志管理合约。
步骤S303、通过运行日志管理合约根据第二地址调用预编译合约从预设存储位置中获取目标日志数据标识对应的目标日志数据。
由前述可知,在区块链中智能合约是基于EVM解释器执行的,因此获取到第一地址的合约账户中的代码后,将代码转入到EVM解释器中运行。在区块链中合约和合约之间是可以调用的,随着日志管理合约的运行,使用第二地址调用预编译合约,此时预编译合约也启动运行。
在一个实施例中,本发明实施例所述的目标账户可以是个人账户、也可以是管理者账户,为了日志查询的安全性,可以设置每个账户的查询权限。比如,对于个人账户而言,只能查询该账户在以太坊中产生的日志数据,不能查询其他账户的日志数据;对于管理者账户而言,可以查询归属该管理者账户管理的账户的日志数据。因此,如果目标账户是个人账户,则在步骤S301中所述日志查询请求所请求查询的目标日志数据可以是目标账户在区块链中发布的目标业务交易产生的;如果目标账户是管理者账户,则在步骤S301中所述日志查询请求所请求查询的目标日志数据可以是由管理者账户所管理的账户中任意一个或多个账户发布在区块链中的业务交易产生的。为了方便描述,后续描述提及到目标账户,均以目标账户为个人账户为例。
由前述可知,目标账户所请求查询的目标日志数据是由目标账户之前发布到区块链中的目标业务交易产生的,并通过日志管理合约调用预编译合约存储在预设位置的。该预设位置可以是开发者编写预编译合约时设定的,可以由开发者修改,所述预设存储位置可以是文件系统或者数据库中。
在一个实施例中,所述通过运行日志管理合约根据第二地址调用预编译合约从预设存储位置中获取目标日志数据标识对应的目标日志数据,包括:根据目标账户的日志查询权限获取该目标账户可查询的所有日志数据;从可查询的所有日志数据查找到与所述目标日志数据的标识对应的目标日志数据。
本发明实施例中,接收到日志查询请求后,根据日志查询请求中包括的日志管理合约的第一地址获取日志管理合约,该日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自日志管理合约的所述区块链中业务交易产生日志数据传输至预设存储位置进行存储;然后通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置获取目标日志数据的标识对应的目标日志数据。通过日志管理合约调用预编译合约的方式实现目标日志数据查询,可提高日志查询的便利性,另外,预编译合约是运行在虚拟机EVM外部的,其运行依赖于EVM,因此,通过日志管理合约调用预编译合约获取目标日志的速度更快,实现了较快地查询日志。
基于上述日志查询方法的实施例,本发明实施例提供了另一种日志查询方法,参考图4为本发明实施例提供的另一种日志查询方法的流程示意图。图4所示的日志查询方法可以应用在区块链中,由区块链中的节点设备执行。所述日志查询方法可包括如下步骤:
步骤S401、接收日志存储请求,该日志查询请求包括目标业务交易、日志存储指示信息以及日志管理合约的第一地址。
其中,目标业务交易可以是目标账户发布到区块链中的任意一个业务交易,比如转账交易、创建合约交易或者授权交易等等。所述日志存储请求可包括目标业务交易、日志存储指示信息以及日志管理合约的第一地址,所述日志存储请求用于指示将执行所述目标业务交易过程中产生的业务日志数据中与所述存储指示信息对应的目标日志数据,通过日志管理合约调用预编译合约的方式存储到预设位置。
其中,所述存储指示信息可包括日志数据类别和所述日志数据类别对应的日志记录方法。在一个实施例中,目标业务交易可以包括至少一个子交易,每个子交易被执行时,都会产生与该子交易对应的日志数据,目标业务交易在执行过程中产生的业务日志数据是由执行各个子交易时产生的日志数据组成的。与所述存储指示信息对应的目标日志数据可以是目标业务交易产生的业务日志数据中日志数据类型与所述存储指示信息所指示的日志数据类型相同的业务日志数据。换句话说,将目标业务交易对应的业务日志数据中与存储指示信息所指示的日志数据类型相同的业务日志数据作为目标日志数据。
在一个实施例中,所述日志存储请求可以是目标账户发布到区块链中的,由前述可知,目标账户发送步骤S401中所述的日志存储请求是为了将目标业务交易产生的目标日志数据通过日志管理合约发送给预编译合约,进而调用预编译合约将接收到的日志数据存储在预设位置。基于此,如果目标账户想要将此次的目标业务交易采用上述方式进行存储,则需要在向区块链发起目标业务交易的时候,发布一个如步骤S401所示的日志存储请求;如果目标账户发起目标业务交易时,不同时发起日志存储请求,则目标业务交易产生的目标日志数据可能通过EVM加密存储到区块链的默认位置。基于上述,目标用户可以通过在发布目标业务交易同时是否发起日志存储请求的方式,来选择对目标业务交易产生的业务日志数据的存储方式,丰富了日志数据存储方式,提高了用户体验。
在其他实施例中,所述日志存储请求也可以是在运行目标账户编写的日志存储业务合约时生成的。应当理解的,如果目标账户想要将其对应的目标业务交易产生的业务交易数据都通过日志管理合约调用预编译合约的方式进行存储,为了方便用户操作,目标账户可以预先编译一个日志存储业务合约,该日志存储业务合约中包括日志管理合约的第一地址,所述日志存储业务合约中规定当检测到目标账户在区块链发起目标业务交易时,日志存储业务合约被激活,生成携带存储指示信息的日志存储请求,并根据第一地址调用日志管理合约,日志管理合约获取目标业务交易中与存储指示信息对应的目标日志数据,并根据第二地址调用预编译合约,将目标日志数据发送给预编译合约,运行预编译合约将接收到的目标日志数据存储到到预设存储位置。这样一来,目标账户在每次发送目标业务交易时,只需将存储指示信息与目标业务交易一同发布到区块链中即可,简化了目标账户在日志存储时的操作。
步骤S402、根据第一地址获取日志管理合约,该日志管理合约包括预编译合约的第二地址。
步骤S403、通过运行日志管理合约获取目标业务交易产生的目标日志数据,并根据第二地址调用预编译合约接收所述目标日志数据。
步骤S404、运行预编译合约将目标日志数据存储到预设存储位置。
在一个实施例中,在运行日志管理预编译合约将目标日志数据存储到预设存储位置时,还可以获取目标日志数据的关联信息;然后,通过所述日志管理合约根据所述第二地址调用所述预编译合约将所述目标日志数据和所述关联信息关联存储到所述预设存储位置,以便于后续可以根据目标日志数据的关联信息对目标日志数据进行统计分析,比如统计目标账户的所有日志数据、统计某个区块高度的区块包括的业务交易对应的日志数据等等。
在一个实施例中,如果日志存储请求是在运行日志存储业务合约时生成的,则所述目标日志数据的关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度、所述日志存储业务合约的第三地址以及所述目标账户的标识;
在其他实施例中,如果日志存储请求是所述目标账户发布到区块链中,则所述目标日志数据的关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度以及所述目标账户的标识。
在一个实施例中,为了防止过度消耗日志,在调用预编译合约存储区块链中的目标日志数据时,会根据目标日志数据的大小收取一定的存储资源。由前述可知,每个账户向区块链提交的每笔业务交易中都包括资源上限(该资源上限是账户愿意为该笔业务交易支付的最多资源),所以目标账户发送的目标业务交易中包括目标资源上限(该目标资源上限可以理解为目标账户为执行目标业务交易预存交易资源),由前述可知,目标业务交易包括至少一个子交易,每个子交易被执行时都会消耗目标业务交易对应的预存交易资源,并且每个子交易被执行时会产生相应的日志数据,在存储所述每个子交易对应的日志数据时也会消耗预存交易资源。假设至少一个子交易中包括目标子交易,目标日志数据是在运行目标子交易时产生的。
因此,在存储目标业务交易产生的目标日志数据时,根据存储目标日志数据所需的存储资源和目标业务交易的预存交易资源和预存交易资源中未使用资源确定是否能够成功存储目标日志数据。具体实现中,所述通过所述日志管理合约根据所述第二地址调用所述预编译合约获取目标日志数据,并将所述目标日志数据存储到所述预设存储位置,包括:获取所述目标业务交易产生的所述目标日志数据的大小,并根据所述目标日志数据的大小获取存储所述目标日志数据所需的存储资源和执行所述目标业务交易中产生所述目标日志数据的子交易时所需的执行资源;当检测到所述存储资源和所述执行资源之和不大于所述预存交易资源中的未使用交易资源时,执行所述通过所述日志管理合约根据所述第二地址调用所述预编译合约获取所述目标业务交易产生的业务日志数据包括的目标日志数据,并将所述目标日志数据存储到所述预设存储位置的步骤。
相反的,当检测到所述存储资源和所述执行资源之和大于所述预存交易资源中的未使用交易资源时,则可不执行所述通过所述日志管理合约根据所述第二地址调用所述预编译合约获取所述目标业务交易产生的业务日志数据包括的目标日志数据,并将所述目标日志数据存储到所述预设存储位置的步骤。同时,可以输出目标子交易执行失败的提示信息,以提示目标账户目标子交易失败。
举例来说,假设目标业务交易为转账交易,目标业务交易中包括预存交易资源为5,目标业务交易包括两个子交易,其中,第一个子交易是向账户A转账X,第二个子交易是向账户B转账Y,假设第二个子交易为目标子交易。假设执行第一个子交易时,计算向账户A转账所需要的执行资源为1,存储第一个子交易产生的第一日志数据所需的存储资源为2,判断执行第一个子交易时执行资源和存储资源之和小于目标业务机交易的预存交易资源,则执行第一子交易,并存储所述第一子交易产生的第一日志数据。此时预存交易资源中未使用交易资源为2,进一步,计算执行目标子交易时所需的执行资源为2,存储目标子交易产生的目标日志数据所需的存储资源为2,此时执行目标子交易时执行资源和存储资源之和大于未使用交易资源,则目标子交易执行失败,目标日志数据不会被存储。
步骤S405、接收日志查询请求,该日志查询请求中包括日志管理合约的第一地址和所请求查询的目标日志数据的标识。
步骤S406、根据第一地址获取日志管理合约,并通过运行日志管理合约根据第二地址调用预编译合约从预设存储位置中获取目标日志数据的标识对应的目标日志数据。
其中,步骤S405和步骤S406中所涉及的一些可行的实施方式可参考图2实施例中相关步骤的描述,在此不再赘述。
在一个实施例中,预编译合约除了可以获取并存储账户的业务交易产生的日志数据外,还可以接收并存储区块链中节点设备的异常信息以及异常次数。具体地,当检测到所述区块链中的节点设备出现异常时,获取所述节点设备的异常信息;运行所述日志管理合约根据所述第二地址调用所述预编译合约将所述节点设备的异常信息以及所述节点设备出现异常的次数存储到所述预设存储位置。其中,存储节点设备的异常信息以及异常次数的预设存储位置可以与存储账户的业务交易产生的日志数据的预设存储位置相同,也可以不同。
其中,上述节点设备是指区块链中的任意一个节点设备,节点设备的异常信息可以包括节点设备频繁上线下线、节点设备上报的数据与其他节点设备上报的数据不一致等。
在一个实施例中,可以编写一个节点设备管理合约来检测区块链中各个节点设备的异常信息。当监测到某个节点设备发生异常时,获取该节点设备的异常信息,通过调用预编译合约存储所述节点设备的异常信息以及该节点设备出现异常的次数。
在一个实施例中,当检测到区块链中发生告警事件时,发出告警通知;其中,所述告警事件包括以下一种或多种:所述目标账户在第一预设时间内发布的业务合约的数量超过第一阈值、所述日志存储业务合约在第二预设时间内产生的业务日志数据的数量大于第二阈值以及所述节点设备出现异常的次数超过第三阈值。目标账户发布的业务合约可以包括任意一种合约,比如日志存储业务合约、日志查询业务合约等。
在一个实施例中,区块链中可以通过预编译合约存储业务交易的日式数据以及节点设备的异常信息,这样一来,可以配合使用常用的日志分析工具对区块链的所有日志数据进行统计和分析以确定是否存储告警事件。如果预编译合约中规定的预设存储位置为文件,则可以配合使用日志分析工具Nagios,elastic stack等进行整个区块链的日志数据进行分析和监测;如果预编译合约中规定的预设存储位置为数据库,则可以服用数据库自带的一些功能进行区块链上的日志数据进行分析。
在一个实施例中,还可以通过预编译合约存储的日志数据对区块链的日志数据进行定时归档处理,比如设置将存储时间比较久的日志数据从一个存储位置转移到另一个存储位置;或者,将某一种类型的日志数据归档到同一个存储位置等等。
本发明实施例中,接收到目标账户发送的日志存储请求后,根据日志存储请求中的第一地址获取日志管理合约,通过运行日志管理合约根据日志管理合约中的第二地址调用预编译合约获取目标业务交易产生的目标日志数据,并将所述目标日志数据存储到预设存储位置,其中,目标日志数据是目标业务交易产生的业务日志数据中与目标存储指示信息对应的业务日志数据。进一步地,当接收到日志查询请求时,根据日志查询请求中的第一地址获取日志管理合约,通过运行日志管理合约根据第二地址调用预编译合约从预设存储位置中获取目标日志数据。在上述日志查询过程中,通过日志管理合约调用预编译合约记录或者查询日志,可以提高日志记录或查询的便利性。另外,预编译合约是运行在区块链的虚拟机EVM之外的,其运行速度较快,从而在调用预编译合约存储日志数据和查询日志数据时速度较快。另外,通过预编译合约存储日志数据时,目标账户可以根据自己的需求选择将日志数据以明文形式存储,还是以非明文形式存储,丰富了日志存储形式。
基于上述方法实施例的描述,本发明实施例提供了一种日志查询装置,参考图5,为本发明实施例提供的一种日志查询装置的结构示意图。图5所示的日志查询装置中可运行如下单元:
接收单元501,用于接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;
获取单元502,用于根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
处理单元503,还用于通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
在一个实施例中,所述接收单元501还用于接收日志存储请求,所述日志存储请求包括目标业务交易、日志存储指示信息以及所述日志管理合约的所述第一地址;所述获取单元502还用于根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址;所述处理单元503还用于通过运行所述日志管理合约获取所述目标业务交易产生的目标日志数据,并根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置,所述目标日志数据是所述目标业务交易产生的业务日志数据中与所述日志存储指示信息对应的业务日志数据。
在一个实施例中,所述日志存储请求是在运行日志存储业务合约时产生的,所述日志存储业务合约是目标账户发布到所述区块链中的,所述日志存储业务合约用于指示当检测到所述目标账户发起的所述目标业务交易时,获取与所述目标业务交易对应的日志存储指示信息,并发起携带所述日志存储指示信息的日志存储请求。所述处理单元503还用于通过所述日志管理合约根据所述第二地址调用所述预编译合约获取与所述目标日志数据关联的关联信息,所述关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度、所述日志存储业务合约的第三地址以及所述目标账户的标识;所述处理单元503还用于调用所述预编译合约将所述目标日志数据和所述关联信息关联存储到所述预设存储位置。
在一个实施例中,所述目标业务交易包括至少一个子交易,所述目标业务交易产生的业务日志数据由所述至少一个子交易产生的业务日志数据组成;所述目标业务交易包括预存交易资源,运行所述至少一个子交易时消耗所述预存交易资源,所述处理单元503在根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置时,执行如下操作:获取所述目标业务交易产生的所述目标日志数据的大小,并根据所述目标日志数据的大小获取存储所述目标日志数据所需的存储资源和执行所述目标业务交易中产生所述目标日志数据的子交易时所需的执行资源;当检测到所述存储资源和所述执行资源之和不大于所述预存交易资源中的未使用交易资源时,执行所述根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置的步骤。
在一个实施例中,所述获取单元502还用于当检测到所述区块链中的节点设备出现异常时,获取所述节点设备的异常信息;所述处理单元503还用于运行所述日志管理合约根据所述第二地址调用所述预编译合约将所述节点设备的异常信息以及所述节点设备出现异常的次数存储到所述预设存储位置。
在一个实施例中,所述处理单元503还用于当检测到发生告警事件时,发出告警通知;其中,所述告警事件包括以下一种或多种:所述目标账户在第一预设时间内发布的业务合约的数量超过第一阈值、所述日志存储业务合约在第二预设时间内产生的业务日志数据的数量大于第二阈值以及所述节点设备出现异常的次数超过第三阈值。
在一个实施例中,所述日志查询请求还包括日志数据类型和所述日志数据类型对应的第一日志查询方法,所述日志管理合约包括所述日志数据类型对应的第二日志查询方法,所述日志查询装置还包括判断单元504,用于判断所述第一日志查询方法和所述第二日志查询方法是否匹配;处理单元503用于若所述第一日志查询方法和所述第二日志查询方法匹配,则执行所述通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据的步骤。
根据本发明的一个实施例,图3和图4所示的日志查询方法所涉及各个步骤可以是由图5所示的日志查询处理装置中的各个单元来执行的。例如,图3所述的步骤S301可由图5中所述的日志查询装置中的接收单元501来执行,步骤S302可由图5中所述的日志查询装置中获取单元502来执行,步骤S203可由图5所示的日志查询装置中的处理单元503来执行;又如,图4中所示的步骤S401和步骤S405可由图5所示的日志查询装置中的接收单元501来执行,步骤S402和步骤S406可由图5所示的日志查询装置中的获取单元502来执行,步骤S403和步骤S406可由图5所示的日志查询装置中的处理单元503来执行。
根据本发明的另一个实施例,图5所示的日志查询装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于日志查询装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5中所示的日志查询装置,以及来实现本发明实施例日志查询方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
本发明实施例中,接收到日志查询请求后,根据日志查询请求中包括的日志管理合约的第一地址获取日志管理合约,该日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自日志管理合约的所述区块链中业务交易产生日志数据传输至预设存储位置进行存储;然后通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置获取目标日志数据的标识对应的目标日志数据。通过日志管理合约调用预编译合约的方式实现目标日志数据查询,可提高日志查询的便利性,另外,预编译合约是运行在虚拟机EVM外部的,其运行依赖于EVM,因此,通过日志管理合约调用预编译合约获取目标日志的速度更快,实现了较快地查询日志。
基于上述实施例以及装置实施例的描述,本发明实施例还提供了一种节点设备,该节点设备可以是区块链中节点设备的任意一个。参考图6为本发明实施例提供的一种节点设备的结构示意图。如图6所示,该节点设备至少包括处理器601、输入接口602、输出接口603以及计算机存储介质604。其中,节点设备内的处理器601、输入接口602、输出接口603以及计算机存储介质604可通过总线或其他方式连接。
计算机存储介质604可以存储在节点设备的存储器中,所述计算机存储介质604用于存储计算机程序,所述计算机程序包括程序指令,所述处理器601用于执行所述计算机存储介质604存储的程序指令。处理器801(或称CPU(Central Processing Unit,中央处理器))是节点设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,本发明实施例所述的处理器601可用于执行:接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
本发明实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是节点设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括节点设备中的内置存储介质,当然也可以包括节点设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了节点设备的操作系统。并且,在该存储空间中还存放了适于被处理器601加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器601加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关日志查询方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器601加载并执行如下步骤:在一个实施例中,可由处理器601加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关服务更新实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器601加载并执行如下步骤:接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的所述区块链中业务交易产生的日志数据传输至预设存储位置进行存储;通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
在一个实施例中,所述处理器601还执行:接收日志存储请求,所述日志存储请求包括目标业务交易、日志存储指示信息以及所述日志管理合约的所述第一地址;根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址;通过运行所述日志管理合约获取所述目标业务交易产生的目标日志数据,并根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置,所述目标日志数据是所述目标业务交易产生的业务日志数据中与所述日志存储指示信息对应的业务日志数据。
在一个实施例中,所述日志存储请求是在运行日志存储业务合约时产生的,所述日志存储业务合约是目标账户发布到所述区块链中的,所述日志存储业务合约用于指示当检测到所述目标账户发起的所述目标业务交易时,获取与所述目标业务交易对应的日志存储指示信息,并发起携带所述日志存储指示信息的日志存储请求,所述处理器601还执行:通过所述日志管理合约根据所述第二地址调用所述预编译合约获取与所述目标日志数据关联的关联信息,所述关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度、所述日志存储业务合约的第三地址以及所述目标账户的标识;调用所述预编译合约将所述目标日志数据和所述关联信息关联存储到所述预设存储位置。
在一个实施例中,所述目标业务交易包括至少一个子交易,所述目标业务交易产生的业务日志数据由所述至少一个子交易产生的业务日志数据组成;所述目标业务交易包括预存交易资源,运行所述至少一个子交易时消耗所述预存交易资源,所述处理器601在根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置时,执行如下操作:获取所述目标业务交易产生的所述目标日志数据的大小,并根据所述目标日志数据的大小获取存储所述目标日志数据所需的存储资源和执行所述目标业务交易中产生所述目标日志数据的子交易时所需的执行资源;当检测到所述存储资源和所述执行资源之和不大于所述预存交易资源中的未使用交易资源时,执行所述根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置的步骤。
在一个实施例中,处理器601还用于:当检测到所述区块链中的节点设备出现异常时,获取所述节点设备的异常信息;运行所述日志管理合约根据所述第二地址调用所述预编译合约将所述节点设备的异常信息以及所述节点设备出现异常的次数存储到所述预设存储位置。
在一个实施例中,处理器601还用于:当检测到发生告警事件时,发出告警通知;其中,所述告警事件包括以下一种或多种:所述目标账户在第一预设时间内发布的业务合约的数量超过第一阈值、所述日志存储业务合约在第二预设时间内产生的业务日志数据的数量大于第二阈值以及所述节点设备出现异常的次数超过第三阈值。
在一个实施例中,所述日志查询请求还包括日志数据类型和所述日志数据类型对应的第一日志查询方法,所述日志管理合约包括所述日志数据类型对应的第二日志查询方法,所述处理器601还用于:判断所述第一日志查询方法和所述第二日志查询方法是否匹配;若匹配,则执行所述通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据的步骤。
本发明实施例中,接收到日志查询请求后,根据日志查询请求中包括的日志管理合约的第一地址获取日志管理合约,该日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自日志管理合约的所述区块链中业务交易产生日志数据传输至预设存储位置进行存储;然后通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置获取目标日志数据的标识对应的目标日志数据。通过日志管理合约调用预编译合约的方式实现目标日志数据查询,可提高日志查询的便利性,另外,预编译合约是运行在虚拟机EVM外部的,其运行依赖于EVM,因此,通过日志管理合约调用预编译合约获取目标日志的速度更快,实现了较快地查询日志。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (9)
1.一种日志查询方法,其特征在于,包括:
接收日志存储请求,所述日志存储请求包括目标业务交易、日志存储指示信息以及日志管理合约的第一地址;
根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
通过运行所述日志管理合约获取所述目标业务交易产生的目标日志数据,并根据所述第二地址调用所述预编译合约获取所述目标日志数据和与所述目标日志数据关联的关联信息,所述关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度、所述日志存储业务合约的第三地址以及目标账户的标识;并调用所述预编译合约将所述目标日志数据和所述关联信息关联存储到预设存储位置;
接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;
通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
2.如权利要求1所述的方法,其特征在于,所述日志存储请求是在运行日志存储业务合约时产生的,所述日志存储业务合约是目标账户发布到所述区块链中的,所述日志存储业务合约用于指示当检测到所述目标账户发起的所述目标业务交易时,获取与所述目标业务交易对应的日志存储指示信息,并发起携带所述日志存储指示信息的日志存储请求。
3.如权利要求1所述的方法,其特征在于,所述目标业务交易包括至少一个子交易,所述目标业务交易产生的业务日志数据由所述至少一个子交易产生的业务日志数据组成;所述目标业务交易包括预存交易资源,运行所述至少一个子交易时消耗所述预存交易资源,所述根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置,包括:
获取所述目标业务交易产生的所述目标日志数据的大小,并根据所述目标日志数据的大小获取存储所述目标日志数据所需的存储资源和执行所述目标业务交易中产生所述目标日志数据的子交易时所需的执行资源;
当检测到所述存储资源和所述执行资源之和不大于所述预存交易资源中的未使用交易资源时,执行所述根据所述第二地址调用所述预编译合约接收所述目标日志数据,并将所述目标日志数据存储到所述预设存储位置的步骤。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述区块链中的节点设备出现异常时,获取所述节点设备的异常信息;
运行所述日志管理合约根据所述第二地址调用所述预编译合约将所述节点设备的异常信息以及所述节点设备出现异常的次数存储到所述预设存储位置。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当检测到发生告警事件时,发出告警通知;
其中,所述告警事件包括以下一种或多种:所述目标账户在第一预设时间内发布的业务合约的数量超过第一阈值、所述日志存储业务合约在第二预设时间内产生的业务日志数据的数量大于第二阈值以及所述节点设备出现异常的次数超过第三阈值。
6.如权利要求1所述的方法,其特征在于,所述日志查询请求还包括日志数据类型和所述日志数据类型对应的第一日志查询方法,所述日志管理合约包括所述日志数据类型对应的第二日志查询方法,所述通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据之前,所述方法还包括:
判断所述第一日志查询方法和所述第二日志查询方法是否匹配;
若匹配,则执行所述通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据的步骤。
7.一种日志查询装置,其特征在于,包括:
接收单元,用于接收日志存储请求,所述日志存储请求包括目标业务交易、日志存储指示信息以及日志管理合约的第一地址;
获取单元,用于根据所述第一地址获取所述日志管理合约,所述日志管理合约包括预编译合约的第二地址,所述预编译合约用于将来自所述日志管理合约的区块链中业务交易产生的日志数据传输至预设存储位置进行存储;
处理单元,用于通过运行所述日志管理合约获取所述目标业务交易产生的目标日志数据,并根据所述第二地址调用所述预编译合约获取所述目标日志数据和与所述目标日志数据关联的关联信息,所述关联信息包括以下一种或多种:所述目标业务交易的标识、所述目标业务交易所在区块的区块高度、所述日志存储业务合约的第三地址以及目标账户的标识;并调用所述预编译合约将所述目标日志数据和所述关联信息关联存储到预设存储位置;
所述接收单元,还用于接收日志查询请求,所述日志查询请求包括区块链中日志管理合约的第一地址和所请求调取的目标日志数据的标识;
所述处理单元,还用于通过运行所述日志管理合约根据所述第二地址调用所述预编译合约从所述预设存储位置中获取所述目标日志数据的标识对应的所述目标日志数据。
8.一种节点设备,其特征在于,包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-6任一项所述的日志查询方法。
9.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如权利要求1-6任一项所述的日志查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911151996.5A CN111061685B (zh) | 2019-11-21 | 2019-11-21 | 日志查询方法、装置、节点设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911151996.5A CN111061685B (zh) | 2019-11-21 | 2019-11-21 | 日志查询方法、装置、节点设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061685A CN111061685A (zh) | 2020-04-24 |
CN111061685B true CN111061685B (zh) | 2022-07-22 |
Family
ID=70298302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911151996.5A Active CN111061685B (zh) | 2019-11-21 | 2019-11-21 | 日志查询方法、装置、节点设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061685B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488388B (zh) * | 2020-05-27 | 2023-10-13 | 支付宝(杭州)信息技术有限公司 | 一种数据存储合约的部署方法、装置及设备 |
CN113347033B (zh) * | 2021-05-31 | 2022-05-27 | 中国工商银行股份有限公司 | 基于区块链的根因定位方法、系统及验证节点 |
CN113268464B (zh) * | 2021-06-07 | 2023-06-23 | 平安科技(深圳)有限公司 | 日志展示方法、装置、电子设备及存储介质 |
CN113805889B (zh) * | 2021-08-27 | 2023-07-28 | 成都质数斯达克科技有限公司 | 一种智能合约调用执行方法、装置、设备及可读存储介质 |
CN114116774B (zh) * | 2022-01-28 | 2022-06-28 | 北京安帝科技有限公司 | 日志数据的查询方法及装置 |
CN114897532A (zh) * | 2022-07-11 | 2022-08-12 | 杭州趣链科技有限公司 | 操作日志处理方法、系统、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509523A (zh) * | 2018-03-13 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 区块链数据的结构化处理方法、设备及可读存储介质 |
CN108833514A (zh) * | 2018-06-01 | 2018-11-16 | 众安信息技术服务有限公司 | 基于区块链的审计日志处理方法、装置和日志审计系统 |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
CN110223172A (zh) * | 2019-05-20 | 2019-09-10 | 阿里巴巴集团控股有限公司 | 有条件的结合代码标注与类型维度的收据存储方法和节点 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3411824B1 (en) * | 2016-02-04 | 2019-10-30 | Nasdaq Technology AB | Systems and methods for storing and sharing transactional data using distributed computer systems |
-
2019
- 2019-11-21 CN CN201911151996.5A patent/CN111061685B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509523A (zh) * | 2018-03-13 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 区块链数据的结构化处理方法、设备及可读存储介质 |
CN108833514A (zh) * | 2018-06-01 | 2018-11-16 | 众安信息技术服务有限公司 | 基于区块链的审计日志处理方法、装置和日志审计系统 |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
CN110223172A (zh) * | 2019-05-20 | 2019-09-10 | 阿里巴巴集团控股有限公司 | 有条件的结合代码标注与类型维度的收据存储方法和节点 |
Also Published As
Publication number | Publication date |
---|---|
CN111061685A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061685B (zh) | 日志查询方法、装置、节点设备及存储介质 | |
US11615007B2 (en) | Method and control system for controlling and/or monitoring devices | |
US11665015B2 (en) | Method and control system for controlling and/or monitoring devices | |
US7752463B2 (en) | Automatically filling a drive table | |
CN109067528B (zh) | 密码运算、创建工作密钥的方法、密码服务平台及设备 | |
CN110661658B (zh) | 一种区块链网络的节点管理方法、装置及计算机存储介质 | |
US11025415B2 (en) | Cryptographic operation method, method for creating working key, cryptographic service platform, and cryptographic service device | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
CN112165454B (zh) | 访问控制方法、装置、网关和控制台 | |
US11412047B2 (en) | Method and control system for controlling and/or monitoring devices | |
EP2862119B1 (en) | Network based management of protected data sets | |
CN112579997B (zh) | 一种用户权限配置方法、装置、计算机设备及存储介质 | |
CN111597537B (zh) | 基于区块链网络的证书签发方法、相关设备及介质 | |
CN105933270A (zh) | 一种云加密机的处理方法及装置 | |
JP2017527140A (ja) | コンピュータシステムの間のタスク命令を転送するルーティング方法、コンピュータネットワーク基盤、及びコンピュータプログラム | |
US11231958B2 (en) | Method and control system for controlling and/or monitoring devices | |
CN112540809A (zh) | 一种基于状态机的事件状态控制方法和装置 | |
CN112286553B (zh) | 用户锁的升级方法、装置、系统、电子设备和存储介质 | |
CN110602051A (zh) | 基于共识协议的信息处理方法及相关装置 | |
CN113922972B (zh) | 基于md5标识码的数据转发方法和装置 | |
CN114707128A (zh) | 一种数据库访问方法、相关设备、存储介质及程序产品 | |
CN114090981A (zh) | 一种针对远程主机的访问方法及装置 | |
CN110022310B (zh) | 基于云计算开放网络操作系统的授权方法及装置 | |
US20240235846A1 (en) | Managing cryptographic compliance on a computing device using a distributed ledger | |
CN110597557A (zh) | 一种系统信息获取方法、终端及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021487 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |