一种执行智能合约的方法、装置、电子设备和存储介质制造方法及图纸

技术编号:37563742 阅读:19 留言:0更新日期:2023-05-15 07:44
本申请涉及区块链技术领域,提出一种执行智能合约的方法、装置、电子设备和存储介质。该方法包括:获取智能合约的字节码;将字节码直译为机器码,直译是指将字节码的指令逻辑映射为机器码的指令逻辑;执行机器码,得到智能合约的执行结果。本申请通过直译的方式完成编译,编译时间和编译结果大小受控于字节码本身的大小,使得合约编译能够在线性范围的时间内完成,且获得的编译结果大小可控。且获得的编译结果大小可控。且获得的编译结果大小可控。

【技术实现步骤摘要】
一种执行智能合约的方法、装置、电子设备和存储介质


[0001]本申请涉及区块链
,尤其涉及一种执行智能合约的方法、装置、电子设备和存储介质。

技术介绍

[0002]在区块链
,为了加速执行智能合约,通常会采用AOT(Ahead of Time Compilation,预先编译)编译的方式,预先将智能合约的字节码编译为机器码,然后直接调用机器码执行。然而,现有技术一般是使用各类编译器将字节码编译为机器码,而现有的编译器普遍存在编译时间和编译结果大小不可控的问题。

技术实现思路

[0003]有鉴于此,本申请实施例提供了一种执行智能合约的方法、装置、电子设备和存储介质,能够解决将字节码编译为机器码时存在的编译时间和编译结果大小不可控的问题。
[0004]本申请实施例的第一方面提供了一种执行智能合约的方法,包括:
[0005]获取智能合约的字节码;
[0006]将所述字节码直译为机器码,所述直译指将字节码的指令逻辑映射为机器码的指令逻辑;
[0007]执行所述机器码,得到所述智能合约的执行结果。
[0008]在本申请实施例中,首先获取智能合约的字节码,然后通过直译的方式将字节码转换为机器码,这里的直译是指将字节码的指令逻辑映射为机器码的指令逻辑,最后再执行机器码,从而得到智能合约的执行结果。本申请实施例通过直译的方式完成编译,编译时间和编译结果大小受控于字节码本身的大小,使得合约编译能够在线性范围的时间内完成,且获得的编译结果大小可控。
[0009]在本申请实施例的一种实现方式中,所述将所述字节码直译为机器码,可以包括:
[0010]对所述字节码进行解析,得到所述字节码包含的所有方法体;
[0011]针对每个所述方法体,将所述方法体包含的字节码指令转换为机器码指令,得到所述方法体的机器码序列。
[0012]进一步的,所述将所述方法体包含的字节码指令转换为机器码指令,得到所述方法体的机器码序列,可以包括:
[0013]提取所述方法体包含的字节码指令序列;
[0014]依次将所述字节码指令序列包含的每个字节码指令的指令逻辑转换为机器码指令的指令逻辑,得到所述方法体的机器码序列。
[0015]在本申请实施例的一种实现方式中,在将所述字节码直译为机器码之后,还可以包括:
[0016]将所述字节码存储至区块链账本;
[0017]将所述机器码存储至缓存和/或数据库。
[0018]进一步的,所述执行所述机器码,可以包括:
[0019]若所述缓存中存在所述机器码,则从所述缓存中读取并执行所述机器码;
[0020]若所述缓存中不存在所述机器码,且所述数据库中存在所述机器码,则从所述数据库中读取并执行所述机器码。
[0021]更进一步的,所述执行所述机器码,还可以包括:
[0022]若所述数据库中不存在所述机器码,则从所述区块链账本中读取并执行所述字节码。
[0023]在本申请实施例的一种实现方式中,所述获取智能合约的字节码,可以包括:
[0024]当部署所述智能合约或者首次调用所述智能合约时,获取所述智能合约的字节码。
[0025]本申请实施例的第二方面提供了一种执行智能合约的装置,包括:
[0026]字节码获取模块,用于获取智能合约的字节码;
[0027]直译模块,用于将所述字节码直译为机器码,所述直译指将字节码的指令逻辑映射为机器码的指令逻辑;
[0028]机器码执行模块,用于执行所述机器码,得到所述智能合约的执行结果。
[0029]本申请实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例的第一方面提供的执行智能合约的方法。
[0030]本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例的第一方面提供的执行智能合约的方法。
[0031]本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如本申请实施例的第一方面提供的执行智能合约的方法。
[0032]可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
[0033]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0034]图1是本申请实施例提供的一种执行智能合约的方法的流程图;
[0035]图2是本申请实施例提供的将字节码直译为机器码的操作示意图;
[0036]图3是本申请实施例提供的一种部署智能合约的操作流程图;
[0037]图4是本申请实施例提供的一种调用智能合约的操作流程图;
[0038]图5是本申请实施例提供的一种执行智能合约的装置的结构示意图;
[0039]图6是本申请实施例提供的一种电子设备的示意图。
具体实施方式
[0040]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0041]AOT编译是指在程序运行之前将程序代码预先编译为机器码,然后执行机器码的技术。在区块链系统中,为了加速智能合约的执行效率,可以采用AOT编译的方式将智能合约的字节码编译为机器码,然后直接调用机器码执行。目前,通常使用各类编译器将字节码编译为机器码,然而现有的编译器普遍存在编译时间和编译结果大小不可控的问题。
[0042]有鉴于此,本申请实施例提供了一种执行智能合约的方法,能够通过直译的方式完成编译,从而解决编译时间和编译结果大小不可控的问题。关于本申请实施例更具体的技术实现细节,请参照下文所述的方法实施例。
[0043]请参阅图1,示出了本申请实施例提供的一种执行智能合约的方法,包括:
[0044]101、获取智能合约的字节码;
[0045]应当理解,本方法实施例的执行主体是区块链系统中的任意区块链节点。
[0046]首先,获取智能合约的字节码。用户可以在客户端本地通过高级编程语言编写需要部署的智能合约,将编写好的智能合约编译成字节码,然后将字节码发送至区块链节点。用户也可以直接在区块链节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种执行智能合约的方法,其特征在于,包括:获取智能合约的字节码;将所述字节码直译为机器码,所述直译指将字节码的指令逻辑映射为机器码的指令逻辑;执行所述机器码,得到所述智能合约的执行结果。2.如权利要求1所述的方法,其特征在于,所述将所述字节码直译为机器码,包括:对所述字节码进行解析,得到所述字节码包含的所有方法体;针对每个所述方法体,将所述方法体包含的字节码指令转换为机器码指令,得到所述方法体的机器码序列。3.如权利要求2所述的方法,其特征在于,所述将所述方法体包含的字节码指令转换为机器码指令,得到所述方法体的机器码序列,包括:提取所述方法体包含的字节码指令序列;依次将所述字节码指令序列包含的每个字节码指令的指令逻辑转换为机器码指令的指令逻辑,得到所述方法体的机器码序列。4.如权利要求1所述的方法,其特征在于,在将所述字节码直译为机器码之后,还包括:将所述字节码存储至区块链账本;将所述机器码存储至缓存和/或数据库。5.如权利要求4所述的方法,其特征在于,所述执行所述机器码,包括:若所述缓存中存在所述机器码,则从所述缓存中读取并执行所述机器码;若所述缓存中不存在所...

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

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

1