CN109783195A - 一种基于容器的智能合约实时调试方法 - Google Patents
一种基于容器的智能合约实时调试方法 Download PDFInfo
- Publication number
- CN109783195A CN109783195A CN201910037863.9A CN201910037863A CN109783195A CN 109783195 A CN109783195 A CN 109783195A CN 201910037863 A CN201910037863 A CN 201910037863A CN 109783195 A CN109783195 A CN 109783195A
- Authority
- CN
- China
- Prior art keywords
- contract
- code
- compiling
- intelligent
- container
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于容器的智能合约代码实时调试方法。主要调试流程包括:1)由用户输入智能合约代码;2)前端***根据配置好的规则检测合约代码,将代码是否符合规范的结果反馈出来;3)在Docker容器中拉取合约代码,进行语法解析并编译智能合约,获取合约对应的abi,同时将编译结果和语法错误反馈出来;4)如果步骤3)编译合约代码成功,将合约部署至hyperchain联盟链中;5)如果步骤3)编译合约代码失败,则将失败结果反馈出来并给出修改意见;6)如果步骤4)中部署合约成功,则启动合约代码的调试流程,捕获用户输入的合约参数,同时返回合约调用结果。本发明集成了智能合约的编译、部署和调试,解决了智能合约代码调试不够方便快捷的问题。
Description
技术领域
本发明涉及区块链技术、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)后端***反馈合约调用结果。
Claims (5)
1.一种基于容器的智能合约代码实时调试方法,其特征在于,包括如下步骤:
1)由用户输入智能合约代码。
2)前端***根据配置好的规则检测合约代码,将代码是否符合规范的结果反馈出来。
3)在Docker容器中拉取合约代码,进行语法解析并编译智能合约,获取合约对应的abi,同时将编译结果和语法错误反馈出来。
4)如果步骤3)编译合约代码成功,将合约部署至联盟链中,转到步骤6)。
5)如果步骤3)编译合约代码失败,则将失败结果反馈出来并给出修改意见,转到步骤1)。
6)如果步骤4)中部署合约成功,则启动合约代码的调试流程,捕获用户输入的合约参数,同时返回合约调用结果。
2.如权利要求1所述的一种基于容器的智能合约实时调试方法,其特征在于,步骤1)中用户使用前端***输入合约代码时有良好的编码体验,免去为常用代码IDE安装复杂的扩展插件的流程。
3.如权利要求1所述的一种基于容器的智能合约实时调试方法,其特征在于,步骤2)中前端***拥有一套通用的合约校验规则,通过这些校验规则检测合约代码的书写规范度和正确性,用户能够在编译前找到基本的错误,同时得到修改建议。
4.如权利要求1所述的一种基于容器的智能合约实时调试方法,其特征在于,步骤3)中,前端***与Docker容器相连接,在容器中进行语法解析和严格的语法校验。如果合约语法正确,则获取合约编译生成的字节码,否则,将语法错误信息反馈至前端***。
5.如权利要求1所述的一种基于容器的智能合约实时调试方法,其特征在于,步骤6)的前提是步骤4)能够正确部署合约的字节码,这个步骤是对合约进行具体调试的过程,由用户输入合约参数,在联盟链上得到合约执行结果后反馈至前端***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910037863.9A CN109783195A (zh) | 2019-01-16 | 2019-01-16 | 一种基于容器的智能合约实时调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910037863.9A CN109783195A (zh) | 2019-01-16 | 2019-01-16 | 一种基于容器的智能合约实时调试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109783195A true CN109783195A (zh) | 2019-05-21 |
Family
ID=66500661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910037863.9A Pending CN109783195A (zh) | 2019-01-16 | 2019-01-16 | 一种基于容器的智能合约实时调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783195A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188049A (zh) * | 2019-06-10 | 2019-08-30 | 北京阿尔山金融科技有限公司 | 容器管理方法、装置以及电子设备 |
CN110222532A (zh) * | 2019-06-06 | 2019-09-10 | 杭州趣链科技有限公司 | 一种基于命名空间实现联盟链隐私保护的分区共识方法 |
CN110287107A (zh) * | 2019-05-27 | 2019-09-27 | 丹阳市萌咔信息技术有限公司 | 区块链的数据处理和智能合约联合调试集成方法、***及计算机可读存储介质 |
CN111290958A (zh) * | 2020-02-20 | 2020-06-16 | 联动优势(北京)数字科技有限公司 | 一种调试智能合约的方法及装置 |
CN111427555A (zh) * | 2020-03-30 | 2020-07-17 | 中科全维科技(苏州)有限公司 | 一种轻量化智能合约框架及合约开发方法 |
CN111666216A (zh) * | 2020-06-05 | 2020-09-15 | 中国银行股份有限公司 | 一种智能合约分析方法及装置 |
CN113835972A (zh) * | 2021-11-26 | 2021-12-24 | 南京金宁汇科技有限公司 | 一种基于asm的联盟链智能合约资源消耗检测方法及装置 |
CN113961202A (zh) * | 2021-12-21 | 2022-01-21 | 北京中科金财科技股份有限公司 | 一种自动调试智能合约的方法及*** |
CN114157444A (zh) * | 2021-09-10 | 2022-03-08 | 北京天德科技有限公司 | 一种基于容器技术的区块链部署***及部署方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095523A (zh) * | 2016-06-03 | 2016-11-09 | 北京奇虎科技有限公司 | 一种实现安卓编译隔离的方法和*** |
CN106598554A (zh) * | 2015-10-14 | 2017-04-26 | 上海汽车集团股份有限公司 | 一种代码生成装置 |
CN106598549A (zh) * | 2016-12-08 | 2017-04-26 | 天津米游科技有限公司 | 一种基于区块链的智能合约***及实现方法 |
-
2019
- 2019-01-16 CN CN201910037863.9A patent/CN109783195A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598554A (zh) * | 2015-10-14 | 2017-04-26 | 上海汽车集团股份有限公司 | 一种代码生成装置 |
CN106095523A (zh) * | 2016-06-03 | 2016-11-09 | 北京奇虎科技有限公司 | 一种实现安卓编译隔离的方法和*** |
CN106598549A (zh) * | 2016-12-08 | 2017-04-26 | 天津米游科技有限公司 | 一种基于区块链的智能合约***及实现方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287107A (zh) * | 2019-05-27 | 2019-09-27 | 丹阳市萌咔信息技术有限公司 | 区块链的数据处理和智能合约联合调试集成方法、***及计算机可读存储介质 |
CN110222532A (zh) * | 2019-06-06 | 2019-09-10 | 杭州趣链科技有限公司 | 一种基于命名空间实现联盟链隐私保护的分区共识方法 |
CN110188049A (zh) * | 2019-06-10 | 2019-08-30 | 北京阿尔山金融科技有限公司 | 容器管理方法、装置以及电子设备 |
CN111290958A (zh) * | 2020-02-20 | 2020-06-16 | 联动优势(北京)数字科技有限公司 | 一种调试智能合约的方法及装置 |
CN111427555A (zh) * | 2020-03-30 | 2020-07-17 | 中科全维科技(苏州)有限公司 | 一种轻量化智能合约框架及合约开发方法 |
CN111427555B (zh) * | 2020-03-30 | 2023-08-29 | 中科全维科技(苏州)有限公司 | 一种轻量化智能合约框架及合约开发方法 |
CN111666216A (zh) * | 2020-06-05 | 2020-09-15 | 中国银行股份有限公司 | 一种智能合约分析方法及装置 |
CN111666216B (zh) * | 2020-06-05 | 2024-01-23 | 中国银行股份有限公司 | 一种智能合约分析方法及装置 |
CN114157444A (zh) * | 2021-09-10 | 2022-03-08 | 北京天德科技有限公司 | 一种基于容器技术的区块链部署***及部署方法 |
CN113835972A (zh) * | 2021-11-26 | 2021-12-24 | 南京金宁汇科技有限公司 | 一种基于asm的联盟链智能合约资源消耗检测方法及装置 |
CN113961202A (zh) * | 2021-12-21 | 2022-01-21 | 北京中科金财科技股份有限公司 | 一种自动调试智能合约的方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783195A (zh) | 一种基于容器的智能合约实时调试方法 | |
CN109739766B (zh) | 一种快速搭建fpga数字仿真模型的***及方法 | |
Autili et al. | Aligning qualitative, real-time, and probabilistic property specification patterns using a structured english grammar | |
US20160357519A1 (en) | Natural Language Engine for Coding and Debugging | |
US8418125B2 (en) | Incremental model refinement and transformation in generating commerce applications using a model driven architecture | |
CA2680306C (en) | Identification of concepts in software | |
CN105117233A (zh) | Api调用方法及装置 | |
US20230004368A1 (en) | Multi-chip compatible compiling method and device | |
US20070271233A1 (en) | A generic interface for deep embedding of expression trees in programming languages | |
US9311077B2 (en) | Identification of code changes using language syntax and changeset data | |
Mäder et al. | Rule-based maintenance of post-requirements traceability relations | |
CN115952758B (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN102880468A (zh) | 一种用于ecu程序开发的代码智能提示方法及其*** | |
CN103605556A (zh) | 虚拟试验对象一体化构建***及方法 | |
CN103488738A (zh) | 一种自动实现java对象及数据表sql文件的方法及*** | |
US8140315B2 (en) | Test bench, method, and computer program product for performing a test case on an integrated circuit | |
CN101944061B (zh) | 一种代码调试的方法及装置 | |
US9612829B2 (en) | System and method for pattern based services extraction | |
CN106598843B (zh) | 一种基于程序分析的软件日志行为自动识别方法 | |
CN111857752A (zh) | 一种PostgreSQL数据库安装方法、装置及设备 | |
Chazalon et al. | Iterative analysis of pages in document collections for efficient user interaction | |
CN111078576A (zh) | 一种基于USB网卡技术的独立Web服务测试设备 | |
CN112559359B (zh) | 一种基于s2ml的安全攸关***分析与验证方法 | |
CN103164325B (zh) | 一种控制编码的方法和装置 | |
CN110333900A (zh) | 一种升级单片机存储器内boot的方法 |
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: 20190521 |
|
RJ01 | Rejection of invention patent application after publication |