一种执行智能合约的方法、区块链节点、存储介质技术

技术编号:25921180 阅读:38 留言:0更新日期:2020-10-13 10:41
本说明书提供一种执行智能合约的方法、区块链节点、存储介质。一种执行智能合约的方法实施例包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。通过本说明书的实施例,在全局编译尚未完成的情况下,对所述智能合约的字节码进行局部编译并执行,从而可以在全局编译的同时保证区块链业务请求的正常处理。

【技术实现步骤摘要】
一种执行智能合约的方法、区块链节点、存储介质
本说明书实施例属于区块链
,尤其涉及一种执行智能合约的方法、区块链节点、存储介质。
技术介绍
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链2.0时代中出现了智能合约,将区块链的应用范围提升到了一个新高度。有了智能合约,区块链能做不再是单一的转账交易,而是还可以调用一段代码,而这段代码可以由用户自定义。
技术实现思路
本说明书在于提供一种执行智能合约的方法、区块链节点、存储介质,通过以下方式实现:一种执行智能合约的方法,包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码通过局部编译方式编译得到第二机器码并存储,执行所述第二机器码。一种执行智能合约的方法,包括:区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码通过局部编译方式编译得到第二机器码并存储,执行所述第二机器码。一种执行智能合约的区块链节点,执行上述任一项所述的方法。>一种执行智能合约的区块链节点,包括:处理器,存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述任一项所述的方法。一种存储介质,用于存储程序,其中所述程序在被执行时进行上述任一项的操作。通过本说明书的实施例,在区块链上部署智能合约的字节码后,开始对智能合约的机器码进行全局编译;如果接收到调用所述智能合约的请求,在本地没有存储所述智能合约的机器码的情况下,即全局编译尚未完成的情况下,对所述智能合约的字节码进行局部编译执行。从而可以在全局编译的同时保证区块链业务请求的正常处理。一种执行智能合约的方法,包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。一种执行智能合约的方法,包括:区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过全局编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述机器码。一种执行智能合约的区块链节点,执行上述任一项所述的方法。一种执行智能合约的区块链节点,包括:处理器,存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述任一项所述的方法。一种存储介质,用于存储程序,其中所述程序在被执行时进行上述任一项的操作。通过本说明书的实施例,在区块链上部署智能合约的字节码后,开始对智能合约的机器码进行全局编译;如果接收到调用所述智能合约的请求,在本地存储有对所述智能合约进行全局编译得到的第一机器码的情况下,即全局编译完成的情况下,执行所述第一机器码,从而可以快速处理区块链的业务请求。一种执行智能合约的方法,包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行解释执行。一种执行智能合约的方法,包括:区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行解释执行。一种执行智能合约的区块链节点,执行上述任一项所述的方法。一种执行智能合约的区块链节点,包括:处理器,存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述任一项所述的方法。一种存储介质,用于存储程序,其中所述程序在被执行时进行上述任一项的操作。通过本说明书的实施例,在区块链上部署智能合约的字节码后,开始对智能合约的机器码进行全局编译;如果接收到调用所述智能合约的请求,在本地没有存储针对所述智能合约进行全局编译得到的第一机器码的情况下,即全局编译尚未完成的情况下,对所述智能合约的字节码进行编译执行。从而可以在全局编译的同时保证区块链业务请求的正常处理。一种执行智能合约的方法,包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过局部编译方式编译为第二机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第二机器码,则执行所述第二机器码。一种执行智能合约的方法,包括:区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过局部编译方式编译为第二机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第二机器码,则执行所述机器码。一种执行智能合约的区块链节点,执行上述任一项所述的方法。一种执行智能合约的区块链节点,包括:处理器,存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述任一项所述的方法。一种存储介质,用于存储程序,其中所述程序在被执行时进行上述任一项的操作。通过本说明书的实施例,在区块链上部署智能合约的字节码后,开始对智能合约的机器码进行局部编译;如果接收到调用所述智能合约的请求,在本地存储有所述智能合约的第二机器码的情况下,即局部编译完成的情况下,执行所述第二机器码,从而可以快速处理区块链的业务请求。一种执行智能合约的方法,包括:区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过局部编译方式编译为第二机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第二机器码,则对所述智能合约的字节码进行解释执行。一种执行智能合约的方法,包括:区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过局部编译方式编译为第二机器码并存储;所述区块链节点执行所述部署的智能合约时,如果本本文档来自技高网...

【技术保护点】
1.一种执行智能合约的方法,包括:/n区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;/n所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;/n所述区块链节点执行部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码通过局部编译方式编译得到第二机器码并存储,执行所述第二机器码。/n

【技术特征摘要】
1.一种执行智能合约的方法,包括:
区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;
所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;
所述区块链节点执行部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码通过局部编译方式编译得到第二机器码并存储,执行所述第二机器码。


2.如权利要求1所述的方法,所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码,具体包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行全局编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行全局编译。


3.如权利要求1所述的方法,所述将所述智能合约的字节码通过全局编译方式编译为第一机器码,包括:
对所述智能合约的字节码进行全局编译的过程中进行优化编译得到第一机器码。


4.如权利要求1所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,对所述智能合约的字节码进行局部编译,具体包括:
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果正处于全局编译中,则对所述智能合约的字节码进行局部编译;
或,
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果尚未开始全局编译,则启动全局编译,并对所述智能合约的字节码进行局部编译。


5.如权利要求1或3所述的方法,所述区块链节点对所述智能合约的字节码进行局部编译,包括:
所述区块链节点对所述智能合约中对应所调用函数的字节码进行局部编译。


6.如权利要求1或4所述的方法,所述对所述智能合约的字节码进行局部编译得到第二机器码并存储,包括:
对所述智能合约的字节码进行翻译和/或执行的过程中识别热点的第二机器码,对热点的第二机器码进行存储以供后续调用;
和/或,
对所述智能合约的字节码进行翻译和/或执行的过程中进行优化编译得到第二机器码并存储。


7.如权利要求1所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。


8.如权利要求7所述的方法,所述区块链节点执行第一机器码,包括:
所述区块链节点执行存储的所述智能合约中对应所调用函数的第一机器码。


9.如权利要求1、3、7、8中任一项所述的方法,所述存储为缓存。


10.如权利要求1-4、7、8中任一项所述的方法,所述全局编译方式包括AoT或JIT,所述局部编译方式包括JIT。


11.一种执行智能合约的方法,包括:
区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;
所述区块链节点执行部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码通过局部编译方式编译得到第二机器码并存储,执行所述第二机器码。


12.如权利要求11所述的方法,所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码,具体包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行全局编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行全局编译。


13.如权利要求11所述的方法,所述将所述智能合约的字节码通过全局编译方式编译为第一机器码,包括:
对所述智能合约的字节码进行全局编译的过程中进行优化编译得到第一机器码。


14.如权利要求11所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,对所述智能合约的字节码进行局部编译,具体包括:
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果正处于全局编译中,则对所述智能合约的字节码进行局部编译;
或,
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果尚未开始全局编译,则启动全局编译,并对所述智能合约的字节码进行局部编译。


15.如权利要求11或13所述的方法,所述区块链节点对所述智能合约的字节码进行局部编译,包括:
所述区块链节点对所述智能合约中对应所调用函数的字节码进行局部编译。


16.如权利要求11或14所述的方法,所述对所述智能合约的字节码进行局部编译得到第二机器码并存储,包括:
对所述智能合约的字节码进行翻译和/或执行的过程中识别热点的第二机器码,对热点的第二机器码进行存储以供后续调用;
和/或,
对所述智能合约的字节码进行翻译和/或执行的过程中进行优化编译得到第二机器码并存储。


17.如权利要求11所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。


18.如权利要求17所述的方法,所述区块链节点执行第一机器码,包括:
所述区块链节点执行存储的所述智能合约中对应所调用函数的第一机器码。


19.如权利要求11、13、17、18中任一项所述的方法,所述存储为缓存。


20.如权利要求11-14、17、18中任一项所述的方法,所述全局编译方式包括AoT或JIT,所述局部编译方式包括JIT。


21.一种执行智能合约的区块链节点,执行上述权利要求1-10或11-20中任一项所述的方法。


22.一种执行智能合约的区块链节点,包括:
处理器,
存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述权利要求1-10或11-20中任一项所述的方法。


23.一种存储介质,用于存储程序,其中所述程序在被执行时进行上述权利要求1-10或11-20中任一项的操作。


24.一种执行智能合约的方法,包括:
区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;
所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;
所述区块链节点执行部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。


25.如权利要求24所述的方法,所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码,具体包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行全局编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行全局编译。


26.如权利要求24所述的方法,所述区块链节点执行所述第一机器码,包括:
所述区块链节点执行存储的所述智能合约中对应所调用函数的第一机器码。


27.如权利要求24所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行解释执行。


28.如权利要求27所述的方法,所述区块链节点对所述智能合约的字节码进行解释执行,包括:
所述区块链节点对所述智能合约中对应所调用函数的字节码进行解释执行。


29.如权利要求27所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,对所述智能合约的字节码进行解释执行,具体包括:
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果正处于全局编译中,则对所述智能合约的字节码进行解释执行;
或,
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果尚未开始全局编译,则启动全局编译,并对所述智能合约的字节码进行解释执行。


30.如权利要求24所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行局部编译并执行。


31.如权利要求30所述的方法,对智能合约的字节码进行局部编译,包括:
对所述智能合约的字节码进行逐句翻译,并将翻译后的机器码缓存下来以供后续调用时使用;
或,
对所述智能合约的字节码进行翻译和/或执行的过程中识别热点的机器码,对热点的机器码进行编译并缓存以供后续调用。


32.如权利要求31所述的方法,所述识别热点的机器码的粒度包括函数级别或代码块级别。


33.如权利要求31所述的方法,所述对智能合约的字节码进行局部编译,还包括:对所述智能合约的字节码进行局部翻译的过程中进行优化编译。


34.如权利要求24、26、27、29、30中任一项所述的方法,所述存储为缓存。


35.如权利要求24-33中任一项所述的方法,所述全局编译方式包括AoT或JIT;或者,所述局部编译方式包括JIT。


36.一种执行智能合约的方法,包括:
区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过全局编译为第一机器码并存储;
所述区块链节点执行部署的智能合约时,如果本地存储有所述智能合约的第一机器码,则执行所述第一机器码。


37.如权利要求36所述的方法,所述区块链节点部署所述智能合约的字节码后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码,具体包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行全局编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行全局编译。


38.如权利要求37所述的方法,所述区块链节点执行所述第一机器码,包括:
所述区块链节点执行存储的所述智能合约中对应所调用函数的第一机器码。


39.如权利要求37所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行解释执行。


40.如权利要求39所述的方法,所述区块链节点对所述智能合约的字节码进行解释执行,包括:
所述区块链节点对所述智能合约中对应所调用函数的字节码进行解释执行。


41.如权利要求39所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,对所述智能合约的字节码进行解释执行,具体包括:
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果正处于全局编译中,则对所述智能合约的字节码进行解释执行;
或,
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果尚未开始全局编译,则启动全局编译,并对所述智能合约的字节码进行解释执行。


42.如权利要求36所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行局部编译并执行。


43.如权利要求42所述的方法,对智能合约的字节码进行局部编译,包括:
对所述智能合约的字节码进行逐句翻译,并将翻译后的机器码缓存下来以供后续调用时使用;
或,
对所述智能合约的字节码进行翻译和/或执行的过程中识别热点的机器码,对热点的机器码进行编译并缓存以供后续调用。


44.如权利要求43所述的方法,所述识别热点的机器码的粒度包括函数级别或代码块级别。


45.如权利要求42所述的方法,对智能合约的字节码进行局部编译,还包括:对所述智能合约的字节码进行局部翻译的过程中进行优化编译。


46.如权利要求36、38、39、41、42中任一项所述的方法,所述存储为缓存。


47.如权利要求36-45中任一项所述的方法,所述全局编译方式包括AoT或JIT,所述局部编译方式包括JIT。


48.一种执行智能合约的区块链节点,执行上述权利要求24-35或36-47中任一项所述的方法。


49.一种执行智能合约的区块链节点,包括:
处理器,
存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述权利要求24-35或36-47中任一项所述的方法。


50.一种存储介质,用于存储程序,其中所述程序在被执行时进行上述权利要求24-35或36-47中任一项的操作。


51.一种执行智能合约的方法,包括:
区块链节点接收创建智能合约的请求,所述请求中包括所述智能合约的字节码;
所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码并存储;
所述区块链节点执行部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,则对所述智能合约的字节码进行解释执行。


52.如权利要求51所述的方法,所述区块链节点完成所述智能合约的部署后,开始将所述智能合约的字节码通过全局编译方式编译为第一机器码,具体包括:
所述区块链节点完成创建所述智能合约后开始对所述智能合约的字节码进行全局编译;或,
区块链节点完成创建所述智能合约后,利用相对空闲的时间段对所述智能合约的字节码进行全局编译。


53.如权利要求51所述的方法,所述区块链节点对所述智能合约的字节码进行解释执行,包括:
所述区块链节点对所述智能合约中对应所调用函数的字节码进行解释执行。


54.如权利要求51所述的方法,所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,对所述智能合约的字节码进行解释执行,具体包括:
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果正处于全局编译中,则对所述智能合约的字节码进行解释执行;
或,
所述区块链节点执行所述部署的智能合约时,如果本地没有存储所述智能合约的第一机器码,所述区块链节点还查询当前对所述智能合约的字节码的全局编译情况,如果尚未开始全局编译,则启动...

【专利技术属性】
技术研发人员:闫莺魏长征郭学鹏
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1