CN112148613A - 用于测试区块链服务的智能合约的生成方法及装置 - Google Patents
用于测试区块链服务的智能合约的生成方法及装置 Download PDFInfo
- Publication number
- CN112148613A CN112148613A CN202011042154.9A CN202011042154A CN112148613A CN 112148613 A CN112148613 A CN 112148613A CN 202011042154 A CN202011042154 A CN 202011042154A CN 112148613 A CN112148613 A CN 112148613A
- Authority
- CN
- China
- Prior art keywords
- target
- intelligent contract
- code
- contract
- block chain
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种用于测试区块链服务的智能合约的生成方法及装置,涉及区块链技术领域,用以提升生成带有限制代码的智能合约的效率。该方法包括:确定目标区块链服务对应的合约限制规则;所述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,所述目标智能合约用于测试所述目标区块链服务;从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码;按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约。该方法将自动获取的限制代码转换为目标智能合约,不用人工编码,提升了生成目标智能合约的效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种用于测试区块链服务的智能合约的生成方法及装置。
背景技术
区块链技术中为避免智能合约不加限制的访问区块链服务中的资源,可能会破坏区块链服务中节点的一致性共识的现象发生,可以通过限制代码禁止智能合约访问区块链服务中的特定资源;因此在开发区块链服务或者发布区块链服务前,需要验证或测试区块链服务对带有限制代码的智能合约的服务质量,在上述验证或测试上述区块链服务的过程中,需要由开发者编写大量的带有限制代码的智能合约去测试区块链服务,但上述生成带有限制代码的智能合约消耗时间长,效率低,进而导致测试区块链服务针对带有限制代码的智能合约的服务质量的效率低。
发明内容
本申请实施例提供一种用于测试区块链服务的智能合约的生成方法及装置,用于提升带有限制代码的智能合约的生成效率。
本申请第一方面,提供一种用于测试区块链服务的智能合约的生成方法,包括:
确定目标区块链服务对应的合约限制规则;所述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,所述目标智能合约用于测试所述目标区块链服务;
从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码;
按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约。
本申请第二方面,提供一种用于测试区块链服务的智能合约的生成装置,包括:
限制规则确定单元,用于确定目标区块链服务对应的合约限制规则;所述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,所述目标智能合约用于测试所述目标区块链服务;
限制代码获取单元,用于从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码;
合约生成单元,用于按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约。
在一种可能实现过程,所述合约生成单元具体用于:
对所述限制代码进行预处理操作,得到测试代码,所述预处理操作包括除去所述限制代码中的异常代码的操作;
对所述测试代码进行编译和运行操作,确定出编译且运行成功的测试代码;
按照所述目标区块链服务对应的智能合约编写规范,将确定出的测试代码转换为所述目标智能合约。
在一种可能的实现方式中,所述限制代码获取单元具体用于:
确定与所述目标开发语言关联的目标网站;
通过代码抓取工具,从所述目标网站的示例代码中,抓取与所述合约限制规则匹配的限制代码。
在一种可能的实现方式中,所述合约限制规则包括如下至少一种限制信息:
所述目标开发语言的语法中,与禁止使用所述目标功能对应的语法;
禁止使用所述目标功能的代码功能库。
在一种可能的实现方式中,所述合约生成单元还用于:
将所述目标智能合约发布到所述目标区块链服务中;
根据所述目标智能合约的执行结果,确定所述目标区块链服务针对所述限制代码的服务质量。
本申请第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面及任一种可能的实施方式中任一所述的方法。
本申请第四方面,提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面的各种可能的实现方式中提供的方法。
本申请第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面及任一种可能的实施方式中任一所述的方法。
由于本申请实施例采用上述技术方案,至少具有如下技术效果:
一方面,本申请实施例中按照智能合约编写规范,自动将与合约限制规则匹配的限制代码转换为目标智能合约,即自动生成了带有限制代码的目标智能合约,不需要开发者分析与构造目标智能合约,减少了生成目标智能合约的时间,提升了生成目标智能合约的效率,进一步可以提升测试区块链服务针对目标智能合约的服务质量的效率;
另一方面,本申请实施例中的目标智能合约是将获取的限制代码转换得到的,降低了开发者人工编写目标智能合约的误差和疏漏,提升了生成的目标智能合约的准确度,进而能提升测试区块链服务针对目标智能合约的服务质量的准确度;且生成目标智能合约的过程是自动完成的,避免了认为生成恶意的目标智能合约,从而恶意的目标智能合约影响区块链服务的正常进行的现象,提升了区块链服务的安全性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本申请实施例提供的智能合约的测试方法的应用环境的示意图;
图2为本申请实施例提供的一种区块链服务构成的示例图;
图3为本申请实施例提供的一种用于测试区块链服务的智能合约的生成方法的过程的示意图;
图4为本申请实施例提供的一种生成目标智能合约的完整流程的示意图;
图5为本申请实施例提供的一种利用目标智能合约测试目标区块链服务的测试过程的示例图;
图6为本申请实施例提供的一种用于测试区块链服务的智能合约的生成装置的结构示意图;
图7为本申请实施例提供的一种终端设备的结构图;
图8为本申请实施例提供的一种计算机设备的结构图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、目标区块链服务
待测试的区块链服务,区块链服务又称为区块链(Blockchain)或区块链技术。
2、智能合约
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的目的是提供优于传统合约的安全方法,并减少交易成本。
3、目标智能合约
本申请实施例中的目标智能合约指带有限制代码的智能合约,目标智能合约用于测试与该目标智能合约对应的区块链服务(目标区块链服务)。
4、限制代码
本申请实施例中的限制代码是用于禁止智能合约执行的代码,即目标智能合约中的限制代码会禁止目标智能合约的执行,以防止目标智能合约的执行影响区块链服务的整体共识机制。
5、合约限制规则
本申请实施例中的合约限制规则包括目标区块链服务中,通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息;上述目标开发语言指实现智能合约的编程语言,如可以但不局限于包括C语言、C++语言、Python、Java等中的至少一种编程语言。
6、区块链虚拟机
区块链虚拟机用于识别区块链服务中的智能合约以及运行智能合约;区块链虚拟机本质上是一个代码的运行环境,从而保证区块链服务中节点的一致性共识;如以太坊区块链的以太坊虚拟机EVM,以太坊虚拟机EVM是以太坊区块链中的智能合约的运行环境。
7、智能合约编写规范
智能合约编写规范指编写应用于区块链服务中的智能合约的规范(或准则),本申请实施例中不同的区块链服务的智能合约编写规则可以不同,可以预先根据对应的区块链服务的特性或功能灵活设置智能合约编写规范;如智能合约编写规范中的内容中可以但不局于包括智能合约中需要部署函数或析构函数,或者标明对智能合约中的方法(或函数)的命名的要求,如以太坊区块链中的智能合约编写规范中可以包括:需要在智能合约的首行代码中指定编译器版本号,智能合约的代码在Contract结构中声明与定义等。
8、共识
共识(Consensus),是区块链服务中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部。实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
9、交易
交易,也称为交易请求,等同于计算机术语事务(Transaction),交易包括了需要提交到区块链服务执行的操作,以及对应的交易结果。并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯;例如,交易可以包括部署(Deploy)交易和调用(Invoke)交易,部署交易用于将智能合约到区块链服务的节点中并准备好被调用;调用(Invoke)交易用于对账本中的状态数据库进行查询操作(即读操作)或更新操作(即写操作,包括增加、删除和修改)。
下面对本申请的设计思想进行说明。
区块链服务中的智能合约是通过编程语言实现的,编程语言对应的代码可以访问服务器上的所有资源(如CPU、内存、文件系统、网络等),但对于区块链服务而言,若智能合约不加限制地访问区块链服务中的资源,则会严重影响区块链服务的安全,甚至会破坏区块链服务中节点的一致性共识,因此可以通过在智能合约中添加限制代码的形式,通过限制代码禁止智能合约访问区块链服务中的特定资源,如通过限制代码禁止智能合约访问某些文件系统、网络资源或禁止开启并发机制等;进而在对区块链服务进行测试时,需要测试区块链服务针对带有限制代码的智能合约的服务质量,目前用于测试的带有限制代码的智能合约是由开发者编写的,生成上述智能合约的效率低,且无法限制开发者的行为,存在恶意的开发者可能编写出恶意的智能合约,可能出现恶意的智能合约测试区块链服务时导致区块链服务不可用的情况。
鉴于此,发明人设计了一种用于测试区块链服务的智能合约的生成方法及装置。考虑到目前用于测试区块链服务对限制代码的服务质量时,由开发者编写带有限制代码的智能合约的效率低,且不能保证编写出的带有限制代码的智能合约的安全性,为此,本申请实施例中基于合约限制规则,自动从智能合约的开发语言关联的代码中获取限制代码,并基于智能合约编写规范将限制代码转化为目标智能合约,以提升生成目标智能合约的效率以及避免开发者编写恶意的目标智能合约。
请参见图1,提供一种智能合约的测试方法的应用环境图,该应用环境包括测试请求节点110和区块链服务120,同一个区块链服务120中可以但不局限于至少一个区块链节点(如可以但不局限于包括图中的区块链节点120-1、区块链节点120-2、区块链节点120-3或区块链节点120-4)1、区块链节点2、区块链节点3以及区块链节点4,其中区块链节点是区块链网络中的一个数据处理节点,区块链服务是运行区块链技术的载体和组织方式。
各个区块链节点可以部署有需要测试的目标智能合约,当需要对目标智能合约进行测试时,测试请求节点110(如可以但不局限于包括图中的终端设备110-1、终端设备110-2或服务器110-3)向区块链服务120发送测试合约调用消息,测试合约调用消息携带被测的目标智能合约的合约标识信息,区块链节点可以根据测试合约调用消息识别对应的目标智能合约,并执行目标智能合约的调用方法,得到合约测试结果,并将合约测试结果发送给测试请求节点110。可以理解,上述目标智能合约的合约标识信息可以但不局限于是目标智能合约的账户地址。
应当说明的是,上述测试请求节点110也可以是服务器或者上述区块链服务中的区块链节点,或者其它的区块链服务中的区块链节点等。
上述各个区块链节点之间可以利用网络进行连接,以进行共识认证,测试请求节点与区块链节点可以通过网络进行连接。各个区块链节点可以是独立的物理服务器或终端,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。测试请求节点可以是独立的物理服务器或终端设备,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。
本申请实施例中的终端设备可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。
在一些实施例中,上述测试目标智能合约的过程可以是在私有的区块链中执行的,例如可以是在测试环境中执行的,因此区块链节点可以只有1个。该区块链节点中可以部署目标智能合约,例如可以通过以太坊的web.3j执行智能合约的测试;web.3j是以太坊提供的对外API(Application Programming Interface,应用程序接口)。
请参见图2,提供一种可能的区块链服务构成的示意图。区块链服务(又称区块链)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义智能合约的合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成智能合约的合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的文本分类的方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
本申请实施例提供一种用于测试区块链服务的智能合约的生成方法,该方法可以由上述区块链服务中的区块链节点执行,也可以由上述测试请求节点执行,还可以由单独的生成智能合约的电子设备执行,该电子设备可以是独立的物理服务器或终端设备,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器等。
请参见图3,上述用于测试区块链服务的智能合约的生成方法具体包括如下步骤:
步骤S301,确定待测试的目标区块链服务对应的合约限制规则。
具体地,本申请实施例中可以但不局限于预先根据目标区块链服务的服务特性、类型、属性特性等因素,确定目标区块链对应的合约限制规则,本领域的技术人员可根据实际需求灵活的设置各区块链服务对应的合约限制规则。
步骤S302,从与实现目标智能合约的目标开发语言关联的代码中,获取与上述合约限制规则匹配的限制代码,其中目标智能合约用于测试目标区块链服务。
为了提升获取的限制代码与合约限制规则的匹配度,本申请实施例中可以根据目标开发语言中与合约限制规则对应的代码关键字获取限制代码,具体地,可以确定目标开发语言中与上述合约限制规则对应的代码关键字,进而从上述目标开发语言关联的代码中,获取与代码关键字匹配的代码为限制代码。
作为一种实施例,为了提升获取限制代码的效率,本申请实施例中可以利用代码抓取工具,从目标开发语言关联的代码中抓取限制代码,具体地,可以确定与上述目标开发语言关联的目标网站;通过代码抓取工具,从上述目标网站的示例代码中,抓取与上述合约限制规则匹配的限制代码。
上述目标网站可以但不局限于包括与目标开发语言相关的学习类网络、技术交流类网站、问答类网站或其它类型网站中的至少一种网站;上述代码抓取工具可以但不局限于包括爬虫工具。
步骤S303,按照目标区块链服务对应的智能合约编写规范,将上述限制代码转换为上述目标智能合约。
作为一种实施例,考虑到获取的限制代码可能存在数据缺失、代码错误等情况导致不能编译和运行,因此本申请实施例中为了提升利用获取的限制代码生成目标智能合约的效率,在将限制代码转换为目标智能合约时,可以对获取的异常代码进行预处理操作,得到测试代码,对测试代码进行编译和运行操作,确定出编译且运行成功的测试代码;进而按照目标区块链服务对应的智能合约编写规范,将编译且运行成功的测试代码转换为目标智能合约;上述预处理操作包括除去上述限制代码中的异常代码的操作。
上述异常代码可以但不局限于包括如下至少一种限制代码:有注解的限制代码、有明显信息缺失的限制代码、存在变量名称不符合的限制代码等。
以下对本申请实施例中的合约限制规则作进一步说明。
本申请实施例中不同的区块链服务的合约限制规则可以不同,也可以相同,请参见表1,提供一种区块链服务和合约限制规则的对照关系示意。
表1:区块链服务和合约限制规则的对照关系
区块链服务A1 | 合约限制规则B1 |
区块链服务A2 | 合约限制规则B2 |
区块链服务A3 | 合约限制规则B3 |
区块链服务A4 | 合约限制规则B1 |
区块链服务A5 | 合约限制规则B4 |
对于同一个区块链服务而言,可以只允许使用一种目标开发语言编写部署到该区块链服务中的目标智能合约,也可以允许使用多种目标开发语言编写部署到该区块链服务中的目标智能合约;当同一个区块链服务允许使用多种目标开发语言编写目标智能合约时,不同的目标开发语言设置可以对应不同的合约限制规则,也可以对应相同的合约限制规则;请参见表2,提供一种同一个区块链服务中不同的目标开发语言和合约限制规则的对照关系示意。
表2:同一个区块链服务中,不同的目标开发语言和合约限制规则的对照关系
目标开发语言C1 | 合约限制规则D1 |
目标开发语言C2 | 合约限制规则D2 |
目标开发语言C3 | 合约限制规则D3 |
作为一种实施例,不同的区块链服务允许使用的目标功能和禁止使用的目标功能不同,不同的目标开发语言的语法中禁止使用的目标功能的情况和禁止访问的代码功能库不同,因此本申请实施例中可以根据目标开发语言的语法与目标功能的对应关系以及禁止访问的代码功能库,设置目标区块链服务对应的合约限制规则。
具体地,本申请实施例中的合约限制规则可以但不局限于包括如下至少一种限制信息:
第一种限制信息:目标开发语言的语法中,与禁止使用目标功能对应的语法。
如目标功能为设定类型数据的导入或导出功能时,限制信息可以是目标开发语言中禁止导入导出设定类型数据的语法,如目标区块链服务为以太坊EOS区块链服务,目标智能合约的目标开发语言为C++语言时,不允许使用unint64_t或float或double等数据类型的数据,因此限制信息可以是禁止导入或导出上述64位整型unint64_t或浮点型float或布尔型double等数据类型的数据;限定信息还可以目标开发语言中禁止文件操作、网络操作、多线程多进程等语法操作的语法等。
第二种限制信息:禁止使用上述目标功能的代码功能库。
不同的目标开发语言禁止访问的上述代码功能库可以相同也可以不同,不同区块链服务中目标智能合约的目标开发语言禁止访问的代码功能库可以相同也可以不同。
如目标开发语言允许访问和使用字符串处理、数学公式计算等相关的代码功能库,不允许使用文件操作、网络操作、多进程多线程操作相关的代码功能库时,可以在限制信息中设置禁止使用文件操作库、网络操作库、多进程多线程操作库相关的代码功能库。
请参见图4,本申请实施例中提供一种生成目标智能合约的完整流程的示例,该过程中具体包括如下步骤:
步骤S401,确定待测试的目标区块链服务对应的合约限制规则。
步骤S402,利用爬虫工具,抓取从与实现目标智能合约的目标开发语言关联的目标网站的示例代码。
此处以学习类网站1、学习类网站2、问答类网站1和其他类网站为与目标开发语言关联的目标网站为例进行说明。
步骤S403,从抓取的示例代码中,提取与上述合约限制规则匹配的限制代码。
此处以示例代码1、示例代码2、示例代码3以及示例代码4为提取的限制代码为例进行说明。
具体提取限制代码的方式可参见上述描述,此处不再重复叙述。
步骤S404,对限制代码进行预处理操作,除去限制代码中的异常代码后得到测试代码。
步骤S405,通过编译器对测试代码进行编译和运行操作,将编译且运行成功的测试代码确定为有效代码。
步骤S406,按照目标区块链服务对应的智能合约编写规范,利用转换器将有效代码转换为目标智能合约。
应当说明的是,本申请实施例中从同一个网站中抓取的示例代码不一定转换至同一个目标智能合约中,同一个目标智能合约中的限制代码也不一定是从同一个网络中抓取的;且一个目标智能合约可以由一个或多个有效代码转换得到,具体如何将不同的有效代码转换为目标智能合约,可由本领域的技术人员根据实际需求设置,此处不做过多限定。
作为一种实施例,为了验证目标区块链服务针对限制代码的服务质量,在步骤S303之后,还可以基于图1示意出的测试场景,对自动生成的目标智能合约进行测试;具体地,可以将生成的目标智能合约发布到目标区块链服务中;根据目标智能合约的执行结果,确定目标区块链服务针对限制代码的服务质量。
具体地,在目标智能合约被测试请求节点请求调用时,可以由区块链服务中的区块链虚拟机识别目标智能合约,并确定目标智能合约的执行结果,将目标智能合约的执行结果反馈给测试请求节点,由测试请求节点确定目标区块链服务针对限制代码的服务质量。
其中上述目标智能合约的执行结果可以但不局限于包括未执行、正常执行等,若区块链虚拟机识别目标智能合约,并确定目标智能合约中的限制代码禁止目标智能合约执行时,会确定一个针对该目标智能合约的错误码,并将该错误码发送给测试请求节点;若目标智能合约正常执行,则区块链虚拟机会将目标智能合约正常执行的正常执行结果值发送给测试请求节点。
测试请求节点接收错误码后,确定请求的目标智能合约未执行,该目标智能合约中的限制代码在该目标区块链服务中生效,该目标区块链服务针对该目标智能合约的服务质量正常;测试请求节点接收到正常执行结果值后,确定请求的目标智能合约正常执行,该目标智能合约中的限制代码在该目标区块链服务中未生效,该目标区块链服务针对该目标智能合约的服务质量异常。
进一步地,测试请求节点可以发送针对多个目标智能合约的合约调用消息,请求调用多个目标智能合约,并根据区块链虚拟机返回的错误码或正常执行结果值,确定请求的各目标智能合约的限制代码是否生效,进而基于生效的限制代码的数量与请求的目标智能合约的总数量的比值,确定目标区块链服务针对限制代码的服务质量,以便根据确定的服务质量改进该目标区块链服务或针对该目标区块链服务进行后续处理。
请参见图5,提供一种利用目标智能合约测试目标区块链服务的过程示例图,该测试过程中包括如下步骤:
步骤S501,目标区块链服务将生成的目标智能合约部署到目标区块链服务中。
如图所示,此处以目标智能合约1、目标智能合约2、目标智能合约3至目标智能合约n(n为正整数)部署至目标区块链服务为例进行说明。
步骤S502,测试请求节点发送目标智能合约的合约调用消息。
具体地该合约调用消息中可以包括目标智能合约的合约标识信息。
步骤S503,目标区块链服务接收到针对合约调用消息后,调用对应的目标智能合约。
具体地,目标区块链服务可以基于合约调用消息中的合约标识信息,识别并调用该合约标识信息对应的目标智能合约。
步骤S504,目标区块链服务确定调用的目标智能合约的执行结果。
步骤S505,目标区块链服务将S505.调用的目标智能合约的执行结果发送给测试请求节点。
其中,目标区块链服务确定目标智能合约未执行时,则向测试请求节点发送调用的目标智能合约对应的错误码发送给测试请求节点;目标区块链服务确定目标智能合约正常执行时,则向测试请求节点发送调用的目标智能合约对应的正常执行结果值发送给测试请求节点。
步骤S506,测试请求节点基于目标智能合约的执行结果,确定目标区块链服务针对限制代码的服务质量。
应当说明的是,上述步骤S503至步骤S505的过程,可以但不局限于通过目标区块链服务中的区块链虚拟机实现。
本申请实施例中,通过设置目标区块链服务对应的合约限制规则,就可以通过自动化将抓取的代码转换成测试目标区块链服务的目标智能合约,目标智能合约自动化生成,不需人为分析与构造,减少认为接入及编写成本,减少了生成目标智能合约的耗时,故而用自动生成的目标智能合约测试目标区块链服务时,可以明显提升测试效率;且本申请实施例中的目标智能合约是自动生成的,避免了人工编写造成的误差或疏漏,提升了目标智能合约的准确度,进而有效保证测试有效性。
请参照图6,基于同一发明构思,本申请实施例提供一种用于测试区块链服务的智能合约的生成装置600,包括:
限制规则确定单元601,用于确定目标区块链服务对应的合约限制规则;上述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,上述目标智能合约用于测试上述目标区块链服务;
限制代码获取单元602,用于从与上述目标开发语言关联的代码中,获取与上述合约限制规则匹配的限制代码;
合约生成单元603,用于按照上述目标区块链服务对应的智能合约编写规范,将上述限制代码转换为上述目标智能合约。
作为一种实施例,限制代码获取单元602具体用于:确定上述目标开发语言中,与上述合约限制规则对应的代码关键字;从与上述目标开发语言关联的代码中,获取与上述代码关键字匹配的代码为上述限制代码。
作为一种实施例,合约生成单603元具体用于对上述限制代码进行预处理操作,得到测试代码,上述预处理操作包括除去上述限制代码中的异常代码的操作;
对上述测试代码进行编译和运行操作,确定出编译且运行成功的测试代码;
按照上述目标区块链服务对应的智能合约编写规范,将确定出的测试代码转换为上述目标智能合约。
作为一种实施例,限制代码获取单元602具体用于:确定与上述目标开发语言关联的目标网站;通过代码抓取工具,从上述目标网站的示例代码中,抓取与上述合约限制规则匹配的限制代码。
作为一种实施例,上述合约限制规则包括如下至少一种限制信息:
上述目标开发语言的语法中,与禁止使用上述目标功能对应的语法;
禁止使用上述目标功能的代码功能库。
作为一种实施例,合约生成单元603还用于将上述目标智能合约发布到上述目标区块链服务中;根据上述目标智能合约的执行结果,确定上述目标区块链服务针对上述限制代码的服务质量。
作为一种实施例,图6中的装置可以用于实现前文论述的任意一种用于测试区块链服务的智能合约的生成方法。
基于同一发明构思,本申请实施例提供的生成装置600作为硬件实体的一个实例如图7所示的终端设备700,下面对该终端设备700进行介绍。
请参照图7,该终端设备包括显示单元740、处理器780以及存储器720,其中,显示单元740包括显示面板741,用于显示由用户输入的信息或提供给用户的信息以各种操作页面等,在本申请实施例中主要用于显示终端设备中已安装的客户端的页面、快捷窗口等。
可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)或有机发光二极管OLED(Organic Light-Emitting Diode)等形式来配置显示面板741。
处理器780用于读取计算机程序,然后执行计算机程序定义的方法,例如处理器780读取各应用等,从而在该终端设备上运行应用,在显示单元740上显示应用的页面。处理器780可以包括一个或多个通用处理器,还可包括一个或多个DSP(Digital SignalProcessor,数字信号处理器),用于执行相关操作,以实现本申请实施例所提供的技术方案。
存储器720一般包括内存和外存,内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。外存可以为硬盘、光盘、USB盘、软盘或磁带机等。存储器720用于存储计算机程序和其他数据,该计算机程序包括客户端对应的应用程序等,其他数据可包括操作系统或应用程序被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数)和用户数据。本申请实施例中程序指令存储在存储器720中,处理器780执行存储器720中的程序指令,实现前文图论述的任意的一种目标函数确定方法。
此外,终端设备还可以包括显示单元740,用于接收输入的数字信息、字符信息或接触式触摸操作或非接触式手势,以及产生与终端设备的用户设置以及功能控制有关的信号输入等。具体地,本申请实施例中,该显示单元740可以包括显示面板741。显示面板741例如触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在显示面板741上或在显示面板741的操作),并根据预先设定的程式驱动相应的连接装置。可选的,显示面板741可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测玩家的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。在本申请实施例中,若用户点击被检测客户端110,则在显示面板741中的触摸检测装置检测到触摸操作,则将检测到的触摸操作对应的信号发送的触摸控制器,触摸控制器将信号转换成触点坐标发送给处理器780,处理器780根据接收到的触点坐标进行后续操作。
其中,显示面板741可以采用电阻式、电容式、红外线以及表面声波等多种类型实现。除了显示单元740,终端设备700还可以包括输入单元730,输入单元730可以但不限于包括图像输入设备731和其他输入设备732,如物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
除以上之外,终端设备700还可以包括用于给其他模块供电的电源790、音频电路760、近场通信模块770和RF电路。终端设备700还可以包括一个或多个传感器750,例如加速度传感器、光传感器、压力传感器等。音频电路760具体包括扬声器761和麦克风762等,例如终端设备700可以通过麦克风762采集用户的声音,进行相应的操作等。
作为一种实施例,处理器780的数量可以是一个或多个,处理器780和存储器720可以是耦合设置,也可以是相对独立设置。
作为一种实施例,图7中的处理器780可以用于实现如图6中的限制规则确定单元601、限制代码获取单元602和合约生成单元603的功能。
上述生成装置600作为硬件实体的一个实例如图8所示的计算机设备,该计算机设备包括处理器801、存储介质802以及至少一个外部通信接口803;上述处理器801、存储介质802以及外部通信接口803均通过总线804连接。
存储介质802中存储有计算机程序;
处理器801执行该计算机程序时实现前文论述的一种用于测试区块链服务的智能合约的生成方法。
图8中是以一个处理器801为例,但是实际上不限制处理器801的数量。
其中,存储介质802可以是易失性存储介质(volatile memory),例如随机存取存储介质(random-access memory,RAM);存储介质802也可以是非易失性存储介质(non-volatile memory),例如只读存储介质,快闪存储介质(flash memory),硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储介质802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储介质802可以是上述存储介质的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例上述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
基于同一技术构思,本申请实施例还一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当上述计算机指令在计算机上运行时,使得计算机执行如前文论述的一种用于测试区块链服务的智能合约的生成方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种用于测试区块链服务的智能合约的生成方法,其特征在于,包括:
确定目标区块链服务对应的合约限制规则;所述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,所述目标智能合约用于测试所述目标区块链服务;
从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码;
按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约。
2.如权利要求1所述的方法,其特征在于,所述从与目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码,包括:
确定所述目标开发语言中,与所述合约限制规则对应的代码关键字;
从与所述目标开发语言关联的代码中,获取与所述代码关键字匹配的代码为所述限制代码。
3.如权利要求1所述的方法,其特征在于,所述按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约,包括:
对所述限制代码进行预处理操作,得到测试代码,所述预处理操作包括除去所述限制代码中的异常代码的操作;
对所述测试代码进行编译和运行操作,确定出编译且运行成功的测试代码;
按照所述目标区块链服务对应的智能合约编写规范,将确定出的测试代码转换为所述目标智能合约。
4.如权利要求1-3任一项所述的方法,其特征在于,所述从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码,包括:
确定与所述目标开发语言关联的目标网站;
通过代码抓取工具,从所述目标网站的示例代码中,抓取与所述合约限制规则匹配的限制代码。
5.如权利要求1-3任一项所述的方法,其特征在于,所述合约限制规则包括如下至少一种限制信息:
所述目标开发语言的语法中,与禁止使用所述目标功能对应的语法;
禁止使用所述目标功能的代码功能库。
6.如权利要求1-3任一项所述的方法,其特征在于,所述按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约之后,还包括:
将所述目标智能合约发布到所述目标区块链服务中;
根据所述目标智能合约的执行结果,确定所述目标区块链服务针对所述限制代码的服务质量。
7.一种用于测试区块链服务的智能合约的生成装置,其特征在于,包括:
限制规则确定单元,用于确定目标区块链服务对应的合约限制规则;所述合约限制规则包括通过目标开发语言实现目标智能合约时,禁止使用目标功能的信息,所述目标智能合约用于测试所述目标区块链服务;
限制代码获取单元,用于从与所述目标开发语言关联的代码中,获取与所述合约限制规则匹配的限制代码;
合约生成单元,用于按照所述目标区块链服务对应的智能合约编写规范,将所述限制代码转换为所述目标智能合约。
8.如权利要求7所述的装置,其特征在于,所述限制代码获取单元具体用于:
确定所述目标开发语言中,与所述合约限制规则对应的代码关键字;
从与所述目标开发语言关联的代码中,获取与所述代码关键字匹配的代码为所述限制代码。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6中任一权利要求所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011042154.9A CN112148613A (zh) | 2020-09-28 | 2020-09-28 | 用于测试区块链服务的智能合约的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011042154.9A CN112148613A (zh) | 2020-09-28 | 2020-09-28 | 用于测试区块链服务的智能合约的生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148613A true CN112148613A (zh) | 2020-12-29 |
Family
ID=73894840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011042154.9A Pending CN112148613A (zh) | 2020-09-28 | 2020-09-28 | 用于测试区块链服务的智能合约的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148613A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
CN112905447A (zh) * | 2021-01-22 | 2021-06-04 | 支付宝(杭州)信息技术有限公司 | 一种区块链虚拟机的测试方法和系统 |
CN113448592A (zh) * | 2021-02-08 | 2021-09-28 | 北京科技大学 | 一种基于合同文本标记语言的智能法律合约生成方法 |
CN114285859A (zh) * | 2021-12-22 | 2022-04-05 | 建信金融科技有限责任公司 | 中间层区块链服务的数据处理方法、装置、设备及存储介质 |
CN117061403A (zh) * | 2023-10-10 | 2023-11-14 | 中铱数字科技有限公司 | 一种基于区块链BaaS的自动化测试方法及系统 |
-
2020
- 2020-09-28 CN CN202011042154.9A patent/CN112148613A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
CN112905447A (zh) * | 2021-01-22 | 2021-06-04 | 支付宝(杭州)信息技术有限公司 | 一种区块链虚拟机的测试方法和系统 |
CN113448592A (zh) * | 2021-02-08 | 2021-09-28 | 北京科技大学 | 一种基于合同文本标记语言的智能法律合约生成方法 |
CN114285859A (zh) * | 2021-12-22 | 2022-04-05 | 建信金融科技有限责任公司 | 中间层区块链服务的数据处理方法、装置、设备及存储介质 |
CN114285859B (zh) * | 2021-12-22 | 2023-08-29 | 建信金融科技有限责任公司 | 中间层区块链服务的数据处理方法、装置、设备及存储介质 |
CN117061403A (zh) * | 2023-10-10 | 2023-11-14 | 中铱数字科技有限公司 | 一种基于区块链BaaS的自动化测试方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148613A (zh) | 用于测试区块链服务的智能合约的生成方法及装置 | |
Zheng et al. | Xblock-eth: Extracting and exploring blockchain data from ethereum | |
EP3776208B1 (en) | Runtime self-correction for blockchain ledgers | |
US10628577B2 (en) | Identifying software components in a software codebase | |
WO2019214511A1 (zh) | 一种通过聚类分析文件异常操作行为的方法、系统及终端 | |
CN104321780B (zh) | 用于使用持久信任日志来监测并断言信任等级的设备、系统、和方法 | |
EP3067817A1 (en) | Dynamic data masking for mainframe application | |
WO2018111295A1 (en) | Blockchain monitoring and management | |
US9612920B2 (en) | Hierarchical system manager rollback | |
US10135913B2 (en) | Impact analysis system and method | |
WO2022095518A1 (zh) | 接口自动化测试方法、装置、计算机设备及存储介质 | |
CN108769070A (zh) | 一种越权漏洞检测方法及装置 | |
Liu et al. | Invcon: A dynamic invariant detector for ethereum smart contracts | |
CN108667840A (zh) | 注入漏洞检测方法及装置 | |
CN109634802B (zh) | 进程监控方法及终端设备 | |
Yoon et al. | Toward detecting compromised mapreduce workers through log analysis | |
CN112131002A (zh) | 数据管理方法及装置 | |
CN101395587A (zh) | 防止可执行程序被修改 | |
WO2020000716A1 (zh) | 大数据分析系统、服务器、数据处理方法、程序和存储介质 | |
US20220337602A1 (en) | Blockchain-Based Accountable Distributed Computing System | |
US8296262B1 (en) | Systems and methods for real-time online monitoring of computing devices | |
JP4363214B2 (ja) | アクセスポリシ生成システム、アクセスポリシ生成方法およびアクセスポリシ生成用プログラム | |
Soud et al. | A fly in the ointment: an empirical study on the characteristics of Ethereum smart contract code weaknesses | |
Sun et al. | A feasibility study of autonomically detecting in-process cyber-attacks | |
Ma et al. | Code analysis with static application security testing for python program |
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 |