区块链智能合约代码测试方法及装置制造方法及图纸

技术编号:25345843 阅读:53 留言:0更新日期:2020-08-21 17:04
本发明专利技术公开了一种区块链智能合约代码测试方法及装置,区块链智能合约代码测试方法包括:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;对所述变更集合进行静态分析;利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明专利技术可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。

【技术实现步骤摘要】
区块链智能合约代码测试方法及装置
本专利技术涉及互联网
,尤其涉及区块链技术领,具体涉及一种区块链智能合约代码测试方法及装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。在区块链系统开发过程中,智能合约是业务逻辑的核心实现程序,与传统项目的需求相比,智能合约具有人员工作耦合度高、外部协作性强、差错处理要求全面的特点,一旦智能合约代码安全漏洞被利用,极有可能导致加密货币丢失,进而扰乱金融秩序等问题,例如著名的DAO安全漏洞事件,即迄今为止最臭名昭著的加密货币攻击事件之一,黑客利用了智能合约中“重入性”盗取了多达5000万美元。因此亟需一种行之有效的智能合约代码的安全审计方法,但审核智能合约代码存在以下问题:对于区块链系统是联盟方多方负责的系统,智能合约的代码测试流程无法像传统软件测试那样由单一机构组织测试验证,只能由外界驱动进行测试,各方需要对智能合约代码完整性进行协商和审计才能保证安全性和满足各方功能要求的完整性。
技术实现思路
本专利技术实施例提供一种区块链智能合约代码测试方法及装置,可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。为解决上述技术问题,本专利技术提供以下技术方案:第一方面,本专利技术提供一种区块链智能合约代码测试方法,包括:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;对所述变更集合进行静态分析;利用Concolic方法,根据静态分析结果测试所述智能合约代码。一实施例中,所述根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,包括:接收所述智能合约的上架请求或者修改请求;根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号;根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。一实施例中,所述对所述变更集合进行静态分析包括:根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来;打包所述分功能函数以及所述注释,以形成第一模块文件;打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件;利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。一实施例中,所述利用Concolic方法,根据静态分析结果测试所述智能合约代码,包括:利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。第二方面,本专利技术提供一种区块链智能合约代码测试装置,该装置包括:集合生成单元,用于根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;集合静态分析单元,用于对所述变更集合进行静态分析;代码测试单元,用于利用Concolic方法,根据静态分析结果测试所述智能合约代码。一实施例中,所述集合生成单元包括:请求接收模块,用于接收所述智能合约的上架请求或者修改请求;版本号确定模块,用于根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号;集合生成模块,用于根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。一实施例中,所述集合静态分析单元包括:集合拆分模块,用于根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来;第一打包模块,用于打包所述分功能函数以及所述注释,以形成第一模块文件;第二打包模块,用于打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件;文件静态分析模块,用于利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。一实施例中,所述代码测试单元具体用于利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。第三方面,本专利技术提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现区块链智能合约代码测试方法的步骤。第四方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现区块链智能合约代码测试方法的步骤。从上述描述可知,本专利技术实施例提供的区块链智能合约代码测试方法及装置,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本专利技术可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本专利技术实施例中提供的区块链智能合约代码测试方法的流程图;图2为本专利技术实施例中区块链智能合约代码测试方法的步骤100的流程示意图;图3为本专利技术实施例中区块链智能合约代码测试方法的步骤200的流程示意图;图4为本专利技术实施例中区块链智能合约代码测试方法的步骤300的流程示意图;图5为本专利技术的具体应用实例中区块链智能合约代码测试装置结构图一;图6为本专利技术的具体应用实例中区块链智能合约代码测试装置结构图二;图7为本专利技术的具体应用实例中区块链智能合约代码管理节点结构图;图8为本专利技术的具体应用实例中区块链智能合约代码静态分析组成示意图;图9为本专利技术的具体应用实例中区块链智能合约代码测试方法的流程示意图;图10为本专利技术的具体应用实例中区块链智能合约代码测试方法的思维导图;图11为本专利技术的具体应用实例中智能合约拆分方法流程示意图;图12为本专利技术的具体应用实例中区块链智能合约代码Concolic执行示意图一;图13为本专利技术的具体应用实例中区块链智能合约代码Concolic执行示意图二;图14为本专利技术实施例中提供的区块链智能合约代码测试装置的架构示意图;图15为本专利技术实施例中提供的集合生成单元框架示意图;图16为本专利技术实施例中提供的集合静态分析单元框架示意图;图17为本专利技术的实施例中的电子设备的结构示意图。具体实施方式...

【技术保护点】
1.一种区块链智能合约代码测试方法,其特征在于,包括:/n根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;/n对所述变更集合进行静态分析;/n利用Concolic方法,根据静态分析结果测试所述智能合约代码。/n

【技术特征摘要】
1.一种区块链智能合约代码测试方法,其特征在于,包括:
根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;
对所述变更集合进行静态分析;
利用Concolic方法,根据静态分析结果测试所述智能合约代码。


2.如权利要求1所述的区块链智能合约代码测试方法,其特征在于,所述根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,包括:
接收所述智能合约的上架请求或者修改请求;
根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号;
根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。


3.如权利要求1所述的区块链智能合约代码测试方法,其特征在于,所述对所述变更集合进行静态分析包括:
根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来;
打包所述分功能函数以及所述注释,以形成第一模块文件;
打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件;
利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。


4.如权利要求3所述的区块链智能合约代码测试方法,其特征在于,所述利用Concolic方法,根据静态分析结果测试所述智能合约代码,包括:
利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。


5.一种区块链智能合约代码测试装置,其特征在于,包括:
集合生成单元,用于根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;
集合静态分析单元,用于对所述变更集合进行静态分析;
...

【专利技术属性】
技术研发人员:夏韵黄文韬苏恒罗强
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

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

1