智能合约的测试方法、计算机可读存储介质及测试终端技术

技术编号:20484464 阅读:23 留言:0更新日期:2019-03-02 18:48
本发明专利技术属于区块链技术领域,尤其涉及一种智能合约的测试方法、计算机可读存储介质及测试终端。所述测试方法包括:将待测试的智能合约加载至离线测试环境,其中,所述离线测试环境为对所述智能合约实际运行的区块链环境进行模拟而得到的运行环境;对所述智能合约进行编译,获得可执行文件;执行所述可执行文件,生成所述智能合约的服务;调用所述服务,并提供触发数据以触发所述智能合约在所述离线测试环境中运行;对在所述离线测试环境中运行的所述智能合约进行测试。本发明专利技术能够简化智能合约的测试过程,有利于提高智能合约的开发效率。

【技术实现步骤摘要】
智能合约的测试方法、计算机可读存储介质及测试终端
本专利技术属于区块链
,尤其涉及一种智能合约的测试方法、计算机可读存储介质及测试终端。
技术介绍
智能合约(SmartContract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议,其允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。目前,在区块链结构下,智能合约需要运行在隔离的沙箱中,例如,超级账本(Hyperledger)的智能合约需要运行在Docker容器中。由于业务场景的复杂多样性,智能合约需满足图灵完备性,因此其可能存在异常复杂的业务逻辑,为了确保智能合约的质量,对发布的智能合约进行测试是必不可少的环节。目前对智能合约进行测试的过程一般为:首先部署区块链网络和智能合约,并在Docker环境中运行智能合约,通过查看智能合约的日志来分析问题并进行代码修改。然而,一方面,智能合约的日志可能存在丢失的情形,并且由于运行过程中的中间数据一般都采用了加密方式以随机数的形式呈现,因此无法通过查看日志的方式判断中间数据的正确性;另一方面,若检测到智能合约存在的问题,在进行相应的代码修改之后,还需要重新进行区块链网络和智能合约的部署以验证问题是否被解决。可见,现有技术中智能合约的测试过程步骤繁琐、效率低下。
技术实现思路
有鉴于此,本专利技术提供了一种智能合约的测试方法、计算机可读存储介质及测试终端,以解决现有技术中智能合约的测试过程步骤繁琐、效率低下的问题。本专利技术实施例的第一方面提供了一种智能合约的测试方法,可以包括:将待测试的智能合约加载至离线测试环境,其中,所述离线测试环境为对所述智能合约实际运行的区块链环境进行模拟而得到的运行环境;对所述智能合约进行编译,获得可执行文件;执行所述可执行文件,生成所述智能合约的服务;调用所述服务,并提供触发数据以触发所述智能合约在所述离线测试环境中运行;对在所述离线测试环境中运行的所述智能合约进行测试。基于本专利技术实施例的第一方面,在第一种可能的实现方式中,在将待测试的智能合约加载至离线测试环境之前,可以包括:搭建所述离线测试环境。基于本专利技术实施例的第一方面,在第二种可能的实现方式中,所述搭建所述离线测试环境可以包括:配置所述智能合约运行所需的应用程序编程接口,其中,所述应用程序编程接口包括数据写入接口、数据查询接口和范围查询接口;配置所述智能合约运行所需的全局账本状态;配置所述智能合约运行所需的区块数据。基于本专利技术实施例的第一方面,在第三种可能的实现方式中,所述配置所述智能合约运行所需的全局账本状态可以包括:获取所述区块链环境中的全局账本状态数据;创建本地键值对数据库,并在所述本地键值对数据库中存储获取的所述全局账本状态数据。基于本专利技术实施例的第一方面,在第四种可能的实现方式中,所述配置所述智能合约运行所需的区块数据可以包括:确定所述智能合约在所述区块链环境运行时所涉及的目标区块;生成与所述目标区块对应的模拟区块,其中,所述模拟区块的数据以键值对的形式存储于所述离线测试环境。基于本专利技术实施例的第一方面,在第五种可能的实现方式中,在对所述智能合约进行编译,获得可执行文件之前可以包括:获取所述智能合约的业务逻辑;基于与所述业务逻辑对应的测试实例,对所述全局账本状态进行初始化。基于本专利技术实施例的第一方面,在第六种可能的实现方式中,可以包括:当所述智能合约在所述离线测试环境中运行时,若所述模拟区块中的数据被调用,则将被调用的数据转换为目标格式以供所述智能合约调用,其中,所述目标格式为所述区块链环境中的区块的数据格式。基于本专利技术实施例的第一方面,在第六种可能的实现方式中,所述对在所述离线测试环境中运行的所述智能合约进行测试可以包括:当所述智能合约在所述离线测试环境中运行时,在指定的断点中断所述智能合约的运行,并输出所述智能合约的当前运行状态信息。本专利技术实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述本专利技术的第一方面及第一方面任一种可能的实现方式中的智能合约的测试方法的步骤。本专利技术实施例的第三方面提供了一种测试终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述本专利技术的第一方面及第一方面任一种可能的实现方式中的智能合约的测试方法的步骤。本专利技术与现有技术相比存在的有益效果是:本专利技术通过将待测试的智能合约加载至离线测试环境,并在该离线测试环境中对智能合约进行编译、执行、运行以及调试,解决了现有技术中智能合约的测试过程步骤繁琐、效率低下的问题。也即,一方面,由于该离线测试环境为对智能合约实际运行的区块链环境进行模拟而得到的运行环境,智能合约在该离线测试环境中运行时可以与其在真实区块链环境中运行时表现出一致的行为逻辑,故能够保障智能合约测试的有效性。另一方面,通过在该离线测试环境中运行智能合约,可以使智能合约脱离真实区块链环境而运行,避免了现有技术中对智能合约进行测试时,每次运行智能合约均需要重新部署区块链网络和发布智能合约的繁琐步骤,从而简化了智能合约的测试过程,有利于提高智能合约的开发效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。图1为本专利技术实施例中一种智能合约的测试方法的一个实施例流程图;图2为本专利技术实施例中一种智能合约的测试方法的另一个实施例流程图;图3为图2所示实施例中步骤S201的一个实施例流程图;图4为本专利技术实施例中一种智能合约的测试装置的一个实施例结构图;图5为本专利技术实施例中一种测试终端的示意框图。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。请参阅图1,本专利技术实施例中一种智能合约的测试方法的一个实施例可以包括:在步骤S101中、将待测试的智能合约加载至离线测试环境。在本专利技术实施例中,离线测试环境为对智能合约实际运行的区块链环境进行模拟而得到的运行环境。在本专利技术实施例中,智能合约实际运行的区块链环境是指智能合约发布之后实际运行的真实区块链环境,在下文中也称为真实区块链环境。另外,本专利技术实施例中的区块链是以超级账本(Hyperledger)为例进行说明的。在本专利技术实施例中,离线测试环境可以提供与真实区块链环境一致的外部依赖数据、一致的底层接口、以及一致的触发数据,使得智能合约在该离线测试环境中运行时能够与其在真实区块链环境中运行时表现出一致的行为逻辑。在步骤S102中、对所述智能合约进行编译,获得可执行文件。在本专利技术实施例中,通过在离线测试环境中对智能合约的源代码进行编译,可以生成可执行文件。具体的,智能合约的源代码在离线测试环境中存放于类库单元本文档来自技高网...

【技术保护点】
1.一种智能合约的测试方法,其特征在于,所述测试方法包括:将待测试的智能合约加载至离线测试环境,其中,所述离线测试环境为对所述智能合约实际运行的区块链环境进行模拟而得到的运行环境;对所述智能合约进行编译,获得可执行文件;执行所述可执行文件,生成所述智能合约的服务;调用所述服务,并提供触发数据以触发所述智能合约在所述离线测试环境中运行;对在所述离线测试环境中运行的所述智能合约进行测试。

【技术特征摘要】
1.一种智能合约的测试方法,其特征在于,所述测试方法包括:将待测试的智能合约加载至离线测试环境,其中,所述离线测试环境为对所述智能合约实际运行的区块链环境进行模拟而得到的运行环境;对所述智能合约进行编译,获得可执行文件;执行所述可执行文件,生成所述智能合约的服务;调用所述服务,并提供触发数据以触发所述智能合约在所述离线测试环境中运行;对在所述离线测试环境中运行的所述智能合约进行测试。2.根据权利要求1所述的智能合约的测试方法,其特征在于,在将待测试的智能合约加载至离线测试环境之前包括:搭建所述离线测试环境。3.根据权利要求2所述的智能合约的测试方法,其特征在于,所述搭建所述离线测试环境包括:配置所述智能合约运行所需的应用程序编程接口,其中,所述应用程序编程接口包括数据写入接口、数据查询接口和范围查询接口;配置所述智能合约运行所需的全局账本状态;配置所述智能合约运行所需的区块数据。4.根据权利要求3所述的智能合约的测试方法,其特征在于,所述配置所述智能合约运行所需的全局账本状态,包括:获取所述区块链环境中的全局账本状态数据;创建本地键值对数据库,并在所述本地键值对数据库中存储获取的所述全局账本状态数据。5.根据权利要求3所述的智能合约的测试方法,其特征在于,所述配置所述智能合约运行所需的区块数据,包括:确定所述智能合约在所述区块链环境运行时所...

【专利技术属性】
技术研发人员:谢丹力陈飞宦鹏飞
申请(专利权)人:深圳壹账通智能科技有限公司
类型:发明
国别省市:广东,44

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

1