本申请涉及区块链,特别是涉及一种智能合约的执行方法、装置、计算机设备和存储介质。
背景技术:
1、区块链技术是一种互联网数据库技术,其特点是去中心化、公开透明,允许每个人参与数据库记录。智能合约是一种程序化合约,可以部署在区块链中,在满足预设条件时自动执行,并且随着区块链技术的发展,智能合约得到了越来越多的应用。
2、相关技术中通过aot(ahead of time,预先编译)的方式,在解释执行的程序运行之前,将程序代码预先编译为机器码,然后再执行机器码,以提高智能合约的执行效率,但是,目前aot编译后不能充分释放程序的性能,导致智能合约执行的效率有待进一步提高。
3、针对相关技术中存在aot编译后不能充分释放程序的性能,导致智能合约执行的效率有待进一步提高的问题,目前还没有提出有效的解决方案。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够在aot编译中进行优化,以进一步提高智能合约执行效率的智能合约的执行方法、装置、计算机设备和存储介质。
2、第一个方面,在本实施例中提供了一种智能合约的执行方法,包括:
3、获取智能合约的字节码指令,将所述字节码指令转换为对应的中间代码指令;
4、通过内联优化对所述中间代码指令中的目标调用指令进行替换;
5、对经过内联优化后的所述中间代码指令进行编译,得到所述智能合约对应的合约机器码;
6、执行所述合约机器码,得到所述智能合约的执行结果。
7、在其中的一些实施例中,所述获取智能合约的字节码指令,将所述字节码指令转换为对应的中间代码指令,包括:
8、对所述智能合约中每一个合约方法的字节码指令进行转换,得到每个所述合约方法对应的中间代码指令序列。
9、在其中的一些实施例中,所述通过内联优化对所述中间代码指令中的目标调用指令进行替换,包括:
10、遍历所述智能合约中每一个合约方法的中间代码指令序列,解析并确定所有目标调用指令;
11、当所述目标调用指令对应的目标合约方法的中间代码指令数量不超过预设指令数量时,通过参数变更替换所述目标调用指令,并按顺序继续解析下一个所述目标合约方法。
12、在其中的一些实施例中,还包括:
13、当所述目标调用指令对应的目标合约方法的中间代码指令数量超过所述预设指令数量时,停止解析当前所述目标合约方法,并按顺序继续解析下一个所述目标合约方法。
14、在其中的一些实施例中,还包括:
15、对于所述智能合约中多层递归调用的合约方法,从最底层或者最上层的所述合约方法开始进行内联优化。
16、在其中的一些实施例中,所述对经过内联优化后的所述中间代码指令进行编译,得到所述智能合约对应的合约机器码,包括:
17、将所述中间代码指令序列的每一个中间代码指令编译为汇编指令,得到每个所述合约方法对应的汇编代码;
18、通过汇编器将所述汇编代码转换为机器码,得到每个所述合约方法的合约方法机器码;
19、将所有所述合约方法机器码进行连接,得到所述合约机器码。
20、在其中的一些实施例中,所述执行所述合约机器码,得到所述智能合约的执行结果,包括:
21、将所述智能合约执行环境的相关内存地址与预先选定的目标寄存器进行绑定;
22、调用执行所述智能合约的合约机器码,得到所述智能合约的执行结果。
23、第二个方面,在本实施例中提供了一种智能合约的执行装置,包括:
24、获取模块,用于获取智能合约的字节码指令,将所述字节码指令转换为对应的中间代码指令;
25、内联优化模块,用于通过内联优化对所述中间代码指令中的目标调用指令进行替换;
26、编译模块,用于对经过内联优化后的所述中间代码指令进行编译,得到所述智能合约对应的合约机器码;
27、执行模块,用于执行所述合约机器码,得到所述智能合约的执行结果。
28、第三个方面,在本实施例中提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的智能合约的执行方法。
29、第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的智能合约的执行方法。
30、与相关技术相比,在本实施例中提供的智能合约的执行方法、装置、计算机设备和存储介质,通过获取智能合约的字节码指令,将所述字节码指令转换为对应的中间代码指令;通过内联优化对所述中间代码指令中的目标调用指令进行替换;对经过内联优化后的所述中间代码指令进行编译,得到所述智能合约对应的合约机器码;执行所述合约机器码,得到所述智能合约的执行结果。通过本申请,能够在智能合约aot编译过程中,对中间代码指令进行内联优化,减少目标调用指令的调用开销,进一步提高智能合约执行效率,解决了目前aot编译后不能充分释放程序的性能,导致智能合约执行的效率有待进一步提高的问题。
31、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
1.一种智能合约的执行方法,其特征在于,包括:
2.根据权利要求1所述的智能合约的执行方法,其特征在于,所述获取智能合约的字节码指令,将所述字节码指令转换为对应的中间代码指令,包括:
3.根据权利要求1至2中任一项所述的智能合约的执行方法,其特征在于,所述通过内联优化对所述中间代码指令中的目标调用指令进行替换,包括:
4.根据权利要求3所述的智能合约的执行方法,其特征在于,还包括:
5.根据权利要求1所述的智能合约的执行方法,其特征在于,还包括:
6.根据权利要求2所述的智能合约的执行方法,其特征在于,所述对经过内联优化后的所述中间代码指令进行编译,得到所述智能合约对应的合约机器码,包括:
7.根据权利要求1所述的智能合约的执行方法,其特征在于,所述执行所述合约机器码,得到所述智能合约的执行结果,包括:
8.一种智能合约的执行装置,其特征在于,包括:
9.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至7中任一项所述的智能合约的执行方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的智能合约的执行方法的步骤。
