一种基于容器的智能合约实时调试方法与流程

文档序号:17719854发布日期:2019-05-22 02:04阅读:448来源:国知局
一种基于容器的智能合约实时调试方法与流程

本发明涉及区块链技术、solidity智能合约技术、docker容器,尤其涉及一种基于容器的智能合约实时调试方法。



背景技术:

区块链技术,是一种新型的分布式账本技术,其特点是去中心化与不可篡改性。通过共识算法的驱动,区块链上的每个验证节点都参与到交易验证的过程中,保证区块链账本数据的一致性与不可篡改。

智能合约,是指可运行在区块链上的一串二进制代码,可以理解为区块链与外界沟通的桥梁,在区块链不可篡改的特性下,可以在智能合约上进行一些高保险操作,比如数字货币交易,银行的跨行清算等操作。智能合约的执行是自动地,而且操作具有原子性,即要么成功,要么全撤销。这就和传统数据库系统中的原子操作一样重要,在一些比较重要的场合,比如大额支付、跨境转账等操作中作用更加明显。

docker容器,是虚拟机技术(vm)的一种演化,是一种容器引擎。运行在不同容器中的应用,能够保持完全的隔离状态,而宿主机器只需要提供极小的额外性能开销。轻量和环境隔离的特性,很容易实现对用户空间中的智能合约代码操作进行隔离。

目前,智能合约的编写、调试和测试是一个相对繁琐的过程。部署和调用合约之前,需要搭建联盟链和智能合约编译环境,在编写和调试合约的过程中,需要在相互隔离的环境中不断尝试进行合约调用。繁琐的过程极大的限制了智能合约的应用。



技术实现要素:

本发明的目的是针对现有技术的不足,提供一种基于docker容器的智能合约实时调试方法,提供智能合约编写、编译、部署和调试的集成环境,提高智能合约调试效率。

本发明的目的是通过如下技术方案实现的:一种基于容器的智能合约代码实时调试方法,包括如下步骤:

1)由用户输入智能合约代码;

2)前端系统根据配置好的规则检测合约代码,将代码是否符合规范的结果反馈出来;

3)在docker容器中拉取合约代码,进行语法解析并编译智能合约,获取合约对应的abi,同时将编译结果和语法错误反馈出来;

4)如果步骤3)编译合约代码成功,将合约部署至联盟链中;

5)如果步骤3)编译合约代码失败,则将失败结果反馈出来并给出修改意见;

6)如果步骤4)中部署合约成功,则启动合约代码的调试流程,捕获用户输入的合约参数,同时返回合约调用结果。

进一步地,所述的步骤1)中,用户使用前端系统输入合约代码时有良好的编码体验,免去为常用代码ide安装复杂的扩展插件的流程。

进一步地,所述的步骤2)中,前端系统拥有一套通用的合约校验规则,通过这些校验规则检测合约代码的书写规范度和正确性,用户能够在编译前找到基本的错误,同时得到修改建议。

进一步地,所述步骤3)中,前端系统与docker容器相连接,在容器中进行语法解析和严格的语法校验。如果合约语法正确,则获取合约编译生成的字节码,否则,将语法错误信息反馈至前端系统。

进一步地,所述步骤6)的前提是步骤4)能够正确部署合约的字节码,这个步骤是对合约进行具体调试的过程,由用户输入合约参数,在联盟链上得到合约执行结果后反馈至前端系统。

本发明的有益效果是:本发明直接从智能合约编辑器获取用户输入,对合约代码进行两层解析,第一层是在前端系统使用通用规则检测合约代码,对不符合代码书写规范(用户可自行添加自定义规范)的情况直接反馈出来,第二层是对合约代码进行语法解析、编译,对语法错误和内部错误反馈至前端系统。在编译成功后自动部署至联盟链系统,提供可视化的调试入口,可对合约进行调试。本发明有效地降低了智能合约调试的成本,通过集成在docker容器内部的代码检测和自动部署机制,提高了调试效率。

附图说明

图1是智能合约调试全步骤流程。

具体实施方式

下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。

如图1所示,本发明方法,包括如下步骤:

1)由用户输入智能合约代码;

2)前端系统根据配置好的规则检测合约代码,将代码是否符合规范的结果反馈出来;

3)在docker容器中拉取合约代码,进行语法解析并编译智能合约,获取合约对应的abi,同时将编译结果和语法错误反馈出来;

4)如果步骤3)编译合约代码成功,将合约部署至联盟链中;

5)如果步骤3)编译合约代码失败,则将失败结果反馈出来并给出修改意见;

6)如果步骤4)中部署合约成功,则启动合约代码的调试流程,捕获用户输入的合约参数,同时返回合约调用结果。

进一步地,所述的步骤1)中,用户使用前端系统输入合约代码时有良好的编码体验,免去为常用代码ide安装复杂的扩展插件的流程。

进一步地,所述的步骤2)中,前端系统拥有一套通用的合约校验规则,通过这些校验规则检测合约代码的书写规范度和正确性,用户能够在编译前找到基本的错误,同时得到修改建议。

进一步地,所述步骤3)中,前端系统与docker容器相连接,在容器中进行语法解析和严格的语法校验。如果合约语法正确,则获取合约编译生成的字节码,否则,将语法错误信息反馈至前端系统。

进一步地,所述步骤6)的前提是步骤4)能够正确部署合约的字节码,这个步骤是对合约进行具体调试的过程,由用户输入合约参数,在联盟链上得到合约执行结果后反馈至前端系统。

下面用一个具体的智能合约调试实例来说明具体的实施方式,有如下步骤:

1)首先,用户在前端系统编辑智能合约代码,

2)前端系统自动解析合约代码规范性,将错误实时反馈在前端系统;

3)将合约代码的格式错误按照提示修改正确,后端系统对合约代码进行语法解析和编译,将合约语法错误和内部错误反馈至前端系统;

4)将合约代码的语法错误按照提示修改正确,后端系统正确编译智能合约得到二进制码;

5)后端系统将二进制码部署至联盟链;

6)用户在调试系统发出调用合约请求;

7)后端系统反馈合约调用结果。



技术特征:

技术总结
本发明公开了一种基于容器的智能合约代码实时调试方法。主要调试流程包括:1)由用户输入智能合约代码;2)前端系统根据配置好的规则检测合约代码,将代码是否符合规范的结果反馈出来;3)在Docker容器中拉取合约代码,进行语法解析并编译智能合约,获取合约对应的abi,同时将编译结果和语法错误反馈出来;4)如果步骤3)编译合约代码成功,将合约部署至hyperchain联盟链中;5)如果步骤3)编译合约代码失败,则将失败结果反馈出来并给出修改意见;6)如果步骤4)中部署合约成功,则启动合约代码的调试流程,捕获用户输入的合约参数,同时返回合约调用结果。本发明集成了智能合约的编译、部署和调试,解决了智能合约代码调试不够方便快捷的问题。

技术研发人员:李伟;邱炜伟;梁秀波;李启雷;尹可挺
受保护的技术使用者:杭州趣链科技有限公司
技术研发日:2019.01.16
技术公布日:2019.05.21
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1