掌桥专利:专业的专利平台
掌桥专利
首页

一种基于反向有界动态符号执行技术的智能合约优化方法

文献发布时间:2023-06-19 12:10:19


一种基于反向有界动态符号执行技术的智能合约优化方法

技术领域

本发明属于区块链领域,涉及一种对区块链的智能合约优化的方法,具体涉及一种基于反向有界动态符号执行技术的智能合约优化方法。

背景技术

智能合约是一种运行在区块链系统之上且能够根据预设条件自动执行的程序。随着区块链技术的快速发展,智能合约的应用愈来愈多,在已部署的智能合约项目中普遍存在执行效率低下的问题,且该合约可以被无限次调用执行。因此,由效率低下的智能合约在调用时造成的资源浪费已成为一项不容忽视的性能瓶颈问题。

发明内容

为了克服上述现有技术的不足,本发明提供了一种基于反向有界动态符号执行技术的智能合约优化方法,提高智能合约的执行效率,节约区块链节点的存储资源和计算资源,提高合约的执行效率。

本发明是一种基于反向有界动态符号执行技术的智能合约优化方法,该方法包括以下具体步骤:

S1.生成智能合约动态控制流图CFG。

S2.基于所述步骤S1生成的CFG,通过对待检测谓词实施反向有界动态符号执行来检测待检测谓词表达式的不可行性。

S3.若所述步骤S2的结果为不可行,则待检测谓词为不透明谓词,可对该谓词所在条件分支进行剪枝优化。

所述步骤S1中动态控制流图CFG是指根据待检测智能合约生成的该待检测谓词的k步控制流图,该控制流图是由对待检测谓词执行动态路径追踪所得,其尽可能多地会将待检测谓词的所有k步路径前缀涉及到的指令和条件分支包含在内,其中所述k为人为指定的参数,用于指明所述步骤S2中的反向有界动态符号执行的界限。

所述步骤S2中对待检测谓词实施反向有界动态符号执行,其具体的实施步骤为:

S21.由待检测谓词所在位置开始,基于所述步骤S1中的CFG进行反向动态路径追踪,并收集该待检测谓词的所有k步内的路径前缀。

S22.针对步骤S21中某一条特定路径前缀π,计算该路径前缀的符号化路径谓词φ

S23.计算该待检测谓词的总符号化路径谓词

S24.将所述步骤S23所计算的符号化路径谓词表达式作为约束条件添加到SMT求解器(比如Z3)中进行求解,若解集为空集,则证明该待检测谓词表达式具有不可行性,即该待检测谓词为不透明谓词。

所述步骤S3中的剪枝优化具体为:保留该不透明谓词总会执行的条件分支,将确定不会被执行到的该不透明谓词条件分支作为死代码删除。

本发明具有以下优点和有益成果:本发明提供了一种基于反向有界动态符号执行技术的智能合约优化方法,该优化方法通过判断谓词的不可行性来检测一个谓词是否为不透明谓词,并对检测出的不透明谓词进行优化剪枝操作,以达到优化智能合约、节约区块链节点的计算资源和存储资源的目的。

附图说明

图1为本发明提供的一种基于反向有界动态符号执行技术的智能合约优化方法的流程图。

图2为本发明实施例的智能合约控制流图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。本实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。

下面结合附图2对本发明的实施例进一步地说明。如附图2所示,当我们检测位置①处的谓词是否为不透明谓词时,通过检测 x2=y1是否在位置①处为不可行表达式来实现。其具体的实施步骤如下:

(1)假定x2=y1,并反向收集该谓词k步内的路径前缀。

(2)针对全True路径π

(3)类似地,我们将全False路径π

(4)将

(5)保留位置①处谓词的True分支,删除其False分支。

最后说明的是:以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于反向有界动态符号执行技术的智能合约优化方法
  • 一种基于符号执行的WASM智能合约漏洞检测方法
技术分类

06120113195756