一种基于符号执行与模糊的智能合约测试方法技术

技术编号:32586114 阅读:15 留言:0更新日期:2022-03-09 17:19
本发明专利技术公开了一种基于符号执行与模糊的智能合约测试方法,该方法具体包括下述步骤:S01、用户输入智能合约初始测试用例集;S02、执行测试并记录,记录程序的执行路径信息和详细执行信息,并将执行路径信息放入种子池中;S03、更新覆盖信息和报告崩溃;S04、符号执行系统性地搜索,当发现某个分支未被覆盖时,则生成相应的测试用例并加入到测试用例集中;S05、根据种子选择策略选择种子;S06、根据种子变异策略进行变异,变异生成新的测试用例集;S07、重复执行步骤S02

【技术实现步骤摘要】
一种基于符号执行与模糊的智能合约测试方法


[0001]本专利技术属于区块链
,特别涉及一种基于符号执行与模糊的智能合约测试方法。

技术介绍

[0002]区块链保证上链的数据很难被篡改,而且数据在各节点都有存储,节点投票维持一致性。智能合约是区块链的核心技术之一,是多方参与场景中的共识规则,更是智能合约是价值传递的中枢。之所以区块链出现以后安全问题变得前所未有的重要,是因为智能合约实现的是一种价值传递,区块链上的每一个数字都是价值,每个漏洞导致的数字变化,其背后就是巨额的价值损失。糊测试是一种有效的自动化漏洞挖掘技术,主流模糊测试技术采用遗传算法生成测试用例,存在早熟现象,导致路径覆盖率不足。
[0003]基于此,提出一种基于符号执行与模糊的智能合约测试方法,实现智能合约自动化、高效的测试。

技术实现思路

[0004]有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是提供本专利技术针对目前技术发展的需求和不足之处,提供一种基于符号执行与模糊的智能合约测试方法。
[0005]首先,本专利技术提供一种基于符号执行与模糊的智能合约测试方法,解决上述技术问题采用的技术方案如下:
[0006]S01、用户输入智能合约初始测试用例集;
[0007]S02、执行测试并记录,记录程序的执行路径信息和详细执行信息,并将执行路径信息放入种子池中;
[0008]S03、更新覆盖信息和报告崩溃;更新覆盖信息是通过记录测试执行路径来实现,所述步骤S03中报告崩溃,通过收集虚拟机插桩反馈出现崩溃的测试用例来实现。
[0009]S04、符号执行系统性地搜索,当发现某个分支未被覆盖时,则生成相应的测试用例并加入到测试用例集中;
[0010]S05、根据种子选择策略选择种子;
[0011]S06、根据种子变异策略进行变异,变异生成新的测试用例集;
[0012]S07、重复执行步骤S02

S06直到用户手动结束或者当超过一定时间没有产生新的路径后停止测试。
[0013]具体的,所述的一种智能合约模糊测试系统能够使用于各种区块链平台的智能合约。
[0014]具体的,所述步骤S01中初始测试用例集,是人工进行构建,满足智能合约的语法规则。所述步骤S02中记录程序的执行路径信息和详细执行信息,是通过虚拟机插桩实现记录智能合约的运行时状态。所述步骤S03中更新覆盖信息是通过记录测试执行路径来实现。所述步骤S04中符号执行系统性地搜索,搜索方法可以采取不同的策略,如深度优先策略或
者广度优先策略等。所述步骤S05中种子选择策略,可以是随机的方式也可以按照一定规则选取。所述步骤S06中变异策略,可以是遗传算法、生成对抗网络、模拟退火等方法。所述步骤S06中变异生成新的测试用例集,是根据智能合约接口的类型,确定测试用例样本的数据类型,对测试用例样本进行变异操作,生成测试用例变异样本。
附图说明
[0015]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本专利技术的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
[0016]图1为本专利技术所述的一种基于符号执行与模糊的智能合约测试方法流程示意图。
具体实施方式
[0017]为了清晰地阐述本专利技术,使本专利技术实施例的目的、技术方案和优点更加清楚,下面结合了本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,以令本领域技术人员参照说明书文字能够据以实施。下面将附图结合具体实施方式对本专利技术的技术加以详细说明。
[0018]本专利技术本实施例提出一种基于符号执行与模糊的智能合约测试方法,该方法的实现过程包括:
[0019]S01、用户根据智能合约接口描述、参数类型等信息,制定智能合约初始测试用例集;
[0020]S02、将初始测试用例集封装为交易,以交易的形式发布到区块链上进行测试,收集被测智能合约针对测试用例样本的执行结果,根据记录的测试执行路径更新覆盖信息,如果运行结果发现异常,则找到了触发漏洞的测试用例,将执行路径放入种子池中,并记录详细的运行结果;
[0021]S03、通过测试情况更新覆盖信息,并收集虚拟机插桩反馈出现崩溃的路径;
[0022]S04、在完成一个测试用例的处理后,将检查是否符号执行探索到新的未覆盖分支,符号执行采用深度优先的策略进行系统性搜索,当发现某个分支未被覆盖时,则生成相应的测试用例并加入到测试用例集中;
[0023]S05、随机从种子池中选取种子;
[0024]S06、根据智能合约方法协议中的类型列表,确定测试用例样本的数据类型,根据数据类型对应的预设变异方法,使用遗传算法对测试用例样本进行变异操作,检测是否覆盖到新的分支,如果覆盖到新的分支则生成测试用例变异样本加入到测试用例集中;
[0025]S07、重复执行步骤S02

S06直到用户手动结束或者当超过一定时间没有产生新的路径后停止测试。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于符号执行与模糊的智能合约测试方法,其特征在于,该方法的实现过程包括:S01、用户输入智能合约初始测试用例集;S02、执行测试并记录,记录程序的执行路径信息和详细执行信息,并将执行路径信息放入种子池中;S03、更新覆盖信息和报告崩溃;S04、符号执行系统性地搜索,当发现某个分支未被覆盖时,则生成相应的测试用例并加入到测试用例集中;S05、根据种子选择策略选择种子;S06、根据种子变异策略进行变异,变异生成新的测试用例集;S07、重复执行步骤S02

S06直到用户手动结束或者当超过一定时间没有产生新的路径后停止测试。2.根据权利要求1所述的一种智能合约模糊测试系统,其特征在于该系统能够使用于各种区块链平台的智能合约。3.根据权利要求1所述一种基于符号执行与模糊的智能合约测试方法,其特征在于,所述步骤S01中初始测试用例集,是人工进行构建,满足智能合约的语法规则。4.根据权利要求1所述一种基于符号执行与模糊的智能合约测试方法,其特征在于,所述步骤S02中记录程序的执行路径信息和详细执行信息,是通过虚拟...

【专利技术属性】
技术研发人员:王荣蔡维德
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1