CN112967059A - 一种测试资损监控系统的变异智能合约生成方法和系统 - Google Patents
一种测试资损监控系统的变异智能合约生成方法和系统 Download PDFInfo
- Publication number
- CN112967059A CN112967059A CN202110537826.1A CN202110537826A CN112967059A CN 112967059 A CN112967059 A CN 112967059A CN 202110537826 A CN202110537826 A CN 202110537826A CN 112967059 A CN112967059 A CN 112967059A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- instructions
- contract
- testing
- variant
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书实施例公开了一种测试资损监控系统的变异智能合约生成方法和系统。其中,该方法包括:获取测试用智能合约,以及测试智能合约中的一个或多个资金变量;确定能够改变资金变量在世界状态中的取值的函数;将测试用智能合约中调用函数的指令作为目标指令集中的指令;对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
Description
技术领域
本说明书涉及区块链技术领域,特别涉及一种测试资损监控系统的变异智能合约生成方法和系统。
背景技术
智能合约是指由计算机程序定义并自动执行的承诺协议,其可以部署于区块链网络中的节点上,运行在虚拟机环境中。在一些区块链应用场景中,智能合约通常具有金融属性,因此,当智能合约存在缺陷时,其在执行的交易时可能会导致资金损失(即资损)。
通常,可以通过资损监控系统对智能合约执行所产生的交易数据进行处理,以监控智能合约的执行是否发生了资损。
因此,有必要提出一种测试资损监控系统的变异智能合约生成方法和系统,以通过获取的变异智能合约来测试资损监控系统的完备性和有效性,保证正式应用的资损监控系统能准确判断合约是否发生了资损。
发明内容
本说明书实施例的一个方面提供一种测试资损监控系统的变异智能合约生成方法。该述方法包括:获取测试用智能合约,以及所述测试智能合约中的一个或多个资金变量;确定能够改变资金变量在世界状态中的取值的函数;将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令;对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
本说明书实施例的另一个方面提供一种测试资损监控系统的变异智能合约获取系统。该系统包括:第一合约获取模块,用于获取测试用智能合约;资金变量获取模块,用于获取所述测试用智能合约中的一个或多个资金变量;函数确定模块,用于确定能够改变资金变量在世界状态中的取值的函数;指令确定模块,用于将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令;指令修改模块,用于对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
本说明书实施例的另一个方面提供一种智能合约资损监控系统的测试方法,所述资损监控系统用于基于智能合约执行而产生的交易数据进行资损监控,该方法包括:获取变异智能合约;其中,所述变异智能合约基于如上所述的测试资损监控系统的变异智能合约生成方法确定;执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果;基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。
本说明书实施例的另一个方面提供一种智能合约资损监控系统的测试系统,所述资损监控系统用于基于智能合约执行而产生的交易数据进行资损监控,该测试系统包括:第二合约获取模块,可以用于获取变异智能合约;其中,所述变异智能合约基于如上所述的测试资损监控系统的变异智能合约生成方法确定;合约执行模块,可以用于执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果;性能确定模块,可以用于基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。
本说明书实施例的另一个方面提供一种测试资损监控系统的变异智能合约获取装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现测试资损监控系统的变异智能合约生成方法。
本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行测试资损监控系统的变异智能合约生成方法。
本说明书实施例的另一个方面提供一种智能合约资损监控系统的测试装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现智能合约资损监控系统的测试方法。
本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行智能合约资损监控系统的测试方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书的一些实施例所示的区块链网络的示例性示意图;
图2是根据本说明书一些实施例所示的测试资损监控系统的变异智能合约生成方法的示例性流程图;
图3是根据本说明书一些实施例的利用污点分析技术获取新增指令的示例性流程图;
图4是根据本说明书的一些实施例所示的智能合约资损监控系统的测试方法的流程图;
图5是根据本说明书一些实施例所示的测试资损监控系统的变异智能合约获取系统的示例性模块图;
图6是根据本说明书一些实施例所示的智能合约资损监控系统的测试系统的示例性模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
区块链是分布式、去中心化的数据库,区块链的数据具有不可纂改、全程留痕、可以追溯等特点,被应用于各个数据存证场景。智能合约是指是由计算机程序定义并自动执行的承诺协议。智能合约可以部署于区块链网络中的节点上,运行在虚拟机环境中。智能合约由合约开发者编写并部署,智能合约开发者可以根据需求编写智能合约。智能合约被成功部署后,节点可以接收调用智能合约的交易,并对已部署的智能合约进行执行(调用)。虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个隔离环境中的完整计算机系统。在一些实施例中,虚拟机可以包括但不限于以太坊虚拟机(Embedded VirturalMachine,EVM)、EOS虚拟机(Web Assembly,WASM)、比原链虚拟机(Bottos VirturalMachine,BVM)等。
区块链往往承载着与资金相关的智能合约,通过这些智能合约实现链上的资金处理。如果与资金处理相关的智能合约存在问题,就极易发生资损问题。因此有必要建立资损监控机制,以监控区块链的智能合约的执行是否发生了资损。
在一些实施例中,可以采用资损监控系统,从区块链上获取智能合约运行产生的交易数据,并通过一系列资损监控规则来判断智能合约的运行是否造成了资金损失。可以理解,能否及时监测智能合约在执行交易时是否产生资损,在较大程度上依赖于这些规则是否全面或有效。因此,为了更好地使监测智能合约执行的资损监控系统能够及时完善的发现是否发生资损,需要对资损监控系统进行测试,然而,如何全面有效地实现对系统的测试,是目前亟需解决的问题。
因此,本说明书实施例提出一种测试资损监控系统的变异智能合约生成方法和系统,通过获取与资金处理相关的指令,并对指令进行修改,得到执行时较大概率会产生资损的变异智能合约。通过资损监控系统对变异智能合约执行产生的交易数据进行处理、分析得到资损监控结果,进而判断资损监控系统能否及时准确的监测到资损。以下通过对附图的描述详细阐述本说明书披露的技术方案。
图1是根据本说明书的一些实施例所示的区块链网络的示例性示意图。
如图1所示,区块链网络100可以包括多个区块链节点110和网络120。在一些实施例中,区块链网络100可以是测试用区块链网络,由合约开发者为了测试智能合约(例如,测试智能合约是否会发生资损)和/或测试资损监控系统(例如,测试资损监控系统的完备性和准确性)搭建的区块链环境,其与正式部署应用的区块链网络结构相同,运行机制也相同。可以理解的,由于测试用区块链网络并未真正上线应用,区块链的数据并不是真实使用的,因此,测试用区块链网络的数据是可以更改的。
较为一般的,在区块链中,多个区块链节点110中的每个包括对应的虚拟机。任一节点可以接收上传的合约部署交易,并在运行共识机制后存储相应的智能合约。相应的,任一节点可以接收上传至链(或在链上广播)的合约执行交易,并在运行共识机制后调用(或执行)相应的智能合约以完成交易的执行,交易以及交易执行的结果被写入区块保存到区块链数据中。例如,区块链节点110可以接收合约执行交易,交易中可以包括被调用合约的测试变量和/或其取值,进而将测试变量和/或其取值作为合约的输入参数并执行相应的智能合约以完成交易,执行产生的交易数据被写入区块保存到区块链数据中。在一些实施例中,执行产生的交易数据还可以被输入到资损监控系统以进行资损判断。
共识机制是区块链网络正常运行的必要组件,用于保证各节点保存的区块链数据维持一致。多个节点可以通过运行共识协议,对接收(对应代码的输入)、产生(对应代码的输出或中间结果)的数据和/或执行的操作达成一致,参与共识的节点可称为共识节点。例如,对于新区块涉及的多个交易,各共识节点可以通过运行共识协议对所述多个交易的执行顺序达成一致。
区块链数据(也可称为链上数据)可包括通过共识的区块数据和状态数据(也可称为全局状态或世界状态),区块链数据的写入也被叫作上链。其中,区块数据包括持续生成且按时序链接的区块,各共识节点可通过运行共识协议将新区块上链。共识通过意味着每个共识节点可将相同的数据写入区块或者世界状态。仅作为示例,在一些实施例中,共识通过的条件包括超过预设比例(如2/3)的共识节点同意将新区块上链。状态数据可包括关联于各账户的状态变量或与资金处理相关的变量(或称为资金变量),例如,个人、组织控制的外部账户的余额,又如,合约账户的合约状态。
在一些实施例中,区块链节点110可以是各类计算设备,如膝上型计算机、台式计算机、服务器等等。网络120可以连接区块链网络100的各组成部分,使得各部分之间可以进行通讯。例如,接收交易的节点可以通过网络120在链上广播该交易,又例如,共识节点可以通过网络120完成共识。
网络120可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。
在一些实施例中,资损监控系统可以部署在独立于区块链的处理设备(如资损监控服务器)上,该处理设备可以与区块链具有通信连接,具体可以与区块链某节点具有通信连接,处理设备可以通过监测并拉取链上产生的区块数据,得到智能合约执行交易后产生的交易数据,进行资损监控。在一些实施例中,处理设备也可以是区块链的节点。
图2是根据本说明书一些实施例所示的测试资损监控系统的变异智能合约生成方法的示例性流程图。在一些实施例中,流程200可以由处理设备执行。所述处理设备可以独立于区块链,也可以是区块链节点。执行流程200的处理设备可以与前述资损监控服务器相同,也可以不同。例如,流程200可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程200。流程200可以包括以下操作。
步骤202,获取测试用智能合约。在一些实施例中,步骤202可以由第一合约获取模块510执行。
智能合约是指由计算机程序定义并自动执行的承诺协议。测试用智能合约是指可以用于测试资损监控系统性能的智能合约。测试资损监控系统也即测试资损监控系统能否准确监测智能合约的执行是否发生了资损。
智能合约是合约开发者按照需求编写的可由计算机执行的程序。在一些实施例中,智能合约可以通过高级语言编写而成,例如,C语言、C++语言、java语言或VC++语言等。
在一些实施例中,智能合约可以包含一组代码,一组代码可以包括多个代码段,即智能合约可以包括多个代码段。代码段是指一组代码中的由一行或多行代码组成的代码片段,一个代码段可以对应智能合约中的一个指令或一个功能。
在一些实施例中,智能合约中的不同代码段可以由不同的指令组成或者实现不同的功能。例如,智能合约的一个代码段A:FILE*p_file =fopen("1.txt","w")实现读取文件的功能,智能合约的另一个代码段B:if(p_file){for(num=0;num<=4;num ++){fprintf(p_file,“%d-”,arr[num]);}实现存储数据的功能,其中p_file表示文件指针。
在一些实施例中,为了便于获取与智能合约中与资金处理相关的指令以对资损监控系统进行测试,减少流程的复杂性和提高通用性,可以在更加通用的中间语言层面对测试用智能合约进行变异(或修改)。在一些实施例中,测试用智能合约可能是通过高级语言编写,因此,在获取到测试用智能合约后,可以对其进行编译得到中间语言形式的智能合约,然后在中间语言层面对智能合约进行后续步骤的处理。进而可以将不同高级语言编写的智能合约转换到中间语言层面,并使用同样的步骤进行变异处理,使得变异处理更加通用、高效。在一些实施例中,中间语言可以包括LLVM语言等。在中间语言层面对智能合约进行变异后,可以进一步对中间语言形式的变异智能合约进行编译,得到虚拟机可以直接执行的字节码或低级的机器语言。
在一些实施例中,处理设备可以从存储区块链智能合约相关数据的空间中获取测试用智能合约,也可以通过终端上传获取测试用智能合约。本说明书实施例不对测试用智能合约的获取方式做任何限制。
步骤204,获取所述智能合约中的一个或多个资金变量。在一些实施例中,步骤204可以由资金变量获取模块520执行。
资金变量是指智能合约中与资金处理相关的变量。仅作为示例,与资金处理相关的资金变量可以包括资金转账操作或者资金金额运算涉及的变量,例如质押资产变量、返还资产变量、资产账本变量等等。
变量是指能够存储或代表智能合约中参与运算或处理的数据的抽象概念。变量可以包括变量值、变量名称、变量类型等要素。变量的变量值(或称为取值)可以变化,可以通过变量名称查看变量和/或更改变量值,不同类型的变量可以存储不同类型的数据。例如,可以在智能合约中创建一个名为Amount A的变量,用于存储账户A的账户金额,Amount A的取值即表示金额。在一些实施例中,智能合约可以具有不同类型的变量,例如指针类变量,整型类变量。
在一些实施例中,处理设备可以基于区块链涉及的用户(或资金账户)的资金操作(例如,转账操作、资金金额运算操作)相关的变量(字段)和/或代码确定智能合约中的一个或多个资金变量。
字段可以理解为描述某一特征或对象的数据项。在一些实施例中,资金金额运算涉及的资金变量可以基于与资金金额计算相关的字段确定。例如,用户A向用户B转账,则资金转账操作涉及的变量可以包括“from”字段、“to”字段以及“value”字段等对应的变量;其中,“from”字段表示转账发起者,其内容可以是“用户A”的账户地址;“to”字段表示转账接收者,如“用户B”的账户地址,“value”字段表示转账金额。在一些实施例中,变量可以与字段互换。
在一些实施例中,可以基于预先定义好的智能合约数据结构确定一个或多个资金变量。具体的,智能合约编写人员可以预先定义智能合约数据结构,然后基于定义好的智能合约数据结构完成智能合约的编写或功能开发。智能合约数据结构可以预先约定智能合约涉及的主要变量以及使用这些变量的方法或函数。示例性的,智能合约数据结构可以以头文件的形式存储。根据智能合约数据结构可以确定基于此编写的测试用智能合约中的与资金处理相关的一个或多个资金变量。在一些实施例中,也可以人工确定测试用智能合约中的一个或多个资金变量。
步骤206,确定与所述智能合约中的一个或多个资金变量相关的一条或多条指令作为目标指令集中的指令。
指令用于被处理设备(如区块链节点)的处理器执行,其可以包括操作码和操作数。操作码表示该指令应进行什么操作,操作数表示指令的操作对象。操作数可以包括如下类型:整型、字符型、浮点型、数组、指针类型等。在一些实施例中,一行代码可以是一句指令。
与资金处理相关的指令可以包括实现资金转账操作或者资金金额运算的指令,其可以以一个或多个资金变量为基点或“线索”,通过步骤2062和/或步骤2064从测试用智能合约中“追溯”得到。目标指令集是指本说明书揭示的方案所关心的指令的集合,具体可以是通过“追溯”得到的与资金处理或资金变量相关的指令的集合。
在一些实施例中,处理设备可以基于所述智能合约中的一个或多个资金变量,通过寻找资金变量路径、污点分析以及依赖性分析等方式,确定与所述一个或多个资金变量相关的指令作为目标指令集中的指令。
步骤206可以进一步包括步骤2062以及步骤2064,以下是具体说明。
步骤2062,确定能够改变资金变量在世界状态中的取值的函数;将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令。在一些实施例中,步骤2062可以由函数确定模块530执行。
世界状态是指区块链账户的存储状态,包含所有账户的基本存储状态和合约账户的内部存储状态。世界状态可以描述当前的基本存储状态,经过执行智能合约,世界状态可能发生改变进入另外一个新的世界状态。
在一些实施例中,资金变量的取值会在世界状态中进行存储。例如,可以通过执行某些设定的函数将资金变量的取值写入到世界状态中,又例如,可以通过执行另一些设定的函数对资金变量在世界状态中的取值进行更新。在一些实施例中,可以认为能够将资金变量的取值写入世界状态或者对资金变量在世界状态中的取值进行更新的函数都可以改变资金变量在世界状态中的取值。当智能合约中包含调用前述函数的指令时,智能合约被执行后,这些指令很可能会改变资金变量在世界状态中的取值。
在一些实施例中,可以基于预先定义的智能合约数据结构确定能够改变资金变量在世界状态中的取值的函数。预先定义的函数都具有特定的函数名,例如,将资金变量的取值写入世界状态的函数set amount。在确定能够改变所述资金变量的世界状态的函数后,可以通过文本查找函数名的方式在测试用智能合约中查找包含该函数的指令(即可以调用该函数的指令),并将这些指令可以作为目标指令集中的指令。
可以认为,资损大概率会发生在对资金变量世界状态进行更改的指令处,因此,通过步骤2062找到的指令与资损密切相关。
步骤2064,利用污点分析技术和/或依赖关系分析技术获取与所述目标指令集中的指令相关的指令新增到目标指令集中。在一些实施例中,步骤2064可以由指令确定模块540执行。
污点分析技术是指一种跟踪并分析污点信息在程序中流动的技术。在漏洞分析中,使用污点分析技术将所感兴趣的数据(如程序调用接口的外部输入参数)标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,就可以知道它们是否会影响某些关键的程序指令。
在一些实施例中,通过污点分析技术,可以将所述测试用智能合约的调用接口函数的输入参数作为污点源,利用污点分析技术可以进一步找到与步骤2062中的指令具有关联的一条或多条指令,并作为与资金处理相关的指令,补充到目标指令集中。
关于利用污点分析技术获取与资金处理相关的指令作为目标指令集的新增指令的更多说明,可以参见图3及其相关描述,此处不再赘述。
在一些实施例中,还可以基于目标指令集中已有的指令,通过依赖关系分析技术找到测试用智能合约中与前述指令相关的其他指令,并作为与资金处理相关的指令补充到目标指令集中。依赖关系分析技术可以包括数据赖性分析技术和控制依赖分析技术。
数据依赖是指两行或多行代码(或指令)之间存在数据依赖性。例如,测试用智能合约的第8行代码要用到第4行代码定义的变量amount,则认为第8行代码与第4行代码之间存在数据依赖。通过数据依赖分析可以获得测试用智能合约中与目标指令集合中已有指令具有数据依赖关系的其他指令,进而将所述其他指令添加到目标指令集合中。
控制依赖是指两行或多行代码(或指令)之间存在控制依赖性。例如,测试用智能合约的第12行代码依赖于第9行代码的判断结果,具体的,第9行代码的判断结果为“1”时,会执行到第12行,为“0”时则不会执行到第12行,则认为第9行代码与第12行代码之间存在控制依赖。通过控制依赖可以得到测试用智能合约中与目标指令集合中已有指令具有控制依赖关系的其他指令,进而将所述其他指令添加到目标指令集合中。
利用数据依赖分析技术,可以找到智能合约中被遗漏的可能与资金处理相关指令,利用控制依赖分析技术可以找到各条指令之间的执行逻辑关系,不仅可以进一步地找到被遗漏的指令,还可以得到找到的各条指令之间的逻辑关系,找到的逻辑关系可以用于指导对智能合约的指令的修改,以便变异智能合约中与资金处理相关的指令能被精准触发,提高变异智能合约执行后出现资损的概率。
步骤208,对目标指令集中的一条或多条指令进行修改,得到变异智能合约。在一些实施例中,步骤208可以由指令修改模块550执行。
变异智能合约是指对测试用智能合约对应的目标指令集中的一条或多条指令进行修改后得到的智能合约。可以认为目标指令集中的指令与资金处理密切相关,通过修改这些指令得到的修改后的合约,即变异智能合约,可以对资金的处理逻辑产生错误,变异智能合约有很大的概率会造成资损问题或者产生交易数据异常。通过将变异智能合约作为测试资损监控系统的合约,可以检验出资损监控系统是否能够发现异常。如果经过修改得到的变异智能合约成功触发资损监控系统报警,则继续进行其他更改(例如,修改其他指令或改变修改指令的值)生成新的变异智能合约并重新进行测试。如果不能发现,则资损监控规则可能存在不完备或不准确的情况。对于使用变异智能合约对资损监控系统进行测试的更多描述,可以参见图4及其相关描述,此处不再赘述。
在一些实施例中,对目标指令集中的一条或多条指令的修改包括以下操作中的一种或多种:操作符替换、操作数修改、比较指令操作符替换、常数修改和存储指令值修改。
操作符替换可以是指二元操作符替换,例如,将add(加)操作替换为sub(减)操作。
操作数修改可以是指二元指令的操作数交换,例如,将sub i32 %a、i32 %b修改为sub i32 %b、i32 %a。
比较指令操作符替换是指对比较指令的替换,例如,将icmp eq %a、 i32 %b 修改为icmp ne i32 %a, i32 %b。在一些实施例中,也可以将比较指令操作数进行修改。通过修改比较指令的操作符或操作数可以控制智能合约被执行时,该比较指令下与资金处理相关的分支上的指令被触发,提高资损出现的概率。
常数修改,例如,把常数2替换成常数4。
存储指令值修改可以是指指令的值替换,例如,store i32 %x、 i32* %addr变成store i32 15, i32* %addr。
在一些实施例中,还可以通过其他方式对指令进行修改,在此不一一罗列。
在本说明书实施例中,通过识别智能合约中的能够变更资金变量世界状态的指令,将这些指令作为出发点,结合污点分析、数据依赖分析、控制依赖分析技术进一步确定资金处理所涉及到的可能遗漏的智能合约中的指令,可以确保最大限度的找全测试用智能合约中与资金处理相关的指令。通过对找到的指令进行修改的方式得到变异智能合约,变异智能合约可以用于对资损监控系统进行测试,达到了对区块链智能合约资损规则可信性进行评估的目的。同时,将智能合约转换为中间语言,在中间语言中对智能合约中的资金变量所涉及的指令进行识别与修改,增加了方案的通用性。
图3是根据本说明书一些实施例的利用污点分析技术获取新增指令的示例性流程图。在一些实施例中,流程300可以由处理设备执行。例如,流程300可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程300。流程300可以包括以下操作。
步骤302,获取所述测试用智能合约的调用接口函数。
调用接口函数可以是指对外(如对区块链用户端)提供的用于调用所述测试用智能合约的函数。其可以包括函数名、输入参数与输出参数。
步骤304,将所述调用接口函数的输入参数作为污点源,利用污点分析技术获取所述测试用智能合约中的与所述输入参数相关的一条或多条指令链路。
污点源可以是指引入到所述智能合约中的不受信任或标记的数据。
指令链路可以用于表示在调用所述智能合约时输入参数所经过的路径与路径上的指令之间的关系。在一些实施例中,指令链路可以包括一条或多条指令。
在一些实施例中,处理设备可以对所述输入参数进行标记并作为污点源,通过识别输入参数在智能合约中的传播路径,确定所述测试用智能合约中与所述输入参数相关的一条或多条指令链路。在一些实施例中,根据输入参数的传播方向,可以通过正向污点分析和逆向污点分析,确定所述一条或多条指令链路。
步骤306,确定所述一条或多条指令链路是否与所述目标指令集具有交集,将具有交集的指令链路中的指令增加到所述目标指令集中。
在一些实施例中,处理设备可以通过确定所述一条或多条指令链路是否与目标指令集中的指令有交集,例如,指令链路与目标指令集中的指令是否有重叠,来确定新增到目标指令集中的指令。例如,有交集的指令链路即可以认为与资金变量具有关联,即,该条指令链路中的指令也可能会影响到资金变量,因此可以将具有交集的指令链路中的指令作为增加到所述目标指令集中的指令。
图4是根据本说明书的一些实施例所示的智能合约资损监控系统的测试方法的流程图。在一些实施例中,流程400可以由处理设备执行。例如,流程400可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程400。流程400可以包括以下操作。
步骤402,获取变异智能合约。在一些实施例中,步骤402可以由第二合约获取模块610执行。
在一些实施例中,处理设备可以按照如本说明书图2和图3及其相关描述所披露的方法获取得到所述变异智能合约。
在一些实施例中,处理设备也可以通过从存储设备、数据库读取或调用接口的方式获取预先通过本说明书实施例所披露的方法得到的变异智能合约。
在一些实施例中,可以通过合约部署交易将变异智能合约部署到区块链上(如测试用区块链)。
步骤404,执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果。在一些实施例中,步骤404可以由合约执行模块620执行。
资损监控结果可以包括资损监控系统是否触发系统报警。资损监控结果可以反映是否监测到资损,例如,变异智能合约执行的对应的交易是否出现资金损失。
在一些实施例中,处理设备可以确定测试变量(例如,变异智能合约的调用接口函数中的输入参数、又或者为测试而预留的与调用接口函数输入参数不同的其他测试变量)及其取值,并向所述变异智能合约的所述测试变量输入所述取值,以触发所述变异智能合约的执行。例如,可以基于所述测试变量及其取值生成合约调用交易,以调用部署于区块链上的变异智能合约。变异智能合约执行后即可产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果。
在一些实施例中,测试变量可以为一个或多个,取值也相应的可以为一个或多个。通过不同的测试变量和其取值,可以触发不同的代码段执行,不断改变测试变量与其取值,可以改变代码执行的覆盖范围,进而达到触发包含修改后的与资金处理相关的指令的目的。
资损监控系统可以对所述交易数据进行处理,得到资损监控结果。
在一些实施例中,资损监控系统可以是运行在处理设备中,以实现资损监控功能的软件或程序。
步骤406,基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。在一些实施例中,步骤406可以由性能确定模块630执行。
在一些实施例中,若资损监控结果能够正确的反映变异智能合约的执行出现了问题,则可以认为智能合约资损监控系统运行正常且能够监测到资损问题,若资损监控结果未能正确的反映变异智能合约的执行出现了问题,则资损监控系统可能存在不完备或不准确的情况。
应当注意的是,上述有关各流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图5是根据本说明书一些实施例所示的测试资损监控系统的变异智能合约获取系统的示例性模块图。如图5所示,系统500可以包括第一合约获取模块510、资金变量获取模块520、函数确定模块530、指令确定模块540和指令修改模块550。
第一合约获取模块510可以用于获取测试用智能合约。
在一些实施例中,第一合约获取模块510可以从存储区块链智能合约相关数据的空间中获取测试用智能合约,也可以通过终端上传获取测试用智能合约。本说明书实施例不对测试用智能合约的获取方式做任何限制。
资金变量获取模块520可以用于获取所述智能合约中的一个或多个资金变量。
在一些实施例中,资金变量获取模块520可以基于预先定义好的智能合约数据结构确定一个或多个资金变量。具体的,智能合约编写人员可以预先定义智能合约数据结构,然后基于定义好的智能合约数据结构完成智能合约的编写或功能开发。智能合约数据结构可以预先约定智能合约涉及的主要变量以及使用这些变量的方法或函数。示例性的,智能合约数据结构可以以头文件的形式存储。根据智能合约数据结构可以确定基于此编写的测试用智能合约中的与资金处理相关的一个或多个资金变量。在一些实施例中,也可以人工确定测试用智能合约中的一个或多个资金变量。
函数确定模块530可以用于确定能够改变所述资金变量的世界状态的函数。
在一些实施例中,函数确定模块530可以基于预先定义的智能合约数据结构确定能够改变资金变量在世界状态中的取值的函数。
指令确定模块540可以将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令。
在一些实施例中,指令确定模块540可以获取所述测试用智能合约的调用接口函数;将所述调用接口函数的输入参数作为污点源,利用污点分析技术获取所述测试用智能合约中的与所述输入参数相关的一条或多条指令链路;所述指令链路包括一条或多条指令;确定所述一条或多条指令链路是否与所述目标指令集具有交集,将具有交集的指令链路中的指令增加到所述目标指令集中。
在一些实施例中,指令确定模块540可以通过数据依赖分析技术和/或控制依赖分析技术获取所述测试用智能合约中的与所述目标指令集中的指令具有数据依赖关系和/或控制依赖关系的指令,并增加到所述目标指令集中。
指令修改模块550可以用于对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
在一些实施例中,指令修改模块550对目标指令集中的一条或多条指令的修改包括以下中的一种或多种:操作符替换、操作数修改、比较指令操作符替换、常数修改和存储指令值修改。
图6是根据本说明书一些实施例所示的智能合约资损监控系统的测试系统的示例性模块图。如图6所示,系统600可以包括第二合约获取模块610、合约执行模块620和性能确定模块630。
第二合约获取模块610可以用于获取变异智能合约。
在一些实施例中,第二合约获取模块610可以按照如本说明书实施例所披露的变异智能合约生成方法获取得到所述变异智能合约。
在一些实施例中,第二合约获取模块610也可以通过从存储设备、数据库读取或调用接口的方式获取预先通过本说明书实施例所披露的方法得到的变异智能合约。
在一些实施例中,第二合约获取模块610可以通过合约部署交易将变异智能合约部署到区块链上(如测试用区块链)。
合约执行模块620可以用于执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果。
在一些实施例中,合约执行模块620可以确定测试变量(例如,变异智能合约的调用接口函数中的输入参数、又或者为测试而预留的与调用接口函数输入参数不同的其他测试变量)及其取值,并向所述变异智能合约的所述测试变量输入所述取值,以触发所述变异智能合约的执行。
性能确定模块630可以用于基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。
在一些实施例中,若资损监控结果能够正确的反映变异智能合约的执行出现了问题,则可以认为智能合约资损监控系统运行正常且能够监测到资损问题,若资损监控结果未能正确的反映变异智能合约的执行出现了问题,则资损监控系统可能存在不完备或不准确的情况。
关于以上所示的系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图2至图4的相关说明。
应当理解,图5和图6所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于各系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一合约获取模块510、资金变量获取模块520、函数确定模块530、指令确定模块540和指令修改模块550可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,指令确定模块540和指令修改模块550可以是两个模块,也可以是一个模块同时具有确定和修改功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)识别测试用智能合约中的能够更改资金变量世界状态的指令,以这些指令为基础,利用污点分析、数据依赖分析、控制依赖分析技术进一步确定资金处理所涉及到的可能遗漏的智能合约中的指令,可以提高找到的指令的完备性;(2)将智能合约转换为中间语言,在中间语言中对智能合约中的资金变量所涉及的指令进行识别,增加了方案的通用性;(3)通过对智能合约进行修改得到的变异智能合约对资损监控系统测试,可以及时发现资损监控系统可能存在的不完备或不准确情况,提升了资损监控系统的可信性。
需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (12)
1.一种测试资损监控系统的变异智能合约生成方法,所述方法包括:
获取测试用智能合约,以及所述测试用智能合约中的一个或多个资金变量;
确定能够改变资金变量在世界状态中的取值的函数;
将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令;
对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
2.根据权利要求1所述的方法,还包括:
获取所述测试用智能合约的调用接口函数;
将所述调用接口函数的输入参数作为污点源,利用污点分析技术获取所述测试用智能合约中的与所述输入参数相关的一条或多条指令链路;所述指令链路包括一条或多条指令;
确定所述一条或多条指令链路是否与所述目标指令集具有交集,将具有交集的指令链路中的指令增加到所述目标指令集中。
3.根据权利要求1或2所述的方法,还包括:
通过数据依赖分析技术和/或控制依赖分析技术获取所述测试用智能合约中的与所述目标指令集中的指令具有数据依赖关系和/或控制依赖关系的指令,并增加到所述目标指令集中。
4.根据权利要求1所述的方法,对目标指令集中的一条或多条指令的修改包括以下中的一种或多种:操作符替换、操作数修改、比较指令操作符替换、常数修改和存储指令值修改。
5.根据权利要求1所述的方法,所述测试用智能合约为中间语言形式的智能合约;所述中间语言包括LLVM语言。
6.一种测试资损监控系统的变异智能合约生成系统,所述系统包括:
第一合约获取模块,用于获取测试用智能合约;
资金变量获取模块,用于获取所述测试用智能合约中的一个或多个资金变量;
函数确定模块,用于确定能够改变资金变量在世界状态中的取值的函数;
指令确定模块,用于将所述测试用智能合约中调用所述函数的指令作为目标指令集中的指令;
指令修改模块,用于对目标指令集中的一条或多条指令进行修改,得到变异智能合约。
7.一种测试资损监控系统的变异智能合约生成装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行如权利要求1-5任一项所述的方法。
9.一种智能合约资损监控系统的测试方法,所述资损监控系统用于基于智能合约执行而产生的交易数据进行资损监控,所述方法包括:
获取变异智能合约;其中,所述变异智能合约基于如权利要求1-5任一项所述的方法确定;
执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果;
基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。
10.一种智能合约资损监控系统的测试系统,所述资损监控系统用于基于智能合约执行而产生的交易数据进行资损监控,所述测试系统包括:
第二合约获取模块,用于获取变异智能合约;其中,所述变异智能合约基于如权利要求1-5任一项所述的方法确定;
合约执行模块,用于执行所述变异智能合约,以产生交易数据供所述智能合约资损监控系统处理并得到资损监控结果;
性能确定模块,用于基于所述资损监控结果确定所述智能合约资损监控系统的监测性能。
11.一种智能合约资损监控系统的测试装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求9所述的方法。
12.一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行如权利要求9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110537826.1A CN112967059A (zh) | 2021-05-18 | 2021-05-18 | 一种测试资损监控系统的变异智能合约生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110537826.1A CN112967059A (zh) | 2021-05-18 | 2021-05-18 | 一种测试资损监控系统的变异智能合约生成方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112967059A true CN112967059A (zh) | 2021-06-15 |
Family
ID=76279810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110537826.1A Pending CN112967059A (zh) | 2021-05-18 | 2021-05-18 | 一种测试资损监控系统的变异智能合约生成方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112967059A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113504940A (zh) * | 2021-07-28 | 2021-10-15 | 电子科技大学 | 一种改善智能合约字节码逆向工程效果的方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019921A (zh) * | 2011-09-20 | 2013-04-03 | 中国人民解放军63928部队 | 一种基于故障注入的操作系统容错性测试系统及其方法 |
US20140013164A1 (en) * | 2012-07-05 | 2014-01-09 | Electronics & Telecommunications Research Institute | Fault-based software testing method and system |
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN105302719A (zh) * | 2015-10-26 | 2016-02-03 | 北京科技大学 | 一种变异测试方法及装置 |
CN107247663A (zh) * | 2017-05-11 | 2017-10-13 | 北京科技大学 | 一种冗余变异体识别方法 |
CN110287002A (zh) * | 2019-06-19 | 2019-09-27 | 清华大学 | 一种以太坊虚拟机缺陷检测方法及系统 |
CN112286828A (zh) * | 2020-12-24 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
-
2021
- 2021-05-18 CN CN202110537826.1A patent/CN112967059A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019921A (zh) * | 2011-09-20 | 2013-04-03 | 中国人民解放军63928部队 | 一种基于故障注入的操作系统容错性测试系统及其方法 |
US20140013164A1 (en) * | 2012-07-05 | 2014-01-09 | Electronics & Telecommunications Research Institute | Fault-based software testing method and system |
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN105302719A (zh) * | 2015-10-26 | 2016-02-03 | 北京科技大学 | 一种变异测试方法及装置 |
CN107247663A (zh) * | 2017-05-11 | 2017-10-13 | 北京科技大学 | 一种冗余变异体识别方法 |
CN110287002A (zh) * | 2019-06-19 | 2019-09-27 | 清华大学 | 一种以太坊虚拟机缺陷检测方法及系统 |
CN112286828A (zh) * | 2020-12-24 | 2021-01-29 | 支付宝(杭州)信息技术有限公司 | 一种区块链智能合约的测试方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113504940A (zh) * | 2021-07-28 | 2021-10-15 | 电子科技大学 | 一种改善智能合约字节码逆向工程效果的方法及装置 |
CN113504940B (zh) * | 2021-07-28 | 2023-04-07 | 电子科技大学 | 一种改善智能合约字节码逆向工程效果的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423522B2 (en) | System and method for detecting an error in software | |
US10657025B2 (en) | Systems and methods for dynamically identifying data arguments and instrumenting source code | |
CN111796831B (zh) | 一种多芯片兼容的编译方法和装置 | |
US20170192880A1 (en) | Defect prediction | |
US20240061680A1 (en) | Methods and Apparatus for Finding Long Methods in Code | |
US10628286B1 (en) | Systems and methods for dynamically identifying program control flow and instrumenting source code | |
CN112286828B (zh) | 一种区块链智能合约的测试方法和系统 | |
Chen et al. | Extracting and studying the Logging-Code-Issue-Introducing changes in Java-based large-scale open source software systems | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
CN112394942A (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
Sacramento et al. | Web application model generation through reverse engineering and UI pattern inferring | |
CN111813635A (zh) | 一种区块链智能合约的监控方法、系统及装置 | |
JP6976064B2 (ja) | モデルチェックのためのデータ構造抽象化 | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
US9396097B2 (en) | Methods, circuits, devices, systems and associated computer executable code for testing software code | |
CN116009852A (zh) | 代码构建方法、装置、计算机设备及存储介质 | |
US11914993B1 (en) | Example-based synthesis of rules for detecting violations of software coding practices | |
Mehrpour et al. | Can static analysis tools find more defects? a qualitative study of design rule violations found by code review | |
CN112967059A (zh) | 一种测试资损监控系统的变异智能合约生成方法和系统 | |
CN112748950B (zh) | 一种软件代码审查方法及装置 | |
US8291383B1 (en) | Code analysis via dual branch exploration | |
CN112819621B (zh) | 一种智能合约资损测试方法及系统 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
US20230236950A1 (en) | Static source code analysis using explicit feedback and implicit feedback | |
Niranjanamurthy et al. | Functional software testing for web applications in the context of industry |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210615 |
|
RJ01 | Rejection of invention patent application after publication |