CN109783195A - 一种基于容器的智能合约实时调试方法 - Google Patents

一种基于容器的智能合约实时调试方法 Download PDF

Info

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
Application number
CN201910037863.9A
Other languages
English (en)
Inventor
李伟
邱炜伟
梁秀波
李启雷
尹可挺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN201910037863.9A priority Critical patent/CN109783195A/zh
Publication of CN109783195A publication Critical patent/CN109783195A/zh
Pending legal-status Critical Current

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)能够正确部署合约的字节码,这个步骤是对合约进行具体调试的过程,由用户输入合约参数,在联盟链上得到合约执行结果后反馈至前端***。
CN201910037863.9A 2019-01-16 2019-01-16 一种基于容器的智能合约实时调试方法 Pending CN109783195A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 天津米游科技有限公司 一种基于区块链的智能合约***及实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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