CN111563040A - 区块链智能合约代码测试方法及装置 - Google Patents

区块链智能合约代码测试方法及装置 Download PDF

Info

Publication number
CN111563040A
CN111563040A CN202010380904.7A CN202010380904A CN111563040A CN 111563040 A CN111563040 A CN 111563040A CN 202010380904 A CN202010380904 A CN 202010380904A CN 111563040 A CN111563040 A CN 111563040A
Authority
CN
China
Prior art keywords
intelligent contract
code
module
testing
contract code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010380904.7A
Other languages
English (en)
Other versions
CN111563040B (zh
Inventor
夏韵
黄文韬
苏恒
罗强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010380904.7A priority Critical patent/CN111563040B/zh
Publication of CN111563040A publication Critical patent/CN111563040A/zh
Application granted granted Critical
Publication of CN111563040B publication Critical patent/CN111563040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种区块链智能合约代码测试方法及装置,区块链智能合约代码测试方法包括:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;对所述变更集合进行静态分析;利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。

Description

区块链智能合约代码测试方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及区块链技术领,具体涉及一种区块链智能合约代码测试方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在区块链系统开发过程中,智能合约是业务逻辑的核心实现程序,与传统项目的需求相比,智能合约具有人员工作耦合度高、外部协作性强、差错处理要求全面的特点,一旦智能合约代码安全漏洞被利用,极有可能导致加密货币丢失,进而扰乱金融秩序等问题,例如著名的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,该方法具体包括如下内容:
步骤100:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合。
可以理解的是,智能合约(Smart Contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。步骤100在实施时,具体为:根据职能合约代码的版本号(VersionId)确定当前版本以及上一版本,并比较这两个版本得到的变更集Varset。
步骤200:对所述变更集合进行静态分析。
可以理解的是,步骤200中的静态分析是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。静态分析技术向模拟执行的技术发展以能够发现更多传统意义上动态测试才能发现的缺陷,例如符号执行、抽象解释、值依赖分析等等并采用数学约束求解工具进行路径约减或者可达性分析以减少误报增加效率。
另外,需要指出的是,对于通过步骤200中的静态分析(静态分析成功的变更集合)的变更集合才进一步执行步骤300,否则,直接给出测试报告并反馈给客户。
步骤300:利用Concolic方法,根据静态分析结果测试所述智能合约代码。
Concolic方法执行不同于静态代码分析有依赖的规则,而是根据具体代码进行输入参数、输出参数、分支覆盖的检测。
从上述描述可知,本发明实施例提供的区块链智能合约代码测试方法,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。
一实施例中,参见图2,步骤100包括:
步骤101:接收所述智能合约的上架请求或者修改请求。
具体地,提交方通过接入端的在线IDE或者其他方式将智能合约代码上传从而发起上架请求或者修改请求。
步骤102:根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号。
步骤103:根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。
在步骤102以及步骤103中,智能合约代码初始版本是全量代码内容,修改版本是增量代码内容。
一实施例中,参见图3,步骤200包括:
步骤201:根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来。
步骤202:打包所述分功能函数以及所述注释,以形成第一模块文件。
步骤201以及步骤202在实施时,具体为:区块链中的联盟方各个节点提交各方代码准入编码规范,变更集Varset传入之后,抽取import(引用/导入)模块以及需要引入文件。接着,根据代码注释规范和方法编写规范拆分变更集合Varset中的分功能函数func和注释,并且将引入(import)代码和文件合并打包成单个独立的模块module(第一模块文件)。
步骤203:打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件。
在步骤203中,拆分智能合约的对象bean或者struct结构的智能合约属性以及智能合约main主函数,并将两者合并打包成一个module(第二模块文件)。
步骤204:利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。
步骤204中的词法分析是指正则表达式Expression匹配规则、语法分析是指上下文无关语法检测、语义分析是指上下文相关检测、控制流分析是指控制调用有向图分支覆盖检测、污点分析是指基于控制流分析的有向图的攻击检测以及无效代码分析是指基于控制流分析的有向图的孤立叶子节点检测,静态分析结果成功之后将审核结果以及代码管理结果上送至步骤300中(Concolic执行检测节点),静态分析失败的模块不会上送至Concolic执行检测节点检测,而是直接反馈至智能合约审计结果报表节点。
一实施例中,参见图4,步骤300包括:
步骤301:利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。
Concolic执行检测时,对需要外部输入参数的模块随机输入参数,其依据的规则包括边界值设定,包括正确值、错误值以及随机值等等。具体地,首先进行行执行树的设计,先设定快照锚点和恢复锚点,接着,随机输入参数,并采用DFS方式访问分支,且随时在恢复锚点处中断恢复至快照锚点处继续执行主流程。
另外,智能合约代码中的Concolic执行技术,不同于传统的符号执行检测技术,可完整覆盖每个代码模块的所有分支的审计,以及区块链中的联盟各方联合审计,从而可扩大审计范围,加强审计力度,保证审计力度的可靠性。
从上述描述可知,本发明实施例提供的区块链智能合约代码测试方法,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。具体地,本发明具有以下有益效果:
1.智能合约代码基于变更集的模块拆分,将模块随机分发给各个共识节点VP审计,保证联盟各方达成对智能合约代码规范和功能实现的共识;
2.智能合约代码的静态分析技术,有效协助智能合约上架的准入检测,准入规则由联盟各方共同制定,减少误报率;
3.智能合约代码的Concolic执行技术,不同于传统的符号执行检测技术,完整覆盖每个代码模块的所有分支的审计,联盟各方联合审计,扩大审计范围,加强审计力度,保证审计力度的可靠性。
为进一步地说明本方案,本发明以打包后main函数及智能合约属性代码模块为例,提供区块链智能合约代码测试方法及装置的具体应用实例,该具体应用实例具体包括如下内容。
请参考图5,本具体应用实例中的区块链智能合约代码测试装置包括:智能合约接入端、只能合约代码管理节点(智能合约存储节点)、智能合约代码静态分析节点、智能合约Concolic执行检测节点、智能合约审计结果报表节点。
智能合约接入端用于接收智能合约的上架申请和修改申请,同时也用于接收审核结果反馈给智能合约提交方;智能合约代码管理节点主要是用于管理智能合约代码修改历史以及存储各个版本的智能合约,对历史版本进行跟踪分析管理,同时完成智能合约模块的拆解和分发;智能合约静态分析节点收集每个审计节点针对智能合约的业务和规范形成的规则,对提交的智能合约进行静态分析,对于不合规范的智能合约,无需提交给Concolic执行检测节点;Concolic执行检测节点接收随机分配的智能合约模块,通过Concolic执行技术,检测智能合约代码;智能合约审计结果报表收集智能合约代码静态分析节点和智能合约Concolic执行检测节点的审计结果,形成审计报表。
请参考图6,本具体应用实例中的区块链智能合约代码测试装置还包括接入端1、去中心化应用服务器(智能合约代码管理节点)2、智能合约代码静态分析节点3、智能合约Concolic执行检测节点4、智能合约审计结果报表节点5。
所述接入端1用于接收智能合约的上架申请和修改申请,同时,也用于接收审核结果反馈给智能合约提交方,提交方通过接入端的在线IDE或者其他方式将智能合约代码上传,接入智能合约审计系统。所述智能合约代码管理节点2的结构图请参考图7,包括:合约上架请求装置21,主控单元装置22,代码版本管理装置23,代码拆分装置24。其中,代码版本管理装置23包括版本存储模块231以及版本分析模块232;代码拆分装置24进一步包括合约拆分模块242以及合约分发模块241。
智能合约代码管理节点2存储的内容如表1所示:
表1
Figure BDA0002482042390000081
Figure BDA0002482042390000091
智能合约代码静态分析节点3是区块链网络中的模拟节点,一般情况下,该节点不启用共识机制,且包含静态分析所需的由联盟各方提供的分析规则和静态分析算法,具体静态分析模块组成如图8所示,包含词法分析(正则表达式Expresssion匹配规则)、语法分析(上下文无关语法检测)、语义分析(上下文相关检测)、控制流分析(控制调用有向图分支覆盖检测)、污点分析(基于控制流分析的有向图的攻击检测)和无效代码分析(基于控制流分析的有向图的孤立叶子节点检测)模块,静态分析结果成功之后将审核结果以及代码管理结果上送至Concolic执行检测节点4,静态分析失败的模块不会上送至Concolic执行检测节点4检测,而是直接反馈至智能合约审计结果报表节点5。静态分析定义的规则示例如表2所示,包括规则id、规则名、规则检测内容:
表2
RuleId RuleName RuleParse
Rule1 SQLRule 语法检测;避免使用*
Rule2 BrokenNullCheck 报空异常检测
Rule3 EmptyCatchBlock 异常获取检测
Rule4 CloseDBResource 检测数据库资源释放情况
……… ……… ………
所述合约上架请求装置21用于接收合约上架请求,将主控单元装置22返回的合约版本号VersionId、近两次代码比较得到的变更集Varset、分发模块Module与分发节点名NodeId的映射关系表。
所述主控单元装置22用于合约上架请求装置21上传的合约分发给代码版本管理装置23和代码拆分装置24,收集这两个装置返回的结果。
所述代码版本管理装置23主要包括版本存储模块231和版本分析模块232,版本存储模块231对智能合约每次上架申请版本进行存储,且根据合约名、修改次数、修改时间组合形成版本号VersionId,版本分析模块232对合约近两次版本提取变更集Varset;所述代码拆分装置24包括合约拆分模块241和合约分发模块242,合约拆分模块241根据合约代码、变更集Varset和合约编写语言基本规范,拆分变更集涉及的功能模块Module(功能函数),且随机分配给区块链网络中的智能合约代码静态分析节点3,存储分发模块Module内容与分发节点名NodeId(ID)的映射关系表(功能函数与分发节点ID之间的映射)。
参见图9以及图10,本具体应用实例中的区块链智能合约代码测试方法包括:
S1:接收所述智能合约的上架请求或者修改请求。
具体地,接入用户可以通过接入端自带的在线IDE开发智能合约,或者通过其他方式开发,然后上传智能合约内容。
S2:判断上架申请或者修改申请的智能合约是否符合规范。
具体地,接入端接收到智能合约申请,先判断上架申请或者修改申请的智能合约是否符合规范,如果符合则继续执行,否则将其返回给用户,并提醒重新上传。
S3:生成变更集合。
具体地,根据合约存储节点存储上传的合约历史记录,生成近两次记录的变更集Varset。
S4:拆分变更集合。
具体地,进行合约模块Module的打包划分以及合约模块分发,将Varset和Module发送至合约静态分析节点。参见图11,步骤S4进一步包括:
步骤S101:接收变更集Varset(初始版本是全量代码内容,修改版本是增量代码内容)。
步骤S102:基于联盟方各个节点提交各方代码准入编码规范,变更集Varset传入之后,抽取import(引用/导入)模块以及需要import的文件。
步骤S103:根据代码注释规范和方法编写规范拆分Varset中的func和注释,并且将涉及的步骤S102中import代码和文件合并打包成单个独立的module(第一模块文件)。
步骤S104:拆分bean或者struct结构的智能合约属性以及智能合约main主函数,将两者合并打包成一个module(第二模块文件)。
S5:对所述第一模块文件以及所述第二模块文件进行静态分析。
S6:利用所述Concolic方法,对第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。
具体地,随机接收静态分析节点3检测通过的模块代码并进行代码审计,Concolic执行不同于静态代码分析有依赖的规则,而是根据具体代码进行输入参数、输出参数、分支覆盖的检测,这里,以打包的main函数及智能合约属性代码模块为例说明该符号执行的步骤。
主函数代码如下所示:
Figure BDA0002482042390000111
其中,涉及import文件中代码为:
Figure BDA0002482042390000112
Figure BDA0002482042390000121
Concolic执行对以上示例代码首先进行快照锚点和恢复锚点分支的划分,如图12所示。在程序开始之前给程序进行快照锚点设置,即在第7行代码设置快照锚点,所述快照锚点是程序的开始代码,先跳过第9行,第10行和第12行分别设置恢复锚点,所述恢复锚点是可恢复快照锚点的时间点,然而第10行和第12行的条件依赖第9行的计算,即第17行的函数,因此18行和20行分别设置恢复锚点,分别影响第10行和第12行的分支走向,根据锚点的设置以及Concolic的引擎规则,要始终保持属性(stmt,ó,
Figure BDA0002482042390000122
),其中stmt为statement,即下一个分支语句,可以是赋值、条件分支或者跳转,ó表示符号存储,是程序的变量与表达式的关联,
Figure BDA0002482042390000123
是约束,是一个假设的公式,将图12转化为分析树图13所示。如图13所示,分析树的每个节点维持属性(stmt,ó,
Figure BDA0002482042390000124
)。
模块201是代码开始,Concolic执行快照锚点设置,(stmt,ó,
Figure BDA0002482042390000125
)中的状态属性值
Figure BDA0002482042390000126
默认为true,执行代码第6、7、8行进行cc和chaincodename赋值,chaincoename是外部输入参数,concolic执行时,根据边界值随机输入,输入能走向获得最终状态
Figure BDA0002482042390000127
为true的分支以及走向最终状态
Figure BDA0002482042390000128
为false的分支,赋值结束。
模块202设置恢复锚点,其中ó经过模块201的赋值语句或者初始化构造函数发生变化,具体变化内容为ɑ=cc,β=chaincodename,执行第9行,调用子函数chatWithPeer。
模块203设置恢复锚点,是chatWithPeer函数程序执行模块,执行第18行,遇到判断条件chaincodename即β的值是否为空,分两个分支,该模块不影响ó和
Figure BDA0002482042390000129
的值。
模块204设置恢复锚点,是β为空的分支,ó经过该分支不发生变化,但是状态属性
Figure BDA00024820423900001210
由true变为false。
模块205设置恢复锚点,是β不为空的分支,ó的属性ɑ有赋值行为,cc.Name发生变化,cc由cc变为cc’,β和
Figure BDA00024820423900001211
的值不变。
模块206设置恢复锚点,经过202之后,进入主代码分支第10行,判断cc’的属性值Name是否为空,该模块不影响ó和
Figure BDA00024820423900001212
的值。
模块207设置恢复锚点,是cc’的属性值Name为空的分支,
Figure BDA0002482042390000131
的值变为false,结束主流程。
模块208设置恢复锚点,是cc’的属性值Name不为空的分支,ó的属性ɑ有赋值行为,cc’的属性Value由外部输入参数,cc’的值发生变化,结束主流程。
Concolic执行检测时,对需要外部输入参数的模块随机输入参数,依据的规则主要是边界值设定,包括正确值、错误值、随机值,对图13所示的模块执行树的分支执行顺序采用DFS深度优先方式,分支决策可以在恢复锚点处随机中断,然后恢复至快照锚点部分继续执行主流程。Concolic执行节点审计结束后返回审计结果、审计模块Module内容、审计节点名、审计次数以及审计时间于智能合约审计结果报表节点5。
所述智能合约审计结果报表节点5,主要职责是接收智能合约静态分析节点的审计失败结果3和智能合约Concolic执行检测节点4的审计结果,记录内容包括所有审计失败或者成功的结果、审计失败的原因、审计失败模块Module内容、Module审计次数、审计节点名、审计节点登录用户等信息,整合成报表报告形式返回至接入端节点1。
从上述描述可知,本发明实施例提供的区块链智能合约代码测试方法,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。具体地,本发明具有以下有益效果:
1.智能合约代码基于变更集的模块拆分,将模块随机分发给各个共识节点VP审计,保证联盟各方达成对智能合约代码规范和功能实现的共识;
2.智能合约代码的静态分析技术,有效协助智能合约上架的准入检测,准入规则由联盟各方共同制定,减少误报率;
3.智能合约代码的Concolic执行技术,不同于传统的符号执行检测技术,完整覆盖每个代码模块的所有分支的审计,联盟各方联合审计,扩大审计范围,加强审计力度,保证审计力度的可靠性。
基于同一发明构思,本申请实施例还提供了区块链智能合约代码测试装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于区块链智能合约代码测试装置解决问题的原理与区块链智能合约代码测试方法相似,因此区块链智能合约代码测试装置的实施可以参见区块链智能合约代码测试方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明的实施例提供一种能够实现区块链智能合约代码测试方法的区块链智能合约代码测试装置的具体实施方式,参见图14,区块链智能合约代码测试装置具体包括如下内容:
集合生成单元10,用于根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合。
集合静态分析单元20,用于对所述变更集合进行静态分析。
代码测试单元30,用于利用Concolic方法,根据静态分析结果测试所述智能合约代码。
一实施例中,参见图15,所述集合生成单元10包括:
请求接收模块101,用于接收所述智能合约的上架请求或者修改请求。
版本号确定模块102,用于根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号。
集合生成模块103,用于根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。
一实施例中,参见图16,所述集合静态分析单元20包括:
集合拆分模块201,用于根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来。
第一打包模块202,用于打包所述分功能函数以及所述注释,以形成第一模块文件。
第二打包模块203,用于打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件。
文件静态分析模块204,用于利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。
一实施例中,所述代码测试单元30具体用于利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。
从上述描述可知,本发明实施例提供的区块链智能合约代码测试装置,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。具体地,本发明具有以下有益效果:
1.智能合约代码基于变更集的模块拆分,将模块随机分发给各个共识节点VP审计,保证联盟各方达成对智能合约代码规范和功能实现的共识;
2.智能合约代码的静态分析技术,有效协助智能合约上架的准入检测,准入规则由联盟各方共同制定,减少误报率;
3.智能合约代码的Concolic执行技术,不同于传统的符号执行检测技术,完整覆盖每个代码模块的所有分支的审计,联盟各方联合审计,扩大审计范围,加强审计力度,保证审计力度的可靠性。
本申请的实施例还提供能够实现上述实施例中的区块链智能合约代码测试方法中全部步骤的一种电子设备的具体实施方式,参见图17,电子设备具体包括如下内容:
处理器(processor)1201、存储器(memory)1202、通信接口(CommunicationsInterface)1203和总线1204。
其中,处理器1201、存储器1202、通信接口1203通过总线1204完成相互间的通信;通信接口1203用于实现服务器端设备、接口设备以及用户端设备等相关设备之间的信息传输。
处理器1201用于调用存储器1202中的计算机程序,处理器执行计算机程序时实现上述实施例中的区块链智能合约代码测试方法中的全部步骤,例如,处理器执行计算机程序时实现下述步骤:
步骤100:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合。
步骤200:对所述变更集合进行静态分析。
步骤300:利用Concolic方法,根据静态分析结果测试所述智能合约代码。
从上述描述可知,本申请实施例中的电子设备,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。具体地,本发明具有以下有益效果:
1.智能合约代码基于变更集的模块拆分,将模块随机分发给各个共识节点VP审计,保证联盟各方达成对智能合约代码规范和功能实现的共识;
2.智能合约代码的静态分析技术,有效协助智能合约上架的准入检测,准入规则由联盟各方共同制定,减少误报率;
3.智能合约代码的Concolic执行技术,不同于传统的符号执行检测技术,完整覆盖每个代码模块的所有分支的审计,联盟各方联合审计,扩大审计范围,加强审计力度,保证审计力度的可靠性。
本申请的实施例还提供能够实现上述实施例中的区块链智能合约代码测试方法中全部步骤的一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的区块链智能合约代码测试方法的全部步骤,例如,处理器执行计算机程序时实现下述步骤:
步骤100:根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合。
步骤200:对所述变更集合进行静态分析。
步骤300:利用Concolic方法,根据静态分析结果测试所述智能合约代码。
从上述描述可知,本申请实施例中的计算机可读存储介质,首先根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,接着对所述变更集合进行静态分析,最后利用Concolic方法,根据静态分析结果测试所述智能合约代码。本发明可以高效地、安全地审计区块链中智能合约代码,从而避免智能合约的安全漏洞。本发明实施例提供一种基于静态分析和Concolic执行检测技术的相结合方案,即在专用的测试环境,基于静态分析技术,自定义代码规范规则并检测代码编写漏洞,然后基于变更集拆分打包的智能合约模块,随机分发给各个联盟方进行利用Concolic执行检测技术进行代码安全审计和功能审计,记录每个模块的审计结果,将审计结果进行整合,形成最终审计测试报告,为智能合约准入规范和安全性作保障。具体地,本发明具有以下有益效果:
1.智能合约代码基于变更集的模块拆分,将模块随机分发给各个共识节点VP审计,保证联盟各方达成对智能合约代码规范和功能实现的共识;
2.智能合约代码的静态分析技术,有效协助智能合约上架的准入检测,准入规则由联盟各方共同制定,减少误报率;
3.智能合约代码的Concolic执行技术,不同于传统的符号执行检测技术,完整覆盖每个代码模块的所有分支的审计,联盟各方联合审计,扩大审计范围,加强审计力度,保证审计力度的可靠性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种区块链智能合约代码测试方法,其特征在于,包括:
根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;
对所述变更集合进行静态分析;
利用Concolic方法,根据静态分析结果测试所述智能合约代码。
2.如权利要求1所述的区块链智能合约代码测试方法,其特征在于,所述根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合,包括:
接收所述智能合约的上架请求或者修改请求;
根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号;
根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。
3.如权利要求1所述的区块链智能合约代码测试方法,其特征在于,所述对所述变更集合进行静态分析包括:
根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来;
打包所述分功能函数以及所述注释,以形成第一模块文件;
打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件;
利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。
4.如权利要求3所述的区块链智能合约代码测试方法,其特征在于,所述利用Concolic方法,根据静态分析结果测试所述智能合约代码,包括:
利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。
5.一种区块链智能合约代码测试装置,其特征在于,包括:
集合生成单元,用于根据所述智能合约代码的版本号生成的所述智能合约代码的变更集合;
集合静态分析单元,用于对所述变更集合进行静态分析;
代码测试单元,用于利用Concolic方法,根据静态分析结果测试所述智能合约代码。
6.如权利要求5所述的区块链智能合约代码测试装置,其特征在于,所述集合生成单元包括:
请求接收模块,用于接收所述智能合约的上架请求或者修改请求;
版本号确定模块,用于根据所述上架请求或者所述修改请求确定所述智能合约代码的版本号;
集合生成模块,用于根据所述版本号对应的智能合约代码以及其上一版本的智能合约代码生成所述变更合集。
7.如权利要求5所述的区块链智能合约代码测试装置,其特征在于,所述集合静态分析单元包括:
集合拆分模块,用于根据所述智能合约代码以及所述智能合约代码的编写语言将所述变更集合中的分功能函数、注释、主函数、所述智能合约的对象以及所述智能合约的结构体属性拆分出来;
第一打包模块,用于打包所述分功能函数以及所述注释,以形成第一模块文件;
第二打包模块,用于打包所述主函数、以及所述对象和所述结构体属性的至少一者,以形成第二模块文件;
文件静态分析模块,用于利用词法分析方法、语法分析方法、语义分析方法、控制流分析方法、污点分析方法以及无效代码分析方法对所述第一模块文件以及所述第二模块文件进行静态分析。
8.如权利要求7所述的区块链智能合约代码测试装置,其特征在于,所述代码测试单元具体用于利用所述Concolic方法,对静态分析之后的第一模块文件以及所述第二模块文件进行输入参数检测、输出参数检测以及分支覆盖检测。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述的区块链智能合约代码测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至4任一所述区块链智能合约代码测试方法的计算机程序。
CN202010380904.7A 2020-05-08 2020-05-08 区块链智能合约代码测试方法及装置 Active CN111563040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010380904.7A CN111563040B (zh) 2020-05-08 2020-05-08 区块链智能合约代码测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010380904.7A CN111563040B (zh) 2020-05-08 2020-05-08 区块链智能合约代码测试方法及装置

Publications (2)

Publication Number Publication Date
CN111563040A true CN111563040A (zh) 2020-08-21
CN111563040B CN111563040B (zh) 2023-08-15

Family

ID=72072030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010380904.7A Active CN111563040B (zh) 2020-05-08 2020-05-08 区块链智能合约代码测试方法及装置

Country Status (1)

Country Link
CN (1) CN111563040B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112819621A (zh) * 2021-01-22 2021-05-18 支付宝(杭州)信息技术有限公司 一种智能合约资损测试方法及系统
CN113010409A (zh) * 2020-09-16 2021-06-22 腾讯科技(深圳)有限公司 智能合约测试方法及装置、电子设备、存储介质
CN113190234A (zh) * 2021-05-21 2021-07-30 电子科技大学 针对区块链智能合约函数签名自动化恢复的方法及系统
CN117667676A (zh) * 2023-11-21 2024-03-08 上海金仕达卫宁软件科技有限公司 基于aigc的区块链智能合约ide验证测试方法和系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103538A (zh) * 2011-02-22 2011-06-22 南京航空航天大学 一种基于Agent的码垛机器人控制软件测试方法
CN102799520A (zh) * 2012-06-27 2012-11-28 清华大学 用于源代码配对的静态检查方法及装置
CN108830686A (zh) * 2018-06-08 2018-11-16 中链科技有限公司 一种基于区块链的资产信息处理方法及服务器
CN109117364A (zh) * 2018-07-03 2019-01-01 中国科学院信息工程研究所 一种面向目标的测试用例生成方法及系统
CN109240900A (zh) * 2018-08-16 2019-01-18 北京京东尚科信息技术有限公司 区块链网络服务平台及其智能合约检测方法、存储介质
CN109885479A (zh) * 2019-01-07 2019-06-14 中国人民解放军战略支援部队信息工程大学 基于路径记录截断的软件模糊测试方法及装置
CN110224833A (zh) * 2019-05-20 2019-09-10 深圳壹账通智能科技有限公司 票据数据处理方法和系统
CN110413316A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 面向区块链智能合约的非侵入式测试系统及方法
CN110727948A (zh) * 2019-10-11 2020-01-24 腾讯科技(深圳)有限公司 智能合约审计方法、装置、计算机设备及存储介质
CN110737899A (zh) * 2019-09-24 2020-01-31 暨南大学 一种基于机器学习的智能合约安全漏洞检测方法
US20200112427A1 (en) * 2018-10-09 2020-04-09 International Business Machines Corporation Certifying authenticity of data modifications

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103538A (zh) * 2011-02-22 2011-06-22 南京航空航天大学 一种基于Agent的码垛机器人控制软件测试方法
CN102799520A (zh) * 2012-06-27 2012-11-28 清华大学 用于源代码配对的静态检查方法及装置
CN108830686A (zh) * 2018-06-08 2018-11-16 中链科技有限公司 一种基于区块链的资产信息处理方法及服务器
CN109117364A (zh) * 2018-07-03 2019-01-01 中国科学院信息工程研究所 一种面向目标的测试用例生成方法及系统
CN109240900A (zh) * 2018-08-16 2019-01-18 北京京东尚科信息技术有限公司 区块链网络服务平台及其智能合约检测方法、存储介质
US20200112427A1 (en) * 2018-10-09 2020-04-09 International Business Machines Corporation Certifying authenticity of data modifications
CN109885479A (zh) * 2019-01-07 2019-06-14 中国人民解放军战略支援部队信息工程大学 基于路径记录截断的软件模糊测试方法及装置
CN110224833A (zh) * 2019-05-20 2019-09-10 深圳壹账通智能科技有限公司 票据数据处理方法和系统
CN110413316A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 面向区块链智能合约的非侵入式测试系统及方法
CN110737899A (zh) * 2019-09-24 2020-01-31 暨南大学 一种基于机器学习的智能合约安全漏洞检测方法
CN110727948A (zh) * 2019-10-11 2020-01-24 腾讯科技(深圳)有限公司 智能合约审计方法、装置、计算机设备及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010409A (zh) * 2020-09-16 2021-06-22 腾讯科技(深圳)有限公司 智能合约测试方法及装置、电子设备、存储介质
CN113010409B (zh) * 2020-09-16 2023-09-15 腾讯科技(深圳)有限公司 智能合约测试方法及装置、电子设备、存储介质
CN112819621A (zh) * 2021-01-22 2021-05-18 支付宝(杭州)信息技术有限公司 一种智能合约资损测试方法及系统
CN112819621B (zh) * 2021-01-22 2021-09-24 支付宝(杭州)信息技术有限公司 一种智能合约资损测试方法及系统
CN113190234A (zh) * 2021-05-21 2021-07-30 电子科技大学 针对区块链智能合约函数签名自动化恢复的方法及系统
CN117667676A (zh) * 2023-11-21 2024-03-08 上海金仕达卫宁软件科技有限公司 基于aigc的区块链智能合约ide验证测试方法和系统

Also Published As

Publication number Publication date
CN111563040B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
CN111563040B (zh) 区块链智能合约代码测试方法及装置
Mirakhorli et al. Detecting, tracing, and monitoring architectural tactics in code
Mateescu et al. Adaptation of service protocols using process algebra and on-the-fly reduction techniques
Wang et al. Proving differential privacy with shadow execution
Nelaturu et al. Verified development and deployment of multiple interacting smart contracts with VeriSolid
Combi et al. An algorithm for checking the dynamic controllability of a conditional simple temporal network with uncertainty
Garcia et al. Identifying message flow in distributed event-based systems
Khan et al. Code cloning in smart contracts on the ethereum platform: An extended replication study
Halfond et al. Automated identification of parameter mismatches in web applications
El-Sharkawy et al. Reverse engineering variability in an industrial product line: observations and lessons learned
Nelaturu et al. Correct-by-design interacting smart contracts and a systematic approach for verifying ERC20 and ERC721 contracts with VeriSolid
CN113515303B (zh) 一种项目转型方法、装置和设备
Salaün Generation of service wrapper protocols from choreography specifications
Falcone et al. Fully automated runtime enforcement of component-based systems with formal and sound recovery
Wang et al. Parallel evolutionary test case generation for web applications
Hammami et al. Towards a dynamic testing approach for checking the correctness of ethereum smart contracts
Evrard et al. Automatic distributed code generation from formal models of asynchronous concurrent processes
Auguston Behavior models for software architecture
Yao et al. An improved vulnerability detection system of smart contracts based on symbolic execution
Simmonds et al. Property patterns for runtime monitoring of web service conversations
Kumar et al. Algorithms based on pattern analysis for verification and adapter creation for business process composition
Albers et al. Adaptive on-the-fly changes in distributed processing pipelines
Kuhlmann et al. Modeling and validating Mondex scenarios described in UML and OCL with USE
Katz et al. Semantic aspect interactions and possibly shared join points
Mentis et al. Model checking and code generation for transaction processing software

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant