智能合约执行方法、设备及可读存储介质技术

技术编号:38905558 阅读:9 留言:0更新日期:2023-09-22 14:24
本发明专利技术公开了一种智能合约执行方法、设备及可读存储介质,涉及区块链技术领域。所述智能合约执行方法包括以下步骤:获取智能合约程序,并确定所述智能合约程序中各连续指令段对应的gas值;执行所述智能合约程序,并记录被执行的连续指令段对应的gas值,获得指令段gas值;在所述智能合约程序执行完成后,统计所述指令段gas值,获得所述智能合约程序对应的本次消耗gas值。本发明专利技术通过将现有逐一计算每一个操作指令的gas值的方式,优化为计算一段连续执行的操作指令的gas值,提高了统计执行智能合约时消耗的gas的效率,也提升了智能合约执行的效率。执行的效率。执行的效率。

【技术实现步骤摘要】
智能合约执行方法、设备及可读存储介质


[0001]本专利技术涉及区块链
,尤其涉及一种智能合约执行方法、设备及可读存储介质。

技术介绍

[0002]随着区块链技术的兴起,智能合约是区块链中不可缺少的一个模块。目前,智能合约执行的每个指令都要收取费用,以防止在区块链网络上的恶意攻击和滥用。
[0003]目前比较流行的EVM(Embedded Virtural Machine,嵌入式虚拟机),是在执行程序的时候,每次执行一条指令,然后查表,记录指令消耗的gas,等程序执行完成之后,统计所有指令消耗的gas。但是,即使是一段普通的程序可能有几百上千条指令,如果执行每一条指令都需要执行这些额外的操作,会造成性能损失,降低了智能合约执行的效率。

技术实现思路

[0004]本专利技术的主要目的在于提供一种智能合约执行方法,旨在解决现有方法中需要逐一计算操作指令消耗的gas,降低了智能合约执行的效率的技术问题。
[0005]为实现上述目的,第一方面,本专利技术提供一种智能合约执行方法,所述智能合约执行方法包括:
[0006]获取智能合约程序,并确定所述智能合约程序中各连续指令段;
[0007]执行所述智能合约程序,并记录被执行的连续指令段对应的gas值,获得指令段gas值;
[0008]在所述智能合约程序执行完成后,统计所述指令段gas值,获得所述智能合约程序对应的本次消耗gas值。
[0009]根据第一方面,在所述获取智能合约程序,并确定所述智能合约程序中各连续指令段的步骤之前,包括:
[0010]获取智能合约程序,并对所述智能合约程序进行解析,获得所述智能合约程序中的函数指令集;
[0011]将所述函数指令集中连续执行的操作指令划分为连续指令段,并在所述连续指令段后插入预设gas函数;
[0012]将插入所述预设gas函数的函数指令集进行打包,获得新的智能合约程序。
[0013]根据第一方面,或者以上第一方面的任意一种实现方式,所述将所述函数指令集中连续执行的操作指令划分为连续指令段的步骤,包括:
[0014]依次对所述函数指令集中的操作指令进行遍历,并按照所述智能合约程序的基础控制结构,识别出所述基础控制结构对应的操作指令;
[0015]将所述基础控制结构对应的操作指令判定为连续执行的操作指令,并将所述连续执行的操作指令作为连续指令段。
[0016]根据第一方面,或者以上第一方面的任意一种实现方式,按照所述智能合约程序
的基础控制结构,识别出所述基础控制结构对应的操作指令的步骤,还包括:
[0017]在遍历到所述基础控制结构对应的起始操作指令后,判断是先遍历到结束操作指令还是先遍历到预设跳转指令;
[0018]若是先遍历到预设跳转指令,则将以所述起始操作指令为起点,以所述跳转操作指令为终点的所有操作指令作为所述基础控制结构对应的操作指令;
[0019]若是先遍历到结束操作指令,将根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令。
[0020]根据第一方面,或者以上第一方面的任意一种实现方式,所述基础控制结构包括顺序结构,所述根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令的步骤,包括:
[0021]在遍历到所述顺序结构对应的第一起始操作指令后,确定所述第一起始操作指令后的首个第一结束操作指令;
[0022]将以所述第一起始操作指令为起点,以所述第一结束操作指令为终点的所有操作指令作为所述顺序结构对应的操作指令。
[0023]根据第一方面,或者以上第一方面的任意一种实现方式,所述基础控制结构包括循环结构,所述根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令的步骤,还包括:
[0024]在遍历到所述循环结构对应的第二起始操作指令后,确定所述第二起始操作指令后的首个第二结束操作指令;
[0025]将以所述第二起始操作指令为起点,以所述第二结束操作指令为终点的所有操作指令作为所述循环结构对应的操作指令。
[0026]根据第一方面,或者以上第一方面的任意一种实现方式,所述基础控制结构包括分支结构,所述根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令的步骤,还包括:
[0027]在遍历到所述分支结构对应的第三起始操作指令后,确定所述第三起始操作指令后的首个分支操作指令;
[0028]将以所述第三起始操作指令为起点,以所述分支操作指令为终点的所有操作指令作为第一分支操作指令;
[0029]遍历到所述分支操作指令后的首个第三结束操作指令;
[0030]将以所述分支操作指令为起点,以第三结束操作指令为终点的所有操作指令作为第二分支操作指令;
[0031]将所述第一分支操作指令和所述第二分支操作指令作为所述分支结构对应的操作指令。
[0032]根据第一方面,或者以上第一方面的任意一种实现方式,所述执行所述智能合约程序,并记录被执行的连续指令段对应的gas值,获得指令段gas值的步骤,包括:
[0033]在执行所述智能合约程序中的连续指令段后,基于所述连续指令段对应的预设gas函数,查询得到所述连续指令段对应的gas值;
[0034]记录所述连续指令段对应的gas值,获得指令段gas值。
[0035]第二方面,本专利技术提供了一种智能合约执行装置,所述智能合约执行装置包括:
[0036]获取模块,用于获取智能合约程序,并确定所述智能合约程序中各连续指令段;
[0037]执行模块,用于执行所述智能合约程序,并记录被执行的连续指令段对应的gas值,获得指令段gas值;
[0038]统计模块,用于在所述智能合约程序执行完成后,统计所述指令段gas值,获得所述智能合约程序对应的本次消耗gas值。
[0039]根据第二方面,所述智能合约执行装置还包括:程序重构模块;程序重构模块,用于:
[0040]获取智能合约程序,并对所述智能合约程序进行解析,获得所述智能合约程序中的函数指令集;
[0041]将所述函数指令集中连续执行的操作指令划分为连续指令段,并在所述连续指令段后插入预设gas函数;
[0042]将插入所述预设gas函数的函数指令集进行打包,获得新的智能合约程序。
[0043]根据第二方面,或者以上第二方面的任意一种实现方式,程序重构模块还包括指令划分模块;指令划分模块,用于:
[0044]依次对所述函数指令集中的操作指令进行遍历,并按照所述智能合约程序的基础控制结构,识别出所述基础控制结构对应的操作指令;
[0045]将所述基础控制结构对应的操作指令判定为连续执行的操作指令,并将所述连续执行的操作指令作为连续指令段。
[0046]根据第二方面,或者以上第二方面的任意一种实现方式,指令划分模块,还用于:
[0047]在遍历本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约执行方法,其特征在于,所述智能合约执行方法包括以下步骤:获取智能合约程序,并确定所述智能合约程序中各连续指令段;执行所述智能合约程序,并记录被执行的连续指令段对应的gas值,获得指令段gas值;在所述智能合约程序执行完成后,统计所述指令段gas值,获得所述智能合约程序对应的本次消耗gas值。2.如权利要求1所述的智能合约执行方法,其特征在于,在所述获取智能合约程序,并确定所述智能合约程序中各连续指令段的步骤之前,包括:获取智能合约程序,并对所述智能合约程序进行解析,获得所述智能合约程序中的函数指令集;将所述函数指令集中连续执行的操作指令划分为连续指令段,并在所述连续指令段后插入预设gas函数;将插入所述预设gas函数的函数指令集进行打包,获得新的智能合约程序。3.如权利要求2所述的智能合约执行方法,其特征在于,所述将所述函数指令集中连续执行的操作指令划分为连续指令段的步骤,包括:依次对所述函数指令集中的操作指令进行遍历,并按照所述智能合约程序的基础控制结构,识别出所述基础控制结构对应的操作指令;将所述基础控制结构对应的操作指令判定为连续执行的操作指令,并将所述连续执行的操作指令作为连续指令段。4.如权利要求3所述的智能合约执行方法,其特征在于,按照所述智能合约程序的基础控制结构,识别出所述基础控制结构对应的操作指令的步骤,还包括:在遍历到所述基础控制结构对应的起始操作指令后,判断是先遍历到结束操作指令还是先遍历到预设跳转指令;若是先遍历到预设跳转指令,则将以所述起始操作指令为起点,以所述跳转操作指令为终点的所有操作指令作为所述基础控制结构对应的操作指令;若是先遍历到结束操作指令,将根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令。5.如权利要求4所述的智能合约执行方法,其特征在于,所述基础控制结构包括顺序结构,所述根据所述起始操作指令和所述结束操作指令,确定所述基础控制结构对应的操作指令的步骤,包括:在遍历到所述顺序结构对应的第一起始操作指令后,确定所述第一起始操作指令后的首个第一结束操作指令;将以所述第一起始操作指令为起...

【专利技术属性】
技术研发人员:许强张骁商松桂宏昱王恩凯田翔沈书航庞同庆简海波宋慧敏
申请(专利权)人:无锡吉利区块链科技有限公司
类型:发明
国别省市:

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

1