事件推送方法、系统、区块链平台、合约调用端及介质技术方案

技术编号:27006082 阅读:18 留言:0更新日期:2021-01-08 17:08
本发明专利技术公开了一种事件推送方法、系统、区块链平台、合约调用端及介质,用于快速获取智能合约事件内容。方法部分包括:接收合约调用端发送的智能合约调用交易;根据智能合约调用交易,调用对应的智能合约并解析成内存中的可执行结构,执行智能合约的可执行结构,以调用事件函数调用指令所对应的事件函数;依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;将事件内容推送至合约调用端。本方案利用事件函数导入区块链的特点,在智能合约执行时中可以多处产生事件,不需要将事件存入区块链数据库之后由合约调用端轮训获取,减少了很多不必要的步骤且能及时推送到合约调用端,有效地提高了智能合约事件的推送效率。

【技术实现步骤摘要】
事件推送方法、系统、区块链平台、合约调用端及介质
本专利技术涉及信息传输、区块链
,尤其涉及一种事件推送方法、系统、区块链平台、合约调用端及介质。
技术介绍
当智能合约调用者在智能合约中调用了触发智能合约事件(event)的函数,区块链平台中在执行智能合约的函数时候会通过指令监控到该事件,进而对事件解析,解析之后将事件内容及时地返回给合约调用端,合约调用端通过分析这些事件,而可以了解到智能合约内部的执行情况。传统的方案中,事件需要在合约调端交易执行结束后,由合约调用端轮训区块链数据库才能拿到智能合约的事件,专利技术人意识到,这种场景需要一个区块中的多笔交易都要写入区块链数据库之后,才能拿到交易的返回结果和这笔交易在合约中产生的事件,这个获取智能合约事件的过程是非常缓慢的,而且要求智能合约交易调用必须执行成功,不能快速获取到智能合约事件。
技术实现思路
本专利技术实施例提供一种事件推送方法、系统、区块链平台、合约调用端及介质,以解决不能快速获取到智能合约事件的问题。第一方面,提供了一种事件推送方法,应用于区块链平台,该方法包括:接收合约调用端发送的智能合约调用交易;根据智能合约调用交易,调用对应的智能合约,并获取智能合约对应的在内存中的可执行结构;执行可执行结构,以调用上述事件函数调用指令所对应的事件函数,其中,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;并依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;最后将事件内容发送给合约调用端。进一步地,上个获取智能合约对应的在内存中的可执行结构,指的是:先解析智能合约调用交易,以获取调用交易参数,调用交易参数包括智能合约调用交易调用的合约地址;随后在内存查找合约地址对应的智能合约的可执行结构;当查找不到智能合约的可执行结构时,从区块链数据库中读取合约地址对应的智能合约的字节码文件,将字节码文件解析成合约执行引擎能执行的可执行结构;当查找到智能合约的可执行结构时,从内存中调用合约地址对应的可执行结构。进一步地,上述将字节码文件解析成合约执行引擎能执行的可执行结构之后,还将可执行结构缓存在内存中,也就是存储在区块链平台的内存缓存中。进一步地,执行可执行结构,以调用事件函数调用指令所对应的事件函数,指的是:构造智能合约的虚拟机作为合约执行引擎;通过合约执行引擎,遍历智能合约对应的可执行结构,以执行智能合约相应的合约函数;当遍历到事件函数调用指令时,依据事件函数调用指令,从预先构建的智能合约对应的函数索引表中查找相应的事件函数索引;随后依据该事件函数索引调用相应的事件函数。进一步地,将事件内容反馈至合约调用端,指的是:将事件内容与智能合约调用交易调用的合约地址进行绑定,并将绑定后的事件内容反馈至合约调用端。进一步地,智能合约所对应的事件函数,通过如下方式定义在区块链平台中:获取利用区块链平台对应的语言所编写的事件函数;将事件函数转换为智能函数能识别的内存形式结构,并将事件函数的参数类型和返回值类型转变为智能合约能识别的类型;依据转化后的事件函数存储到区块链平台的账本数据中。进一步地,智能合约所对应的事件函数,还可以通过如下方式定义在区块链平台中:获取字节码形式的事件函数对应的事件函数合约;将事件函数合约存储到区块链平台的账本数据中。第二方面,提供了一种事件推送方法,应用于合约调用端,方法包括:向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约在内存的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。第三方面,提供了一种区块链平台,包括:接收模块,用于接收合约调用端发送的智能合约调用交易;调用模块,用于根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;第一获取模块,用于将智能合约解析成为在内存中的可执行结构;执行模块,用于执行可执行结构,以调用事件函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;第二获取模块,用于依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容;发送模块,用于将事件内容发送给合约调用端。第四方面,提供了一种合约调用端,包括:发送模块,用于向区块链平台发送智能合约调用交易,以使区块链平台根据智能合约调用交易执行对应的智能合约的可执行结构,以调用智能合约事件中函数调用指令所对应的事件函数,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;接收模块,用于接收区块链平台推送的事件内容,其中,事件内容为区块链平台依据事件函数,执行智能合约对应的事件处理逻辑所得到。第五方面,提供了一种事件推送系统,包括区块链平台和合约调用端,其中:区块链平台,用于根据智能合约调用交易,调用对应的智能合约,其中,智能合约包含事件函数调用指令;并用于执行智能合约在内存的可执行结构,以调用事件函数调用指令所对应的事件函数,依据事件函数,执行智能合约对应的事件处理逻辑,以获取事件内容并向合约调用端推送,事件函数为在区块链平台中预先定义的智能合约所对应的事件函数;合约调用端,用于接收区块链平台推送的事件内容。第六方面,提供了一种区块链平台,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述事件推送方法中区块链平台的步骤。第七方面,提供了一种合约调用端,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述事件推送方法中合约调用端的步骤。第八方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述事件推送方法中区块链平台或合约调用端的步骤的步骤。上述事件推送方法、系统所实现的一个方案中,是预先在区块链平台定义智能合约对应的事件函数,当合约调用端发起智能合约调用交易时,使区块链平台在调用和执行对应的智能合约时,将智能合约解析成在内存中的可执行结构,执行智能合约的在内存的可执行结构,依据事件函数对应的事件函数调用指令,调用所对应的事件函数,从而依据事件函数的处理逻辑执行事件处理逻辑以获取事件内容,并将智能合约对应的事件内容反馈回合约调用端,以使合约调用端侧能清楚的依据事件内容了解合约调用情况。与传统的方案相比,本方案利用事件函数导入区块链的特点,在智能合约执行时中可以多处产生事件,不需要将事件存入区块链数据库之后由合约调用端轮训获取,减少了很多不必要的步骤且能及时推送到合约调用端,以便合约调用端依据合约执行情况做下一步反馈,有效地提高了智能合约事件的推送效率,能快速获取到智能合约事件;另外,也可以避免将事件内容存储至区块链数据库,有效地减轻了区块链数据库的存储压力负担。附图说明为了更清楚地说明本发本文档来自技高网...

【技术保护点】
1.一种事件推送方法,其特征在于,应用于区块链平台,所述方法包括:/n接收合约调用端发送的智能合约调用交易;/n根据所述智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;/n获取所述智能合约对应的在内存中的可执行结构;/n执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;/n依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容;/n将所述事件内容推送至所述合约调用端。/n

【技术特征摘要】
1.一种事件推送方法,其特征在于,应用于区块链平台,所述方法包括:
接收合约调用端发送的智能合约调用交易;
根据所述智能合约调用交易,调用对应的智能合约,其中,所述智能合约包含事件函数调用指令;
获取所述智能合约对应的在内存中的可执行结构;
执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,所述事件函数为在区块链平台中预先定义的所述智能合约所对应的事件函数;
依据所述事件函数,执行所述智能合约对应的事件处理逻辑,以获取事件内容;
将所述事件内容推送至所述合约调用端。


2.如权利要求1所述的事件推送方法,其特征在于,所述获取所述智能合约对应的在内存中的可执行结构,包括:
解析所述智能合约调用交易,以获取调用交易参数,所述调用交易参数包括所述智能合约调用交易调用的合约地址;
在所述内存查找所述合约地址对应的所述智能合约的可执行结构;
当查找不到时,从区块链数据库中读取所述合约地址对应的所述智能合约的字节码文件,将所述字节码文件解析成合约执行引擎能执行的所述可执行结构;
当查找到时,从所述内存中调用所述合约地址对应的可执行结构。


3.如权利要求2所述的事件推送方法,其特征在于,所述将所述字节码文件解析成合约执行引擎能执行的可执行结构之后,所述方法还包括:
将所述可执行结构缓存在所述内存中。


4.如权利要求1所述的事件推送方法,其特征在于,所述执行所述可执行结构,以调用所述事件函数调用指令所对应的事件函数,包括:
构造所述智能合约的虚拟机作为合约执行引擎;
通过所述合约执行引擎,遍历所述智能合约对应的可执行结构,以执行所述智能合约相应的合约函数;
当遍历到所述事件函数调用指令时,依据所述事件函数调用指令,从预先构建的所述智能合约对应的函数索引表中查找相应的事件函数索引;
依据所述事件函数索引调用相应的事件函数。


5.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述将所述事件内容推送至所述合约调用端,包括:
将所述事件内容与所述智能合约调用交易调用的合约地址进行绑定,并将绑定后的所述事件内容反馈至所述合约调用端。


6.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述智能合约所对应的事件函数,通过如下方式定义在区块链平台中:
获取利用区块链平台对应的语言所编写的所述事件函数;
将所述事件函数转换为所述智能合约能识别的内存形式结构,并将所述事件函数的参数类型和返回值类型转变为所述智能合约能识别的类型;
依据转化后的所述事件函数存储到所述区块链平台的账本数据中。


7.如权利要求1-4任一项所述的事件推送方法,其特征在于,所述智能合约...

【专利技术属性】
技术研发人员:邱炜伟黄方蕾胡麦芳张珂杰杨攀
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1