CN112199221A - 事件推送方法、系统、区块链平台、合约调用端及介质 - Google Patents
事件推送方法、系统、区块链平台、合约调用端及介质 Download PDFInfo
- Publication number
- CN112199221A CN112199221A CN202011397766.XA CN202011397766A CN112199221A CN 112199221 A CN112199221 A CN 112199221A CN 202011397766 A CN202011397766 A CN 202011397766A CN 112199221 A CN112199221 A CN 112199221A
- Authority
- CN
- China
- Prior art keywords
- event
- contract
- intelligent contract
- calling
- function
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种事件推送方法、系统、区块链平台、合约调用端及介质,用于快速获取智能合约事件内容。方法部分包括:接收合约调用端发送的智能合约调用交易;根据智能合约调用交易,调用对应的智能合约并解析成内存中的可执行结构,执行智能合约的可执行结构,以调用事件函数调用指令所对应的事件函数;依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;将事件内容推送至合约调用端。本方案利用事件函数导入区块链的特点,在智能合约执行时中可以多处产生事件,不需要将事件存入区块链数据库之后由合约调用端轮训获取,减少了很多不必要的步骤且能及时推送到合约调用端,有效地提高了智能合约事件的推送效率。
Description
技术领域
本发明涉及信息传输、区块链技术领域,尤其涉及一种事件推送方法、系统、区块链平台、合约调用端及介质。
背景技术
当智能合约调用者在智能合约中调用了触发智能合约事件(event)的函数,区块链平台中在执行智能合约的函数时候会通过指令监控到该事件,进而对事件解析,解析之后将事件内容及时地返回给合约调用端,合约调用端通过分析这些事件,而可以了解到智能合约内部的执行情况。
传统的方案中,事件需要在合约调端交易执行结束后,由合约调用端轮训区块链数据库才能拿到智能合约的事件,发明人意识到,这种场景需要一个区块中的多笔交易都要写入区块链数据库之后,才能拿到交易的返回结果和这笔交易在合约中产生的事件,这个获取智能合约事件的过程是非常缓慢的,而且要求智能合约交易调用必须执行成功,不能快速获取到智能合约事件。
发明内容
本发明实施例提供一种事件推送方法、系统、区块链平台、合约调用端及介质,以解决不能快速获取到智能合约事件的问题。
第一方面,提供了一种事件推送方法,应用于区块链平台,该方法包括:
接收合约调用端发送的智能合约调用交易;根据智能合约调用交易,调用对应的智能合约,并获取智能合约对应的在内存中的可执行结构;执行可执行结构,以调用上述事件函数调用指令所对应的事件函数,其中,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;并依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;最后将事件内容发送给合约调用端。
进一步地,上个获取智能合约对应的在内存中的可执行结构,指的是:先解析智能合约调用交易,以获取调用交易参数,调用交易参数包括智能合约调用交易调用的合约地址;随后在内存查找合约地址对应的智能合约的可执行结构;当查找不到智能合约的可执行结构时,从区块链数据库中读取合约地址对应的智能合约的字节码文件,将字节码文件解析成合约执行引擎能执行的可执行结构;当查找到智能合约的可执行结构时,从内存中调用合约地址对应的可执行结构。
进一步地,上述将字节码文件解析成合约执行引擎能执行的可执行结构之后,还将可执行结构缓存在内存中,也就是存储在区块链平台的内存缓存中。
进一步地,执行可执行结构,以调用事件函数调用指令所对应的事件函数,指的是:构造智能合约的虚拟机作为合约执行引擎;通过合约执行引擎,遍历智能合约对应的可执行结构,以执行智能合约相应的合约函数;当遍历到事件函数调用指令时,依据事件函数调用指令,从预先构建的智能合约对应的函数索引表中查找相应的事件函数索引;随后依据该事件函数索引调用相应的事件函数。
进一步地,将事件内容反馈至合约调用端,指的是:将事件内容与智能合约调用交易调用的合约地址进行绑定,并将绑定后的事件内容反馈至合约调用端。
进一步地,智能合约所对应的事件函数,通过如下方式定义在区块链平台中:获取利用区块链平台对应的语言所编写的事件函数;将事件函数转换为智能函数能识别的内存形式结构,并将事件函数的参数类型和返回值类型转变为智能合约能识别的类型;依据转化后的事件函数存储到区块链平台的账本数据中。
进一步地,智能合约所对应的事件函数,还可以通过如下方式定义在区块链平台中:获取字节码形式的事件函数对应的事件函数合约;将事件函数合约存储到区块链平台的账本数据中。
第二方面,提供了一种事件推送方法,应用于合约调用端,方法包括:
向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约在内存的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。
第三方面,提供了一种区块链平台,包括: 接收模块,用于接收合约调用端发送的智能合约调用交易;调用模块,用于根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;第一获取模块,用于将智能合约解析成为在内存中的可执行结构;执行模块,用于执行可执行结构,以调用事件函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;第二获取模块,用于依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;发送模块,用于将事件内容发送给合约调用端。
第四方面,提供了一种合约调用端,包括: 发送模块,用于向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;
接收模块,用于接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。
第五方面,提供了一种事件推送系统,包括区块链平台和合约调用端,其中:区块链平台,用于根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;并用于执行智能合约在内存的可执行结构,以调用事件函数调用指令所对应的事件函数,依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容并向合约调用端推送,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;合约调用端,用于接收区块链平台推送的事件内容。
第六方面,提供了一种区块链平台,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述事件推送方法中区块链平台的步骤。
第七方面,提供了一种合约调用端,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述事件推送方法中合约调用端的步骤。
第八方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述事件推送方法中区块链平台或合约调用端的步骤的步骤。
上述事件推送方法、系统所实现的一个方案中,是预先在区块链平台定义智能合约对应的事件函数,当合约调用端发起智能合约调用交易时,使区块链平台在调用和执行对应的智能合约时,将智能合约解析成在内存中的可执行结构,执行智能合约的在内存的可执行结构,依据事件函数对应的事件函数调用指令,调用所对应的事件函数,从而依据事件函数的处理逻辑执行事件处理逻辑以获取事件内容,并将智能合约对应的事件内容反馈回合约调用端,以使合约调用端侧能清楚的依据事件内容了解合约调用情况。与传统的方案相比,本方案利用事件函数导入区块链的特点,在智能合约执行时中可以多处产生事件,不需要将事件存入区块链数据库之后由合约调用端轮训获取,减少了很多不必要的步骤且能及时推送到合约调用端,以便合约调用端依据合约执行情况做下一步反馈,有效地提高了智能合约事件的推送效率,能快速获取到智能合约事件;另外,也可以避免将事件内容存储至区块链数据库,有效地减轻了区块链数据库的存储压力负担。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中事件推送系统的一系统结构示意图;
图2是本发明一实施例中事件推送方法的一流程示意图;
图3是发明一实施例中区块链平台的一结构示意图;
图4是发明一实施例中区合约调用端的一结构示意图;
图5是本发明一实施例中区块链平台或合约调用端的一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种智能合约的事件推送方法,应用于如图1的智能合约的事件推送系统中,包括区块链平台、合约调用端和区块链数据库,其中,区块链平台上部署有合约执行引擎(如虚拟机),下面基于图1所示的事件推送系统,以完整的实施例,从多侧的角度对本发明实施例所提供的事件推送方法,进行详细的描述:
如图2所示,本发明实施例所提供的事件推送方法,包括如下步骤:
S10:合约调用端将智能合约调用交易发送至区块链平台。
需要说明的是,合约调用端在向区块链平台发送智能合约调用交易时,需先在区块链平台中部署该智能合约,其中,基于本发明实施例所提供的事件推送方法,由于智能合约包含事件函数调用指令,首先,智能合约在生成和部署时也与传统方案有所区别,先对智能合约的部署过程做描述。
其中,在本发明实施例中,提供了一种部署场景,包括如下步骤:
(1)智能合约开发者使用能编译成字节码的语言,编写对应于该区块链平台的智能合约源文件,可以理解,智能合约中包含有合约函数,本发明实施例中,在合约函数需要产生事件的地方需调用事件函数,因此需内嵌函数调用指令,该函数调用指令具体的事件函数的实现预先定义在区块链平台中,成为可通过函数调用指令进行调用的函数,下文中会说明如何将具体的事件函数的实现定义在区块链平台中。在编写智能合约源文件时,智能合约开发者需要遵从区块链平台提供的事件函数签名进行事件声明,以便于后续得到相应的函数调用指令。
需要说明的是,事件函数签名,是指能够识别一个智能合约函数的唯一指纹,一个函数签名只能对应唯一的一段函数代码,该函数代码就是指对应的事件函数。另外需要说明的是,在一实施例中,智能合约开发者可使用能编译成WASM(WebAssembly)字节码文件的语言编写智能合约。可以理解,许多智能合约开发编程语言都可以编译为WASM字节码格式的智能合约,所以本方案不做具体的智能合约编写语言限制,凡是其他语言编写成为WASM字节码的都可以,本发明不造成限定。
另外值得强调的是,智能合约开发者需按照所需,在智能合约源文件中编写事件声明,以减少区块链平台不能够正确调用事件函数的可能性,提高系统整体稳定性和保证推送成功率。
举个简单例子,智能合约开发者可以利用rust编程语言开发了如下的智能合约源文件,该智能合约源文件包含了区块链平台所提供的事件产生函数,该智能合约源文件包含有事件产生函数的部分代码示例如下所示:
#![no_std]
extern crate hyperchain_lib;
#[no_mangle]
pub fn call() {
hyperchain_lib::logger::debug("emit event");
}。
(2)使用智能合约源代码对应开发语言的编译器,对智能合约源文件进行编译,编译的目标为WASM字节码文件,从而得到WASM字节码形式的智能合约(本文称为WASM智能合约)。需要说明的是,为便于描述,下文均以WASM智能合约为例进行说明,但不对本发明造成限定。
在一实施例中,编译完成得到的字节码文件需要进行压缩处理,其中,压缩处理过程,是对于WASM合约中中无法调用的函数,以及一些运行过程中使用不到的函数进行剔除处理,以便于减少部署在区块链数据库上的WASM智能合约的大小。
因此,将上述代码示例编译为WASM字节码的WASM智能合约之后,可以发现WASM智能合约对于区块链平台事件函数的调用都会被转为一条事件函数调用指令(call指令),下面展示了WASM 二进制人类可读形式的代码:
(module
(type (;0;) (func (param i32 i32)))
(type (;1;) (func))
(import "env" "debug" (func $debug (type 0)))
(func $__WASM_call_ctors (type 1))
(func $call (type 1)
i32.const 1048576
i32.const 28
call $debug)
(table (;0;) 1 1 funcref)
(memory (;0;) 17)
(global (;0;) (mut i32) (i32.const 1048576))
(global (;1;) i32 (i32.const 1048604))
(global (;2;) i32 (i32.const 1048604))
(export "memory" (memory 0))
(export "__heap_base" (global 1))
(export "__data_end" (global 2))
(export "call" (func $call))
(data (;0;) (i32.const 1048576) " emit event "))。
可见,观察第9行代码,会发现编译后的call指令中调用了区块链平台所声明的事件函数用来产生事件内容。
(3)经过上述(1)(2),便得到了可以部署在区块链数据库的WASM智能合约,合约调用端便可发送一笔智能合约部署交易到区块链平台,其中,智能合约部署交易包括了部署交易参数,该部署交易参数包括交易发送方地址、交易发送方对部署交易的签名信息、WASM智能合约的二进制表示形式(也即前面编码得到的WASM字节码)等内容。
(4)区块链平台在接收到合约部署交易之后,可以解析出交易发送方地址、交易发送方对部署交易的签名信息、WASM智能合约的二进制表示形式(也即前面编码得到的WASM字节码文件)等部署交易参数,以便后续将该WASM智能合约部署于区块链数据中。
具体地,本发明实施例中,部署过程主要包括如下步骤:
(5)区块链平台在接收到合约部署交易之后,会对该WASM智能合约所包含的外部函数和WASM智能合约自身实现的函数建立函数索引。需要说明的是,智能合约是包括了合约函数的一种电子协议,该WASM智能合约中所包含的合约函数除了合约自身函数之外,还可能存在导入函数,本发明实施例中,该导入函数包括事件函数和其他函数,其他函数指的是WASM智能合约被执行过程中会涉及到的调用的函数。
本发明实施例中,作为一个示例,在建立函数索引时,遵循0,1,2…这种表示形式,所有的函数按照顺序依次进行编号,以便于合约执行引擎调用的时候,可直接通过索引找到对应的函数。
(6)区块链平台在构建WASM智能合约对应的函数索引之后,为了使得后续智能合约的调用准确,在一实施例中,还会对WASM智能合约进行验证,当WASM智能合约通过验证之后,方可进行部署工作。
具体地,验证过程主要是对于WASM智能合约导入的外部函数进行存在性判断,以事件函数为例,会根据导入的事件函数索引,在区块链平台中查找事件函数索引对应的事件函数的实现实例,如果没找到,那就可以断定此WASM智能合约为非法的WASM智能合约,拒绝部署该WASM智能合约。另外,区块链平台需要返回错误信息到合约调用端。从这里也可以看出,利用事件函数,能够及时获取到WASM智能合约中的每一个执行路径,方便智能合约开发者进行合约代码错误的及时捕捉,进而编写出更加安全可靠的智能合约。
如果依据事件函数索引能对应的事件函数实例,则认为该WASM智能合约的事件函数实例存在,区块链平台对该WASM智能合约进行部署,如果在合约部署完成之后没有预设错误出现,WASM智能合约代码将存储于区块链数据库中,部署完成之后将该WASM智能合约相应的合约地址将返回给合约调用端,方便合约调用端下次调用该WASM智能合约时使用。
需要说明的是,在上述WASM智能合约部署完成之后,合约调用端便可根据该WASM智能合约相应的合约地址调用该WASM智能合约,也即合约调用端可以向区块链平台发送智能合约调用交易。具体地,合约调用端构造合约调用交易,指明合约地址以及此次所调用合约函数(也即WASM智能合约的合约函数),智能合约调用交易构造完成之后,合约调用端对智能合约调用交易进行签名然后将智能合约调用交易发送给区块链平台。
S20:区块链平台根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令。
S30:获取所述智能合约对应的在内存中的可执行结构。
对应的,区块链平台会接收合约调用端发送的智能合约调用交易,从而根据智能合约调用交易,调用对应的WASM智能合约,其中,智能合约包含事件函数调用指令,并获取该WASM智能合约对应的在内存的可执行结构,也即内存结构形式文件,便于通过合约执行引擎执行该可执行结构,也即执行该智能合约。
在一实施例中,步骤S30中,也即所述获取所述智能合约对应的在内存中的可执行结构,具体包括如下步骤:
S31:解析智能合约调用交易,以获取调用交易参数,调用交易参数包括智能合约调用交易调用的合约地址。
区块链平台接收到这笔智能合约调用交易后,对智能合约调用交易中的调用交易参数进行解析,得到此次交智能合约调用交易调用的合约地址、交易签名信息、合约函数签名、合约函数调用参数等信息。
S32:区块链平台在内存查找合约地址对应的智能合约的可执行结构。
S33:当查找不到时,区块链平台从区块链数据库中读取合约地址对应的智能合约的字节码文件,将字节码文件解析成合约执行引擎能执行的可执行结构。
S34:当查找到时,区块链平台直接从内存中调用合约地址对应的可执行结构。
区块链平台首先根据合约地址,在内存中查找对应的WASM智能合约的二进制的可执行结构,也即可执行结构,如果内存中找到,直接使用内存中的该WASM智能合约对应的可执行结构。如果内存中没找到,则从区块链数据库中查找该合约地址所对应的WASM智能合约所对应的字节码文件,然后将其再解析为可执行结构,将该可执行结构保存在内存中,方便后续使用。
在一实施例中,将所述字节码文件解析成合约执行引擎能执行的可执行结构之后,将所述可执行结构缓存在所述内存中。
可以理解,WASM智能合约部署后,需要从区块链数据库中读取WASM智能合约,然后进行解析为内存中的内存结构表示形式(也即可执行结构)才能进行调用,因此,在本发明实施例中,在对WASM智能合约进行调用时,在解析得到WASM智能合约对应的可执行结构后,将WASM智能合约对应的可执行结构缓存在内存中,下次调用时,便可直接从内存中读取相应的可执行结构,减少了从区块链数据库读取的时间和解析为内存中可被合约执行引擎调用的可执行结构的时间。
其中,在一实施例中,WASM智能合约所对应的事件函数,可以有多种方式定义在区块链平台中,第一种是利用区块链平台对应的语言实现;第二种是利用字节码合约的方式实现,下面分别描述。
利用区块链平台对应的语言实现的方式:
智能合约开发者可以区块链平台对应的语言编写事件函数,先是获取利用区块链平台对应的语言所编写的事件函数,并将事件函数转换为WASM智能合约能识别的内存结构形式,最后将事件函数的参数类型和返回值类型转变为WASM智能合约能识别的类型。可以理解,利用区块链平台对应的语言实现事件函数,由于此时事件函数是WASM智能合约能够识别的类型和调用的结构,可以使得执行该智能合约时,效率更快。
利用字节码合约的方式实现的方式:
区块链平台先是依据事件函数转换为事件函数合约,也就是说,合约调用端部署和调用的是WASM智能合约,本发明实施例中,将事件函数也转换为另一份WASM智能合约形式的事件函数合约,并将事件函数合约存储到区块链平台的账本数据中,从而使得区块链中所有的节点都有一份事件函数合约实例。这样,在调用事件函数时,便可调用到事件函数合约实例,实现跨合约调用。值得说明的是,WASM智能合约之间的跨合约调用更加灵活,可以携带的信息更多,而且不需要进行函数参数类型和返回值类型的转换,可见,通过跨合约调用的形式实现事件函数的优点是比较灵活。
需要说明的是,在具体实现时,可以依据实际需求选择合适的事件函数实现形式,本发明不做限定,另外,事件函数无论采用哪种方式定义,都需要在平台启动之后存在于区块链上,以便合约调用者合约进行事件的调用。
S40:区块链平台执行智能合约对应的可执行结构,以调用事件函数调用指令所对应的事件函数。
在区块链平台调用智能合约之后并获取到相应的可执行结构后,便可执行智能合约对应的可执行结构,以调用事件函数调用指令所对应的事件函数。
在一实施例中,步骤S30中,也即区块链平台执行智能合约,以调用事件函数调用指令所对应的事件函数,包括如下步骤:
S41:区块链平台构造智能合约的虚拟机作为合约执行引擎。
作为一个示例,区块链平台接下来会构造WASM智能合约执行环境的WASM虚拟机作为合约执行引擎。WASM虚拟机主要包括WASM智能合约代码执行过程中的内存、操作数栈和WASM可执行结构在内存中的结构等信息。
S32:区块链平台通过合约执行引擎,遍历智能合约对应的可执行结构,以执行智能合约相应的合约函数。
区块链平台通过WASM虚拟机,循环遍历所有的WASM智能合约的导出函数中,也即在WASM智能合约对应的可执行结构中的导出函数,在所有的导出函数中查找此次调用交易需要调用的合约函数,如果找到之后,就可以根据函数名称找到函数对应相应的字节码。如果找完所有的导出函数都没有找到此次交易指定调用的函数,代表此次合约调用交易失败,会返回错误信息给合约调用者。
需要注意的是,只有在WASM智能合约对应的可执行结构被导出的函数才能够被外部进行调用,否则不能被执行虚拟机调用,只能被WASM内部的函数进行调用,导出函数作用是为了执行虚拟机方便的找到智能合约对应的可执行结构的入口。
S33:当遍历到事件函数调用指令时,区块链平台依据事件函数调用指令,从预先构建的智能合约对应的函数索引表中查找相应的事件函数索引。
S34:依据事件函数索引调用相应的事件函数。
WASM虚拟机找到了WASM智能合约对应的可执行结构的执行入口函数后,接下来从WASM智能合约对应的可执行结构的代码段取出入口函数对应的字节码, 然后结合WASM智能合约调用交易中函数的输入参数(合约函数调用参数)进行合约函数调用执行。
需要说明的是,具体的合约函数调用执行过程,是每次从可执行结构的字节码中取出一个指令,如果指令需要操作栈或者内存中的数据,那么会从栈或者内存中拿出数据,然后进行指令执行。指令执行的时候会有一个计数器,每个指令执行都让计数器+1,计数器是记录当前函数中的指令是否已经全部完毕。如果执行完毕就可以进行函数的返回值保存,此时就代表函数执行结束。
如前述,WASM智能合约开发者之前在合约中调用的事件函数,都会被对应的编写智能合约语言的编译器编译成为一段WASM字节码,这段字节码通常包括事件函数调用指令(call指令)。当区块链平台的虚拟机遇到call指令的时候将该call指令的行为翻译为目标对函数的调用。需要说明的是,这个目标函数有可能是WASM智能合约内部声明的函数,也有可能是在区块链平台现有的或者区块链账本存储的合约中的外部函数。在本发明实施例中,将call指令是作为一次事件触发指令的时候,虚拟机会找到之前构建好的函数索引表中找到call指令调用的事件函数索引,然后依据事件函数索引调用相应的事件函数,以执行智能合约的事件处理逻辑,从而获取到对应的事件内容。
区块链平台虚拟机首先提取智能合约中事件的主要信息,根据事件函数参数类型的不同可以将事件分为不同的类型,比如一个合约事件是想获取一段指令的执行结果,这个事件内容可能会是一个i32/i64类型的整数,那么虚拟机就会找到与之对应的函数类型调用,还有可能是一个字符串类型的内容,这个字符串内容记录了当前函数执行出错后的出错信息等,那么事件内容会是一串字符串代表当前函数执行的出错信息。虚拟机判断完成事件函数类型之后,就可以真正的进入确定类型的事件函数执行逻辑了。
因此,虚拟机首先从栈或者内存中拿出事件内容。事件内容可能是一个或多个整数, 也有可能是一串字符串等内容。如果虚拟机需要从栈中拿出事件内容,直接对栈顶元素进行弹出即可。如果虚拟机需要从内存中拿出事件内容,需要根据事件内容在内存中的偏移量和事件内容长度先确定事件在内存中的具体位置,然后根据内存偏移量和事件内容长度从内存中截取出具体的事件内容。
S50:区块链平台将事件内容推送至合约调用端。
区块链平台获取到事件内容之后,区块链平台会通过虚拟机将会把事件内容,通过区块链平台和合约调用端建立的长连接通道(事件通道)推送给合约调用端。
需要说明的是,一个合约调用端可能会订阅多个智能合约的事件,为了避免混乱,区块链平台推送的事件内容还会以智能合约的合约地址作为区分,也即将事件内容反馈至合约调用端,可以指的是将事件内容与合约地址进行绑定,并将绑定后的事件内容反馈至合约调用端。
另外需要说明的是,长连接是合约调用端和区块链平台在执行合约之前就创建完成的网络连接,并且直到合约调用端或者区块链平台一方进行关闭才会断开连接。
合约调用端获取到区块链平台推送过来的事件后,便可根据智能合约地址对事件进行过滤,从而找到所需的事件内容,以便后续进行事件的处理。值得注意的是,合约调用端拿到事件所做的处理,本发明实施例不做限定,合约调用端获取到事件内容之后可能做得事情非常多,示例性的,可以是为了调试这个代码的执行情况,也有可能是记录一些执行路径,以便于优化代码的逻辑,具体不一一举例。
上述事件推送方法中,是预先在区块链平台定义智能合约对应的事件函数,当合约调用端发起智能合约调用交易时,使区块链平台在调用和执行对应的智能合约时,区块链平台会依据事件函数对应的事件函数调用指令,调用所对应的事件函数,从而依据事件函数的处理逻辑执行事件处理逻辑以获取事件内容,并将智能合约对应的事件内容反馈回合约调用端,以使合约调用端侧能清楚的依据事件内容了解合约调用情况。与传统的方案相比,本方案利用事件函数导入区块链的特点,在智能合约执行时中可以多处产生事件,不需要将事件存入区块链数据库之后由合约调用端轮训获取,减少了很多不必要的步骤且能及时推送到合约调用端,以便合约调用端根据合约执行情况做下一步反馈,有效地提高了智能合约事件的推送效率,能够更加高效迅速的获取到智能合约中的事件;其次,也可以避免将事件内容存储至区块链数据库,有效地减轻了区块链数据库的存储压力负担;另外,能够及时获取到智能合约中的每一个执行路径,甚至可以细化到每一条指令,能时刻获取智能合约内部执行状态,方便智能合约开发者进行合约代码错误的及时捕捉,进而编写出更加安全可靠的智能合约,再者,能够在交易失败的情况下推送交易失败的原因到合约调用者,方便合约调用者及时获取到错误信息,进而对系统进行提前保护,防止造成更大的损失,而且是在真正的区块链环境下得到的事件内容,具有更高的参考价值。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种区块链平台,该区块链平台与上述实施例中事件推送方法中的区块链平台一一对应。如图3所示,该区块链平台包括接收模块101、调用模块102、第一获取模块103、执行模块104、第二获取模块105和发送模块106。各功能模块详细说明如下:
本发明实施例提供了一种区块链平台,包括:
接收模块101,用于接收合约调用端发送的智能合约调用交易;
调用模块102,用于根据所述智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;
第一获取模块103,用于将所述智能合约解析成为在内存中的可执行结构;
执行模块104,用于执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
第二获取模块105,用于依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容;
发送模块106,用于将所述事件内容推送至所述合约调用端。
在一实施例中,提供一种合约调用端,该合约调用端与上述实施例中事件推送方法中的合约调用端一一对应。如图4所示,该合约调用端包括发送模块201和接收模块202。各功能模块详细说明如下:
发送模块201,用于向区块链平台发送智能合约调用交易,以使所述区块链平台根据所述智能合约调用交易执行对应的智能合约的可执行结构,以调用所述智能合约事件中函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
接收模块202,用于接收所述区块链平台推送的所述事件内容,其中,所述事件内容为所述区块链平台依据所述事件函数,执行所述智能合约对应的事件处理逻辑所得到。
其中,对于区块链平台(或合约调用端)所实现的功能或者步骤,在对应参阅前述事件推送方法中区块链平台(或合约调用端)所实现的功能或步骤,在此不重复描述。
上述区块链平台(或合约调用端)中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种区块链平台(或合约调用端),其内部结构图可以如图5所示。该区块链平台(或合约调用端)包括通过系统总线连接的处理器、存储器和通信接口。其中,该区块链平台(或合约调用端)的处理器用于提供计算和控制能力。该列车对接控制装置的存储器包括非易失性和易失性存储介质、内存储器。该存储介质存储有计算机程序。该区块链平台(或合约调用端)的通信接口用于与外部的合约调用端(或区块链平台)连接通信。该计算机程序被处理器执行时,以实现本发明实施例中提到的事件处理中区块链平台(或合约调用端)的步骤或功能。
在一个实施例中,提供了一种区块链平台,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
接收合约调用端发送的智能合约调用交易;
根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;
获取智能合约对应的在内存中的可执行结构;
执行可执行结构,以调用事件函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;
依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;
将事件内容推送至合约调用端。
在一个实施例中,提供了一种合约调用端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约在内存的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;
接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收合约调用端发送的智能合约调用交易;
根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;
获取智能合约对应的在内存中的可执行结构;
执行可执行结构,以调用事件函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;
依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;
将事件内容推送至合约调用端。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约在内存的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;
接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (12)
1.一种事件推送方法,其特征在于,应用于区块链平台,所述方法包括:
接收合约调用端发送的智能合约调用交易;
根据所述智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;
获取所述智能合约对应的在内存中的可执行结构;
执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容;
将所述事件内容推送至所述合约调用端。
2.如权利要求1所述的事件推送方法,其特征在于,所述获取所述智能合约对应的在内存中的可执行结构,包括:
解析所述智能合约调用交易,以获取调用交易参数,所述调用交易参数包括所述智能合约调用交易调用的合约地址;
在所述内存查找所述合约地址对应的所述智能合约的可执行结构;
当查找不到时,从区块链数据库中读取所述合约地址对应的所述智能合约的字节码文件,将所述字节码文件解析成合约执行引擎能执行的所述可执行结构;
当查找到时,从所述内存中调用所述合约地址对应的可执行结构。
3.如权利要求2所述的事件推送方法,其特征在于,所述将所述字节码文件解析成合约执行引擎能执行的可执行结构之后,所述方法还包括:
将所述可执行结构缓存在所述内存中。
4.如权利要求1所述的事件推送方法,其特征在于,所述执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,包括:
构造所述智能合约的虚拟机作为合约执行引擎;
通过所述合约执行引擎,遍历所述智能合约对应的可执行结构,以执行所述智能合约相应的合约函数;
当遍历到所述事件函数调用指令时,依据所述事件函数调用指令,从预先构建的所述智能合约对应的函数索引表中查找相应的事件函数索引;
依据所述事件函数索引调用相应的事件函数。
5.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述将所述事件内容推送至所述合约调用端,包括:
将所述事件内容与所述智能合约调用交易调用的合约地址进行绑定,并将绑定后的所述事件内容反馈至所述合约调用端。
6.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述智能合约所对应的事件函数,通过如下方式定义在区块链平台中:
获取利用区块链平台对应的语言所编写的所述事件函数;
将所述事件函数转换为所述智能合约能识别的内存形式结构,并将所述事件函数的参数类型和返回值类型转变为所述智能合约能识别的类型;
依据转化后的所述事件函数存储到所述区块链平台的账本数据中。
7.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述智能合约所对应的事件函数,通过如下方式定义在区块链平台中:
获取字节码形式的所述事件函数对应的事件函数合约;
将所述事件函数合约存储到所述区块链平台的账本数据中。
8.一种事件推送方法,其特征在于,应用于合约调用端,所述方法包括:
向区块链平台发送智能合约调用交易,以使所述区块链平台根据所述智能合约调用交易执行对应的智能合约在内存的可执行结构,以调用所述智能合约事件中函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
接收所述区块链平台推送的事件内容,其中,所述事件内容为所述区块链平台依据所述事件函数,执行所述智能合约对应的事件处理逻辑所得到。
9.一种区块链平台,其特征在于,包括:
接收模块,用于接收合约调用端发送的智能合约调用交易;
调用模块,用于根据所述智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;
第一获取模块,用于将所述智能合约解析成为在内存中的可执行结构;
执行模块,用于执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
第二获取模块,用于依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容;
发送模块,用于将所述事件内容推送至所述合约调用端。
10.一种合约调用端,其特征在于,包括:
发送模块,用于向区块链平台发送智能合约调用交易,以使所述区块链平台根据所述智能合约调用交易执行对应的智能合约的可执行结构,以调用所述智能合约事件中函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
接收模块,用于接收所述区块链平台推送的所述事件内容,其中,所述事件内容为所述区块链平台依据所述事件函数,执行所述智能合约对应的事件处理逻辑所得到。
11.一种事件推送系统,其特征在于,包括区块链平台和合约调用端,其中:
所述区块链平台,用于根据所述合约调用端发送的智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;并用于执行所述智能合约在内存的可执行结构,以调用所述事件函数调用指令所对应的事件函数,依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容并向所述合约调用端推送,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
所述合约调用端,用于接收所述区块链平台推送的所述事件内容。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述事件推送方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011397766.XA CN112199221B (zh) | 2020-12-04 | 2020-12-04 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
PCT/CN2020/141244 WO2022116342A1 (zh) | 2020-12-04 | 2020-12-30 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011397766.XA CN112199221B (zh) | 2020-12-04 | 2020-12-04 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199221A true CN112199221A (zh) | 2021-01-08 |
CN112199221B CN112199221B (zh) | 2021-03-30 |
Family
ID=74034491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011397766.XA Active CN112199221B (zh) | 2020-12-04 | 2020-12-04 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112199221B (zh) |
WO (1) | WO2022116342A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688186A (zh) * | 2021-08-25 | 2021-11-23 | 工银科技有限公司 | 智能合约执行方法、引擎及区块链节点 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097364A (zh) * | 2019-04-30 | 2019-08-06 | 翟红鹰 | 区块链智能合约模块化生成方法、系统、终端及存储介质 |
CN110245489A (zh) * | 2019-05-20 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 基于明文日志的收据存储方法、节点和系统 |
CN110263086A (zh) * | 2019-05-20 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 结合用户类型与事件函数类型的收据存储方法和节点 |
CN110535928A (zh) * | 2019-08-22 | 2019-12-03 | 杭州趣链科技有限公司 | 一种区块链的java智能合约的事件推送方法 |
CN110557384A (zh) * | 2019-08-12 | 2019-12-10 | 杭州云象网络技术有限公司 | 一种基于区块链的物联网管理控制方法 |
CN110633200A (zh) * | 2018-06-25 | 2019-12-31 | 富士通株式会社 | 用于测试智能合约的方法和设备 |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704064A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
WO2020215925A1 (zh) * | 2019-04-22 | 2020-10-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链的事件订阅的方法及装置 |
CN111857892A (zh) * | 2020-09-22 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 通过区块链进行业务处理的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543516A (zh) * | 2019-07-26 | 2019-12-06 | 深圳壹账通智能科技有限公司 | 智能合约处理方法、装置、计算机设备及存储介质 |
CN111324396B (zh) * | 2020-03-19 | 2023-09-15 | 深圳市迅雷网络技术有限公司 | 一种区块链智能合约执行方法、装置及设备 |
-
2020
- 2020-12-04 CN CN202011397766.XA patent/CN112199221B/zh active Active
- 2020-12-30 WO PCT/CN2020/141244 patent/WO2022116342A1/zh active Application Filing
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633200A (zh) * | 2018-06-25 | 2019-12-31 | 富士通株式会社 | 用于测试智能合约的方法和设备 |
WO2020215925A1 (zh) * | 2019-04-22 | 2020-10-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链的事件订阅的方法及装置 |
CN110097364A (zh) * | 2019-04-30 | 2019-08-06 | 翟红鹰 | 区块链智能合约模块化生成方法、系统、终端及存储介质 |
CN110245489A (zh) * | 2019-05-20 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 基于明文日志的收据存储方法、节点和系统 |
CN110263086A (zh) * | 2019-05-20 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 结合用户类型与事件函数类型的收据存储方法和节点 |
CN110557384A (zh) * | 2019-08-12 | 2019-12-10 | 杭州云象网络技术有限公司 | 一种基于区块链的物联网管理控制方法 |
CN110535928A (zh) * | 2019-08-22 | 2019-12-03 | 杭州趣链科技有限公司 | 一种区块链的java智能合约的事件推送方法 |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704064A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN111857892A (zh) * | 2020-09-22 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 通过区块链进行业务处理的方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688186A (zh) * | 2021-08-25 | 2021-11-23 | 工银科技有限公司 | 智能合约执行方法、引擎及区块链节点 |
Also Published As
Publication number | Publication date |
---|---|
WO2022116342A1 (zh) | 2022-06-09 |
CN112199221B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI730654B (zh) | 部署和執行智能合約的方法及裝置 | |
CN109034814B (zh) | 基于以太坊虚拟机的智能合约处理方法和装置 | |
CN109522218A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
CN110688122B (zh) | 编译和执行智能合约的方法及装置 | |
CN109597618B (zh) | 程序开发方法、装置、计算机设备及存储介质 | |
JPH04257033A (ja) | シンボリックデバッグシステム及びその方法 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
CN112199221B (zh) | 事件推送方法、系统、区块链平台、合约调用端及介质 | |
US7197600B2 (en) | Transferring data along with code for program overlays | |
CN112451972A (zh) | 基于游戏引擎的资源压缩包构建方法、装置、系统及介质 | |
CN112308716A (zh) | 区块链智能合约执行方法、装置、设备及计算机存储介质 | |
CN111427578B (zh) | 一种数据转换方法、装置及设备 | |
CN110347588B (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN112631613A (zh) | 基于区块链平台的智能合约部署和调用方法及相关设备 | |
CN112445706A (zh) | 程序异常代码获取方法、装置、电子设备以及存储介质 | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
CN114020278A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112559345A (zh) | 基于LoadRunner的接口测试方法、计算机设备及存储介质 | |
CN114722073B (zh) | 有环图转换为图数据库查询语言的方法和装置 | |
CN115757131A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |