[发明专利]一种智能合约模糊测试的方法、装置及存储介质有效
申请号: | 202011010716.1 | 申请日: | 2020-09-23 |
公开(公告)号: | CN112131115B | 公开(公告)日: | 2021-06-22 |
发明(设计)人: | 周勇钧 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 李娟 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 模糊 测试 方法 装置 存储 介质 | ||
本申请提供一种智能合约模糊测试的方法、装置及存储介质,涉及区块链技术领域,用以提高区块链中智能合约的安全性,避免不必要的损失。对智能合约进行AST扫描分析,生成智能合约方法协议;结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。
技术领域
本申请涉及区块链技术领域,提供一种智能合约模糊测试的方法、装置及存储介质。
背景技术
智能合约是在区块链网络上执行的程序。与传统程序不同,智能合约部署在区块链之后就没有办法修改了。由于智能合约的开发过程中存在纰漏,导致部署在区块链服务中的智能合约存在安全漏洞,此时任何人都可对智能合约存在的安全漏洞发起攻击,使智能合约频发安全事故,造成不可避免的损失。
发明内容
本申请实施例提供一种智能合约模糊测试的方法、装置及存储介质,用以提高区块链中智能合约的安全性,避免不必要的损失。
第一方面,本申请实施例提供一种智能合约模糊测试的方法,该方法包括:
对智能合约进行AST(Abstract Syntax Tree,抽象语法树)扫描分析,生成智能合约方法协议;
结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;
将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;
在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。
第二方面,本申请实施例提供一种智能合约模糊测试的装置,该装置包括:
第一生成单元,用于对智能合约进行AST扫描分析,生成智能合约方法协议;
第二生成单元,用于结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;
确定单元,用于将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;
执行单元,用于在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。
在一种可能的实现方式中,第一生成单元具体用于:
对被测智能合约进行AST扫描分析,生成AST结构;
通过AST结构提取出智能合约的方法名称、参数名称以及对应的参数类型;
根据智能合约方法名称、参数名称以及对应的参数类型,生成智能合约方法协议。
在一种可能的实现方式中,第二生成单元具体用于:
根据智能合约方法协议中的类型列表,确定测试用例样本中参数的数据类型;
根据数据类型对应的预设变异方法,对测试用例样本进行变异操作,生成测试用例变异样本;
将智能合约方法协议中的智能合约的名称,作为被测智能合约的方法名称;
将测试用例变异样本和被测智能合约的方法名称结合,生成测试用例变异数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011010716.1/2.html,转载请声明来源钻瓜专利网。