一种用于执行智能合约的方法及装置与流程

文档序号:36155729发布日期:2023-11-23 03:55阅读:33来源:国知局
一种用于执行智能合约的方法及装置与流程

本技术属于区块链,尤其涉及一种用于执行智能合约的方法及装置。


背景技术:

1、现如今伴随着区块链应用场景的不断扩展,对智能合约的执行效率的要求不断提高。现有的执行智能合约的方式是,使用虚拟化技术建立一种接近计算机硬件中央处理器(central processing unit,cpu)的指令集,以将智能合约的代码转换为特定的指令集,从而适配不同的虚拟机的操作环境,确保在不同的操作环境中,该特定的指令集运行可以获得同样的效果。然而这种方式必然没有直接通过使用计算硬件cpu提供的指令集的执行效率高,例如一个加法操作,cpu指令集可以通过一个指令即可实现,而虚拟化的指令集需要通过操作数据栈的多条指令才能完成。使用虚拟化技术执行智能合约,存在智能合约执行效率太低,且浪费大量计算资源和内存资源的问题。

2、解决虚拟化技术带来的资源浪费的方式是,将智能合约的代码转换为机器能够理解并直接执行的代码,目前使用的转换方式是在获取智能合约的代码后,依据区块链各节点上的执行引擎类型,进行具体的机器码转换。然而这种方式智能合约的执行效率较低。


技术实现思路

1、本技术实施例提供了一种用于执行智能合约的方法及装置,在编译指令的过程中生成通用的中间代码,从而提高智能合约的执行效率。

2、第一方面,本技术实施例提供了一种用于执行智能合约的方法,所述方法应用于区块链系统,所述区块链系统包括第一区块链节点,所述方法包括:

3、所述第一区块链节点获取部署在所述第一区块链节点的第一中间代码,所述第一中间代码是客户端节点在编译第一指令的过程中通过对字节码进行转换获得的;

4、所述第一区块链节点基于当前的执行模式,利用所述第一中间代码进行执行处理,所述第一中间代码能够支持不同执行模式的运行,所述不同的执行模式包括解释执行模式和编译执行模式,所述第一区块链节点当前的执行模式为所述不同执行模式中的任一模式。

5、在本技术实施例中,通过在编译第一中间代码的过程中,收集编译和解释所需的信息,并添加进第一中间代码,并将生成的第一中间代码部署在区块链系统上。进而区块链系统中的区块链节点获取第一中间代码,并直接输入编译执行引擎和解释执行引擎中进行使用。相比于传统的将智能合约的字节码部署在区块链系统上,需要依据不同区块链节点上加载的执行引擎类型,将智能合约的字节码转换为适配不同执行引擎的要求的中间代码,才能供执行引擎使用的方式,本技术实施例提供的用于执行智能合约的方法,可以跳过依据执行引擎类型生成特定中间代码的步骤。进而,区块链系统无需花费大量时间和算力执行特定中间代码的转换,就可以确保智能合约在不同区块链节点上执行效果一致。并且由于第一中间代码具有普适性,也不会存在因编译处理后获得的机器码得不到硬件支持,造成字节码回退的现象。本技术实施例提供的方法可以有效提高智能合约的执行效率,并且避免了计算资源浪费。

6、在一种可能的实现方式中,在所述第一指令为加法类型指令的情况下,所述第一中间代码包括第一指令类型字段和/或第一操作数类型字段;其中所述第一指令类型字段用于表示加法类型指令的类型,所述第一操作数类型字段用于表示加法类型指令对应的方法参数类型。

7、在一种可能的实现方式中,在所述第一指令的类型为方法调用类型指令的情况下,所述第一中间代码包括第二指令类型字段和/或第二操作数类型字段;其中所述第二指令类型字段用于表示方法调用类型指令的类型,所述第二操作数类型字段用于表示方法调用类型指令对应的方法参数类型。

8、通过在生成第一中间代码的阶段,获取编译处理和解释处理所需的信息,并将该信息加入第一中间代码;在后续调用执行时,第一中间代码可支持多种执行引擎的运行,从而区块链节点执行第一中间代码时,可以通过内存偏移的方式直接读取所需的信息,跳过寄存器和内存之间的转换步骤,执行即时编译和预先编译。

9、在一种可能的实现方式中,所述第一区块链节点基于当前的执行模式,采用所述第一中间代码进行执行处理,包括:在当前的执行模式为编译执行模式的情况下,利用所述第一中间代码执行编译处理,所述编译执行模式包括:预先编译模式和/或即时编译模式。

10、在一种可能的实现方式中,在当前的执行模式为编译执行模式的情况下,所述利用所述第一中间代码执行编译处理,包括:调用编译执行接口,利用所述第一中间代码执行编译处理。在一种可能的实现方式中,所述第一区块链节点基于当前的执行模式,利用所述第一中间代码进行执行处理包括:在当前的执行模式为解释执行模式的情况下,利用所述第一中间代码执行解释执行处理。在一种可能的实现方式中,在当前的执行模式为解释执行模式的情况下,所述利用所述第一中间代码执行解释执行处理包括:调用解释执行接口,利用所述第一中间代码执行解释执行处理。

11、第一中间代码可以支持区块链节点上不同执行引擎的运行,这种方式可以避免智能合约依据执行引擎的类型进行多次转换,并且可以避免转换的中间代码无法执行,需要回退的情况,可以有效避免资源浪费。

12、第二方面,本技术实施例提供了一种用于执行智能合约的方法装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块(或单元)。

13、第三方面,本技术实施例提供了一种用于执行智能合约的装置,包括处理器和存储器,所述处理器和所述存储器耦合,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述装置执行本技术实施例第一方面中任意一种实现方式所述的用于执行智能合约的方法。

14、第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述方法的步骤。

15、第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得内存测试装置执行上述第一方面或第一方面的任意可能的实现方式中的方法。可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

16、可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

17、本技术实施例与现有技术相比存在的有益效果是:相较于传统的将智能合约的字节码部署在区块链系统上,需要依据不同区块链节点上加载的执行引擎类型,将智能合约的字节码转换为适配不同执行引擎的要求的中间代码,才能供执行引擎使用的方式,本技术实施例提供的用于执行智能合约的方法,通过在编译第一中间代码的过程中,收集编译和解释所需的信息,并添加进第一中间代码,并将生成的第一中间代码部署在区块链系统上;通过获取区块链系统中的第一区块链节点的具体执行模式,例如预先编译处理、即时编译处理、解释执行处理;第一区块链节点获取第一中间代码,并依据具体的执行模式,直接将第一中间代码输入编译执行引擎和/或解释执行引擎中进行使用。本技术实施例提供的用于执行智能合约的方法,可以跳过依据执行引擎类型生成特定中间代码的步骤。进而,区块链系统无需花费大量时间和算力执行特定中间代码的转换,就可以确保智能合约在不同区块链节点上执行效果一致。并且由于第一中间代码具有普适性,也不会存在因编译处理后获得的机器码得不到硬件支持,造成字节码回退的现象。本技术实施例提供的方法可以有效提高智能合约的执行效率,并且避免了计算资源浪费。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1