本发明涉及区块链,尤其涉及一种智能合约的调试方法、装置、存储介质和电子设备。
背景技术:
1、区块链是一种去中心化的分布式账本技术,通过点对点的区块链网络,使用密码学手段实现信息的寻址、验证、存储和交易等功能,凭借其去中心化、透明性、可溯源和防篡改等特性,广泛用于包括加密资产交易的智能合约交易。
2、在区块链中,智能合约是区块链的关键组成部分,为区块链提供可编程性。开发者基于智能合约编写业务逻辑代码,将编写的智能合约代码上传到区块链上运行,以保证该智能合约对应的业务逻辑的透明性和不可篡改性。
3、区块链中智能合约的运行主要依赖智能合约虚拟机,智能合约虚拟机用以提供智能合约代码的运行环境,实现外部数据的输入、数据处理以及将数据处理的执行结果写入账本数据库中的功能。目前,智能合约虚拟机包括:以太坊(evm,ethereum virtualmachine)虚拟机、jsvm(javascript virtual machine)虚拟机以及网页浏览器汇编(wasm,webassembly virtual machine)虚拟机。其中,evm虚拟机是以太坊链的虚拟机,支持solidity语言编写智能合约代码,jsvm虚拟机主要基于google chrome的v8实现,支持javascript语言编写智能合约,wasm虚拟机支持c/c++语言编写智能合约。
4、对于智能合约虚拟机,在上线的智能合约代码运行前,需要进行智能合约调试,以便开发者查找编写的智能合约代码在运行过程中的问题,从而调整智能合约代码,以快速编写出准确的智能合约代码保障智能合约虚拟机的正常运行。相关技术中,对于evm虚拟机的智能合约调试,开发者可以通过remix调试工具实现支持solidity编程语言的调试功能;对于jsvm虚拟机调试,chrome v8仅支持单步调试功能,使得目前的智能合约调试方法,不能支持javascript语言的调试,且只能串行调试区块链上已创建的智能合约,不能并行调试智能合约,导致智能合约调试所需的时间较长,调试效率较低。
技术实现思路
1、有鉴于此,本发明提供一种智能合约的调试方法、装置、存储介质和电子设备。
2、具体地,本发明是通过如下技术方案实现的:
3、根据本发明的第一方面,提供一种智能合约的调试方法,智能合约的调试方法包括:
4、接收待调试智能合约,初始化区块链网络以得到专用于对待调试智能合约进行调试的初始化区块链,所述初始化区块链包括智能合约虚拟机;
5、基于网页套接字协议,在所述初始化区块链上部署待调试智能合约,初始化部署所述待调试智能合约的智能合约虚拟机,以对所述待调试智能合约进行代码调试;
6、基于网页套接字协议封装为所述待调试智能合约设置的交易请求,驱动初始化的智能合约虚拟机依据所述交易请求运行所述待调试智能合约,以对所述待调试智能合约进行功能调试;
7、读取对所述待调试智能合约进行调试的调试结果,依据所述调试结果及预先设置的所述待调试智能合约对应的场景结果,调整所述待调试智能合约对应的智能合约代码;
8、依据调整的智能合约代码进行再调试,确认对待调试智能合约的调试结束,释放所述初始化区块链。
9、本技术方案中的智能合约的调试方法,基于每个用户的智能合约调试,新开启专门的区块链实例,使得每个开启的区块链实例相互隔离,互不影响,实现基于javascript语言的智能合约调试,能够有效提升调试效率。
10、根据本发明的第二方面,提供一种智能合约的调试装置,智能合约的调试装置包括:
11、区块链初始化模块,用于接收待调试智能合约,初始化区块链网络以得到专用于对待调试智能合约进行调试的初始化区块链,所述初始化区块链包括智能合约虚拟机;
12、智能合约部署模块,用于基于网页套接字协议,在所述初始化区块链上部署待调试智能合约,初始化部署所述待调试智能合约的智能合约虚拟机,以对所述待调试智能合约进行代码调试;
13、智能合约触发模块,用于基于网页套接字协议封装为所述待调试智能合约设置的交易请求,驱动初始化的智能合约虚拟机依据所述交易请求运行所述待调试智能合约,以对所述待调试智能合约进行功能调试;
14、智能合约读取模块,用于读取对所述待调试智能合约进行调试的调试结果,依据所述调试结果及预先设置的所述待调试智能合约对应的场景结果,调整所述待调试智能合约对应的智能合约代码;
15、区块链释放模块,用于依据调整的智能合约代码进行再调试,确认对待调试智能合约的调试结束,释放所述初始化区块链。
16、根据本发明的第三方面,提供一种存储介质,其上存储有计算机程序,程序被处理器执行时实现第一方面的任意可能的实现方式中的智能合约的调试方法的步骤。
17、根据本发明的第四方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现第一方面的任意可能的实现方式中的智能合约的调试方法的步骤。
1.一种智能合约的调试方法,其特征在于,包括:
2.根据权利要求1所述的智能合约的调试方法,其特征在于,所述接收待调试智能合约,初始化区块链网络以得到专用于对待调试智能合约进行调试的初始化区块链,所述初始化区块链包括智能合约虚拟机,包括:
3.根据权利要求2所述的智能合约的调试方法,其特征在于,所述调试后端依据接收的区块链初始化请求创建初始化区块链,包括:
4.根据权利要求2所述的智能合约的调试方法,其特征在于,所述调试后端依据接收的区块链初始化请求创建初始化区块链,包括:
5.根据权利要求1所述的智能合约的调试方法,其特征在于,所述基于网页套接字协议,在所述初始化区块链上部署待调试智能合约,初始化部署所述待调试智能合约的智能合约虚拟机,以对所述待调试智能合约进行代码调试,包括:
6.根据权利要求5所述的智能合约的调试方法,其特征在于,所述方法还包括:
7.根据权利要求5所述的智能合约的调试方法,其特征在于,所述方法还包括:
8.一种智能合约的调试装置,其特征在于,所述智能合约的调试装置包括:
9.一种存储介质,其特征在于,存储介质上存储程序或指令,程序或指令被处理器运行时实现如权利要求1至7中任一项所述的智能合约的调试方法的步骤。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一项所述的智能合约的调试方法的步骤。