CN113312035B - 一种面向Hyperledger Fabric的智能合约开发插件的实现方法 - Google Patents

一种面向Hyperledger Fabric的智能合约开发插件的实现方法 Download PDF

Info

Publication number
CN113312035B
CN113312035B CN202110536237.1A CN202110536237A CN113312035B CN 113312035 B CN113312035 B CN 113312035B CN 202110536237 A CN202110536237 A CN 202110536237A CN 113312035 B CN113312035 B CN 113312035B
Authority
CN
China
Prior art keywords
intelligent contract
intelligent
unit
initial
module
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.)
Active
Application number
CN202110536237.1A
Other languages
English (en)
Other versions
CN113312035A (zh
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202110536237.1A priority Critical patent/CN113312035B/zh
Publication of CN113312035A publication Critical patent/CN113312035A/zh
Application granted granted Critical
Publication of CN113312035B publication Critical patent/CN113312035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种面向Hyperledger Fabric的智能合约开发插件的实现方法,插件基于IntelliJ平台开发,包括:智能合约初始模板生成模块,采用FreeMarker模板技术和Hyperledger Fabric的使用版本及应用场景实现初始智能合约的生成;智能合约代码智能提示模块,应用GPT‑­2自然语言处理模型提供代码智能提示语法及语义;智能合约模拟调用模块,基于模拟桩、Mocha框架等实现智能合约模拟调用和测试。本发明提供的插件在无需搭建区块链网络的前提下提供智能合约开发辅助,支持智能合约的创建、编写、调试与测试。降低Hyperledger Fabric智能合约的开发门槛,提升开发效率,提高代码质量,使得智能合约在部署到区块链网络之前就能够保证编码和业务逻辑上的正确性。

Description

一种面向Hyperledger Fabric的智能合约开发插件的实现 方法
技术领域
本发明涉及区块链、智能合约、软件开发技术领域,具体为一种面向HyperledgerFabric的智能合约开发插件的实现方法,用于降低智能合约开发门槛,提升开发效率和代码质量。
背景技术
智能合约是运行在区块链上的一段程序代码,目前对于智能合约的开发属于全新的开发领域, 当前主流的IDE缺少对智能合约开发的支持,一方面导致其编写难以上手,影响开发效率和代码质量;另一方面,智能合约在区块链网络中调试困难,每次修改都需要重新经历复杂的部署流程,而链下缺少智能合约调用和测试的工具。
当智能合约在区块链网络节点上运行报错时,开发人员需要进行调试工作。然而,当前主流的IDE没有提供针对智能合约调试或者测试相关的功能,使用简单的文本编辑器来修改出错的智能合约将耗费大量的时间和精力。
当智能合约部署在区块链节点后,每一次对文件的改动都要重新启动区块链网络,创建通道并且将节点加入通道,智能合约还需要经历安装、实例化等生命周期中的必要操作才能在区块链节点上运行。区块链实际应用场景和开发人员部署一个单节点的测试网络不同,需要大量网络服务器节点,而每次对有漏洞的智能合约做出改动后都需要在每一个节点上进行上述操作,这是一项冗余繁杂的工作。
即使开发人员编写了一份完美的智能合约,它能够在区块链网络节点上被客户端调用仍然需要具备一个前提——搭建并部署一个可以正常工作的区块链网络,而这些复杂的步骤对于智能合约开发工作而言却不是一个必要条件。
综上,智能合约学习使用门槛高、编写复杂、调试困难、部署效率低,严重限制区块链技术的推广使用和大规模落地。目前,亟需轻量级的辅助工具,据此本发明公开了一种面向Hyperledger Fabric的智能合约开发插件的实现方法,以解决上述问题。
发明内容
本发明的目的在于提供一种面向Hyperledger Fabric的智能合约开发插件的实现方法,以解决上述背景技术中提出的问题。
为了解决上述技术问题,本发明提供如下技术方案:种面向Hyperledger Fabric的智能合约开发插件,在无需搭建区块链网络的前提下提供智能合约开发辅助,支持智能合约的创建、编写、调试与测试,其特征在于,包括智能合约初始模板生成模块、智能合约代码智能提示模块和智能合约模拟调用与测试模块;
所述智能合约初始模板生成模块根据Hyperledger Fabric的使用版本和应用场景创建合适的初始智能合约文件,并将创建的初始智能合约文件传输至智能合约代码智能提示模块;
所述智能合约代码智能提示模块对智能合约初始模板生成模块传输的初始智能合约文件进行接收,对接收的智能合约进行编写,并将编写完成后的智能合约文件传输至智能合约模拟调用与测试模块,所述智能合约代码智能提示模块用于智能合约语法及语义提示;
所述智能合约模拟调用与测试模块对智能合约代码智能提示模块传输的编写完成后的智能合约文件进行接收,对接收的智能合约及其接口及信息进行模拟调用并获取测试结果,所述智能合约模拟调用与测试模块包含模拟调用智能合约接口并展示测试报告的功能,该功能采用模拟桩和JavaScript脚本测试框架,结合FreeMarker模板技术。
优选的,所述智能合约初始模板生成模块包括智能合约开发模式选择单元、初始智能合约创建单元、IDE交互弹窗单元和模块功能入口单元;
所述智能合约开发模式选择单元根据Hyperledger Fabric的使用版本和应用场景在fabric-him开发包和fabric-contract-api开发包两种模式中选择合适的智能合约开发模式,并将选择的智能合约开发模式传输至初始智能合约创建单元,智能合约开发模式选择单元用于对智能合约开发包的模式种类进行选择,智能合约开发包fabric-shim在初始智能合约模板中被引入,该开发包将接口暴露给用户,通过Init方法和Invoke方法实现智能合约业务逻辑,智能合约开发包fabric-contract-api在初始智能合约模板中被引入,该开发包提供Contract类作为智能合约类的父类,除构造函数外的每个方法都可供外部调用;
所述初始智能合约创建单元接收智能合约开发模式选择单元传输的智能合约开发模式,初始智能合约创建单元根据填写的智能合约名称和智能合约开发模式通过FreeMarker模板语言预先定义,然后采用Java IO创建智能合约文件并写入模板内容,并将创建的初始智能合约传输至IDE交互弹窗单元,初始智能合约创建单元针对不同智能合约开发包生成初始智能合约,用于提供骨架,便于用户填充业务逻辑;
所述IDE交互弹窗单元通过相应的弹窗指引双方用户输入对应的数据信息,根据双方用户输入的数据信息判断数据信息的准确性,并将完成数据信息输入的初始智能合约传输至模块功能入口单元,IDE交互弹窗单元使用IntelliJ平台的用户接口组件提供交互弹窗;
所述模块功能入口单元对IDE交互弹窗单元传输的初始智能合约进行接收,模块功能入口单元对初始智能合约中的内容进行更改或查找,并将更改后的初始智能合约传输至智能合约代码智能提示模块,模块功能入口单元基于IntelliJ平台的Action系统提供模块功能入口。
优选的,所述IDE交互弹窗单元包括输入弹窗、信息弹窗、选择弹窗和错误弹窗;
所述输入弹窗在用户浏览到需要用户填写对应信息的位置时自动弹出,指引用户输入对应的数据信息;
所述信息弹窗在用户信息填写完成后自动弹出,将初始智能合约完整的展示在显示页面,便于用户对初始智能合约进行检验;
所述选择弹窗在用户对输入的数据信息检验完成后自动弹出,用户根据检验后的结果选择提交或进行更改;
所述错误弹窗在用户双方提交的初始智能合约内容进行对比后,若发现双方输入的数据信息存在差异,则自动弹出进行警告,便于用户对初始智能合约进行更改。
优选的,所述模块功能入口单元包括IDE工具菜单栏、IDE编辑器窗口、IDE帮助菜单栏和通过快捷键;
所述IDE工具菜单栏在展开列表中以Generate Initial Chaincode进行表示;
所述IDE编辑器窗口对初始智能合约中需要更改的内容重新进行编辑,IDE编辑器窗口通过按下右键后,在下拉列表中选中Generate即可对需要更改内容重新进行编辑;
所述IDE帮助菜单栏在展开列表中以Find Actio进行表示,在弹出的搜索窗口中输入关键字查找,即可对初始智能合约中相应的内容进行查找;
所述通过快捷键在使用时需要同时按下键盘上的 Ctrl、hift和G。
优选的,所述智能合约代码智能提示模块包括智能合约数据集、自然语言处理服务单元和补全支持单元;
所述智能合约数据集对Hyperledger Fabric智能合约进行采集,并将采集的智能合约数据集中存在所有形式注释的数据集传输至自然语言处理服务单元,智能合约数据集用于为初始智能合约提供数据参照;
所述自然语言处理服务单元对智能合约初始模板生成模块传输的初始智能合约和智能合约数据集中存在所有形式注释的数据集进行接收,将采集的数据集对GPT-2模型进行训练,并将处理后的数据集转换为图像或图形信息进行显示,将处理后的智能合约文件传输至补全支持单元,自然语言处理服务单元用于采集智能合约数据,进行数据预处理,训练GPT-2模型并提供历史数据可视化;
所述补全支持单元对自然语言处理服务单元传输的智能合约文件进行接收,根据用户当前键入代码序列,通过HTTP请求将数据发送给Flak服务器,将响应结果加入IDE代码自动补全列表,并将补全后的智能合约文件传输至智能合约模拟调用与测试模块,响应结果为自然语言处理模型预测结果。
优选的,所述预处理进一步包括清洗所有形式的注释内容并对数据进行分词编码。
优选的,所述清洗所有形式的注释内容包括以“//”开头的单行注释,和被“/*”“*/”包裹的多行注释,数据清洗脚本首先将代码复制到一个临时文件中,接着用指针遍历文件中的字符,识别关键的起始符号以确认是否是注释,非注释的代码语句都将被重新写入文件中,最后临时文件会被删除,清洗所有形式的注释内容用于避免注释内容对智能合约的创建产生影响。
优选的,所述分词编码利用“字节对编码”根据统计数据和词汇表对文本序列进行分词,拆分不同字母组合,编码得到多个ID,分词编码用于智能合约语法及语义提示。
优选的,所述Flask服务器预先加载GPT-2模型,将接收数据作为模型输入并返回模型预测结果集,采用 GPT-2 模型生成的文本具有更好的连贯性和准确度。
优选的,所述智能合约模拟调用与测试模块包括接口模拟调用单元和控制台单元;
所述接口模拟调用单元对补全支持单元中编写完成的智能合约进行接收,通过工具栏对当前空间的智能合约及其接口信息进行查询,填写参数并调用接口,模拟调用并获取测试结果,并将测试报告传输至控制台单元,接口模拟调用单元用于展示智能合约及其接口,填写参数并调用接口;
所述控制台单元接收接口模拟调用单元传输的测试报告,并对智能合约模拟调用和测试结果报告进行展示,控制台单元用于展示智能合约模拟调用和测试结果报告。
与现有技术相比,本发明所达到的有益效果在于:
本发明提供轻量级的智能合约链下开发工具,以IDE插件的形式提供服务,简单易用,结合Hyperledger Fabric、自然语言处理、FreeMarker等多种技术帮助用户完成智能合约编写、调用和测试,当有新的智能合约开发需求时,便于基于IntelliJ平台扩展功能点;
降低了发布智能合约在时间和操作复杂度上的挑战,提高了开发和部署效率,降低Hyperledger Fabric智能合约的开发门槛;
帮助用户提升智能合约的代码质量,使得智能合约在部署到区块链网络之前就能够保证编码和业务逻辑上的正确性。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明一种面向Hyperledger Fabric的智能合约开发插件的实现方法的系统结构图;
图2是本发明一种面向Hyperledger Fabric的智能合约开发插件的实现方法的流程图;
图3是本发明实施例的总体架构设计图。
实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供技术方案:一种面向Hyperledger Fabric的智能合约开发插件的实现方法,在无需搭建区块链网络的前提下提供智能合约开发辅助,支持智能合约的创建、编写、调试与测试,其特征在于,包括智能合约初始模板生成模块S1、智能合约代码智能提示模块S2和智能合约模拟调用与测试模块S3;
智能合约初始模板生成模块S1根据Hyperledger Fabric的使用版本和应用场景创建合适的初始智能合约文件,并将创建的初始智能合约文件传输至智能合约代码智能提示模块S2,智能合约初始模板生成模块S1用于设置智能合约名称,选择智能合约初始模板,创建初始智能合约文件,智能合约初始模板生成模块S1包括智能合约开发模式选择单元S11、初始智能合约创建单元S12、IDE交互弹窗单元S13和模块功能入口单元S14,智能合约开发模式选择单元S11根据Hyperledger Fabric的使用版本和应用场景在fabric-shim开发包和fabric-contract-api开发包两种模式中选择合适的智能合约开发模式,并将选择的智能合约开发模式传输至初始智能合约创建单元S12,智能合约开发模式选择单元S11用于选择相适应的智能合约开发模式,初始智能合约创建单元S12接收智能合约开发模式选择单元S11传输的智能合约开发模式,初始智能合约创建单元S12根据填写的智能合约名称和智能合约开发模式通过FreeMarker模板语言预先定义,然后采用Java IO创建智能合约文件并写入模板内容,并将创建的初始智能合约传输至IDE交互弹窗单元S13,初始智能合约创建单元S12用于根据智能合约名称和智能合约开发模式创建初始智能合约,IDE交互弹窗单元S13通过相应的弹窗指引双方用户输入对应的数据信息,根据双方用户输入的数据信息判断数据信息的准确性,并将完成数据信息输入的初始智能合约传输至模块功能入口单元S14,IDE交互弹窗单元S13包括输入弹窗、信息弹窗、选择弹窗和错误弹窗;输入弹窗用于在用户浏览到需要用户填写对应信息的位置时自动弹出,指引用户输入对应的数据信息;信息弹窗用于在用户信息填写完成后自动弹出,将初始智能合约完整的展示在显示页面,便于用户对初始智能合约进行检验;选择弹窗用于在用户对输入的数据信息检验完成后自动弹出,用户根据检验后的结果选择提交或进行更改;错误弹窗用于在用户双方提交的初始智能合约内容进行对比后,若发现双方输入的数据信息存在差异,则自动弹出进行警告,保证智能合约的正确性,IDE交互弹窗单元S13用于帮助用户对初始智能合约的内容进行更改。模块功能入口单元S14对IDE交互弹窗单元S13传输的初始智能合约进行接收,模块功能入口单元S14对初始智能合约中的内容进行更改或查找,并将更改后的初始智能合约传输至智能合约代码智能提示模块S2,模块功能入口单元S14包括IDE工具菜单栏、IDE编辑器窗口、IDE帮助菜单栏和通过快捷键;IDE工具菜单栏在展开列表中以GenerateInitial Chaincode进行表示,IDE工具菜单栏用于用户对菜单栏进行查找;IDE编辑器窗口用于对初始智能合约中需要更改的内容重新进行编辑,IDE编辑器窗口通过按下右键后,在下拉列表中选中Generate即可对需要更改内容重新进行编辑;IDE帮助菜单栏在展开列表中以Find Actio进行表示,用于在弹出的搜索窗口中输入关键字查找,即可对初始智能合约中相应的内容进行查找;通过快捷键在使用时需要同时按下键盘上的 Ctrl、Shift和G,通过快捷键用于缩减用户对智能合约的检验时间。
智能合约代码智能提示模块S2对智能合约初始模板生成模块S1传输的初始智能合约文件进行接收,对接收的智能合约进行编写,并将编写完成后的智能合约文件传输至智能合约模拟调用与测试模块S3,智能合约代码智能提示模块S2用于编写智能合约,实时补全当前键入的智能合约单词序列,并给出备选提示,智能合约代码智能提示模块用于智能合约语法及语义提示,智能合约代码智能提示模块S2包括智能合约数据集S21、自然语言处理服务单元S22和补全支持单元S23;智能合约数据集S21对Hyperledger Fabric智能合约进行采集,并将采集的智能合约数据集中存在所有形式注释的数据集传输至自然语言处理服务单元S22,智能合约数据集S21用于采集大量的Hyperledger Fabric智能合约,为初始智能合约提供数据参考,自然语言处理服务单元S22对智能合约初始模板生成模块S1传输的初始智能合约和智能合约数据集S21中存在所有形式注释的数据集进行接收,并对存在所有形式注释的数据集进行预处理,将采集的数据集对GPT-2模型进行训练,并将处理后的数据集转换为图像或图形信息进行显示,将处理后的智能合约文件传输至补全支持单元S23,自然语言处理服务单元S22用于采集智能合约数据,进行数据预处理,训练GPT-2模型并提供历史数据可视化,训练GPT-2 模型用于缩减智能合约的填写时间,使生成的文本具有更好的连贯性和准确度,预处理包括清洗所有形式的注释内容并对数据进行分词编码,清洗数据集中所有形式的注释,包括以“//”开头的单行注释,和被“/*”“*/”包裹的多行注释,数据清洗脚本首先将代码复制到一个临时文件中,接着用指针遍历文件中的字符,识别关键的起始符号以确认是否是注释,非注释的代码语句都将被重新写入文件中,最后临时文件会被删除,分词编码利用字节对编码根据统计数据和词汇表对单词序列进行分词,拆分不同字母组合,编码得到多个ID,补全支持单元S23对自然语言处理服务单元S22传输的智能合约文件进行接收,根据用户当前键入代码序列,通过HTTP请求将数据发送给Flask服务器,将响应结果加入IDE代码自动补全列表,并将补全后的智能合约文件传输至智能合约模拟调用与测试模块S3,补全支持单元S23用于用于获取用户当前键入代码序列,通过HTTP请求将数据发送给Flask服务器,将然语言处理模型预测结果加入IDE代码自动补全列表。
智能合约模拟调用与测试模块S3对智能合约代码智能提示模块S2传输的编写完成后的智能合约文件进行接收,对接收的智能合约及其接口及信息进行模拟调用并获取测试结果,智能合约模拟调用与测试模块S3用于查询当前工作空间的智能合约及其接口信息,模拟调用并获取测试结果,智能合约模拟调用与测试模块包含模拟调用智能合约接口并展示测试报告的功能,该功能采用模拟桩和JavaScript脚本测试框架,结合FreeMarker模板技术,智能合约模拟调用与测试模块S3包括接口模拟调用单元S31和控制台单元S32;接口模拟调用单元S31对补全支持单元S23中编写完成的智能合约进行接收,通过工具栏对当前空间的智能合约及其接口信息进行查询,填写参数并调用接口,模拟调用并获取测试结果,并将测试报告传输至控制台单元S32,接口模拟调用单元S31用于提供工具栏,展示智能合约及其接口,填写参数并调用接口,控制台单元S32接收接口模拟调用单元S31传输的测试报告,并对智能合约模拟调用和测试结果报告进行展示,控制台单元S32用于展示智能合约模拟调用和测试结果报告。
实施列一:
Hyperledger Fabric旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。它使用容器技术来托管构成系统应用逻辑的智能合约(也称为链代码),简而言之,Hyperledger Fabric是为企业构建的领先的开源、通用区块链结构;
“智能合约”代表一种旨在以信息化方式传播、验证或执行合同的计算机协议。本文中的智能合约在Hyperledger Fabric中又被称为Chaincode;
FreeMarker作为一款模板引擎,为开发者提供了一种基于模板预定规则生成输出文本的工具,一般用于HTML网页、电子邮件、源代码、配置文件的生成;
GPT-2是目前文本生成模型的最佳选择之一,采用 GPT-2 模型生成的文本具有更好的连贯性和准确度;
mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行,Mocha框架为JavaScript脚本的测试提供了良好支持;
Flask是一个使用Python编写的轻量级 Web 应用框架,Flask框架是Python开发者常用的一款轻量级的Web框架。
实施列二:
请参阅图2,本实施例的技术方案提出了一种面向Hyperledger Fabric的智能合约开发插件的实现方法,该插件以用户为主体,为用户开发智能合约提供便捷,具体开发过程包括如下步骤:
步骤S100,根据Hyperledger Fabric的使用版本和应用场景选取合适的智能合约初始模板,为开发者创建一份初始智能合约。
步骤S100具体包括步骤:
步骤S101,选择智能合约开发模式,分为依赖fabric-shim开发包和fabric-contract-api开发包两种模式;
步骤S102,填写智能合约名称,根据FreeMarker模板创建初始智能合约,不同模板采用FreeMarker模板语言预先定义,插件采用Java IO创建智能合约文件并写入模板内容。
步骤S200, 在集成开发环境(IDE)中编写智能合约代码时,提供实时的代码智能提示,补全当前键入的单词序列,并给出备选提示。
步骤S200具体包括步骤:
步骤S201,采集大量Hyperledger Fabric智能合约作为数据集;
步骤S202,清洗数据集中所有形式的注释,包括以“//”开头的单行注释,和被“/*”“*/”包裹的多行注释,数据清洗脚本首先将代码复制到一个临时文件中,接着用指针遍历文件中的字符,识别关键的起始符号以确认是否是注释,非注释的代码语句都将被重新写入文件中,最后临时文件会被删除;
步骤S203,利用字节对编码根据统计数据和词汇表对单词序列进行分词,拆分不同字母组合,编码得到多个ID;
步骤S204,训练GPT-2模型,Flask服务器预加载分词器和模型;
步骤S205,获取用户当前在IDE编辑窗口键入的字符序列,通过HTTP请求发送至Flask服务器;
步骤S206,Flask接收数据作为模型输入,自然语言处理模型预测结果作为服务器响应结果;
步骤S207,在IDE代码自动补全列表添加模型预测结果集。
步骤S300,打开IDE工具窗口,展示当前项目中的智能合约信息,开发者可以通过该窗口完成智能合约的模拟调用并获取测试结果。
步骤S300具体包括步骤:
步骤S301,用户打开IDE工具窗口,点击工具栏的按钮查询当前项目中的智能合约及其接口的详细信息;
步骤S302,用户根据需求填写测试参数,点击工具栏的按钮调用接口,插件利用Hyperledger Fabric模拟桩和Mocha测试框架完成智能合约模拟调用;
步骤S303,插件在IDE工具窗口的自定义控制台反馈测试报告。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种面向Hyperledger Fabric的智能合约开发插件的实现方法,在无需搭建区块链网络的前提下提供智能合约开发辅助,支持智能合约的创建、编写、调试与测试,其特征在于,包括智能合约初始模板生成模块(S1)、智能合约代码智能提示模块(S2)和智能合约模拟调用与测试模块(S3);
所述智能合约初始模板生成模块(S1)根据Hyperledger Fabric的使用版本和应用场景创建合适的初始智能合约文件,并将创建的初始智能合约文件传输至智能合约代码智能提示模块(S2);
所述智能合约初始模板生成模块(S1)包括智能合约开发模式选择单元(S11)、初始智能合约创建单元(S12)、IDE交互弹窗单元(S13)和模块功能入口单元(S14);
所述智能合约开发模式选择单元(S11)根据Hyperledger Fabric的使用版本和应用场景在fabric-shim开发包和fabric-contract-api开发包两种模式中选择智能合约开发模式,并将选择的智能合约开发模式传输至初始智能合约创建单元(S12);
所述初始智能合约创建单元(S12)接收智能合约开发模式选择单元(S11)传输的智能合约开发模式,初始智能合约创建单元(S12)根据填写的智能合约名称和智能合约开发模式通过FreeMarker模板语言预先定义,然后采用Java IO创建智能合约文件并写入模板内容,并将创建的初始智能合约传输至IDE交互弹窗单元(S13);
所述IDE交互弹窗单元(S13)通过相应的弹窗指引双方用户输入对应的数据信息,根据双方用户输入的数据信息判断数据信息的准确性,并将完成数据信息输入的初始智能合约传输至模块功能入口单元(S14);
所述模块功能入口单元(S14)对IDE交互弹窗单元(S13)传输的初始智能合约进行接收,模块功能入口单元(S14)对初始智能合约中的内容进行更改或查找,并将更改后的初始智能合约传输至智能合约代码智能提示模块(S2);
所述智能合约代码智能提示模块(S2)对智能合约初始模板生成模块(S1)传输的初始智能合约文件进行接收,对接收的智能合约进行编写,并将编写完成后的智能合约文件传输至智能合约模拟调用与测试模块(S3);
所述智能合约代码智能提示模块(S2)包括智能合约数据集(S21)、自然语言处理服务单元(S22)和补全支持单元(S23);
所述智能合约数据集(S21)对Hyperledger Fabric智能合约进行采集,并将采集的智能合约数据集中存在所有形式注释的数据集传输至自然语言处理服务单元(S22);
所述自然语言处理服务单元(S22)对智能合约初始模板生成模块(S1)传输的初始智能合约和智能合约数据集(S21)中存在所有形式注释的数据集进行接收,并对存在所有形式注释的数据集进行预处理,将采集的数据集对GPT-2模型进行训练,并将处理后的数据集转换为图像或图形信息进行显示,将智能并将处理后的智能合约文件传输至补全支持单元(S23);
所述补全支持单元(S23)对自然语言处理服务单元(S22)传输的智能合约文件进行接收,根据用户当前键入代码序列,通过HTTP请求将数据发送给Flask服务器,将响应结果加入IDE代码自动补全列表,并将补全后的智能合约文件传输至智能合约模拟调用与测试模块(S3);
所述智能合约模拟调用与测试模块(S3)对智能合约代码智能提示模块(S2)传输的编写完成后的智能合约文件进行接收,对接收的智能合约及其接口及信息进行模拟调用并获取测试结果;
所述智能合约模拟调用与测试模块(S3)包括接口模拟调用单元(S31)和控制台单元(S32);
所述接口模拟调用单元(S31)对补全支持单元(S23)中编写完成的智能合约进行接收,通过工具栏对当前空间的智能合约及其接口信息进行查询,填写参数并调用接口,模拟调用并获取测试结果,并将测试报告传输至控制台单元(S32);
所述控制台单元(S32)接收接口模拟调用单元(S31)传输的测试报告,并对智能合约模拟调用和测试结果报告进行展示。
2.根据权利要求1所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述IDE交互弹窗单元(S13)包括输入弹窗、信息弹窗、选择弹窗和错误弹窗;
所述输入弹窗在用户浏览到需要用户填写对应信息的位置时自动弹出,指引用户输入对应的数据信息;
所述信息弹窗在用户信息填写完成后自动弹出,将初始智能合约完整的展示在显示页面,便于用户对初始智能合约进行检验;
所述选择弹窗在用户对输入的数据信息检验完成后自动弹出,用户根据检验后的结果选择提交或进行更改;
所述错误弹窗在用户双方提交的初始智能合约内容进行对比后,若发现双方输入的数据信息存在差异,则自动弹出进行警告,保证智能合约的正确性。
3.根据权利要求2所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述模块功能入口单元(S14)包括IDE工具菜单栏、IDE编辑器窗口、IDE帮助菜单栏和通过快捷键;
所述IDE工具菜单栏在展开列表中以Generate Initial Chaincode进行表示;
所述IDE编辑器窗口对初始智能合约中需要更改的内容重新进行编辑,IDE编辑器窗口通过按下右键后,在下拉列表中选中Generate即可对需要更改内容重新进行编辑;
所述IDE帮助菜单栏在展开列表中以Find Actio进行表示,在弹出的搜索窗口中输入关键字查找,即可对初始智能合约中相应的内容进行查找;
所述通过快捷键在使用时需要同时按下键盘上的 Ctrl、Shift和G。
4.根据权利要求3所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述预处理包括清洗所有形式的注释内容并对数据进行分词编码。
5.根据权利要求4所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述清洗所有形式的注释内容包括以“//”开头的单行注释,和被“/*”“*/”包裹的多行注释。
6.根据权利要求5所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述分词编码利用“字节对编码”根据统计数据和词汇表对文本序列进行分词,拆分不同字母组合,编码得到多个ID。
7.根据权利要求6所述的一种面向Hyperledger Fabric的智能合约开发插件的实现方法,其特征在于,所述Flask服务器预先加载GPT-2模型,将接收数据作为模型输入并返回模型预测结果集。
CN202110536237.1A 2021-05-17 2021-05-17 一种面向Hyperledger Fabric的智能合约开发插件的实现方法 Active CN113312035B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110536237.1A CN113312035B (zh) 2021-05-17 2021-05-17 一种面向Hyperledger Fabric的智能合约开发插件的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110536237.1A CN113312035B (zh) 2021-05-17 2021-05-17 一种面向Hyperledger Fabric的智能合约开发插件的实现方法

Publications (2)

Publication Number Publication Date
CN113312035A CN113312035A (zh) 2021-08-27
CN113312035B true CN113312035B (zh) 2023-06-06

Family

ID=77373745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110536237.1A Active CN113312035B (zh) 2021-05-17 2021-05-17 一种面向Hyperledger Fabric的智能合约开发插件的实现方法

Country Status (1)

Country Link
CN (1) CN113312035B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116543389B (zh) * 2023-03-13 2023-09-19 中国人民解放军海军工程大学 基于关系网络的字符识别方法、装置、设备及介质
US11928438B1 (en) 2023-07-07 2024-03-12 Northern Trust Corporation Computing technologies for large language models

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011008402A2 (en) * 2009-06-30 2011-01-20 Intel Corporation Squelch filtration to limit false wakeups
CN110288307A (zh) * 2019-05-13 2019-09-27 西安电子科技大学 基于Fabric区块链的智能合约协同开发系统及数据处理方法
CN111444092A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 智能合约的测试方法、装置、电子设备及存储介质
CN111552799A (zh) * 2020-04-30 2020-08-18 腾讯科技(深圳)有限公司 信息处理方法、装置、电子设备及存储介质
CN112148278A (zh) * 2020-09-25 2020-12-29 模视科技(北京)有限公司 可视化的区块链智能合约框架及智能合约开发部署方法
CN112199735A (zh) * 2020-09-25 2021-01-08 博雅正链(北京)科技有限公司 基于区块链的垂直电商交易平台
CN112363700A (zh) * 2020-11-16 2021-02-12 深圳壹账通智能科技有限公司 智能合约的协同创建方法、装置、计算机设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169985B2 (en) * 2018-07-27 2021-11-09 Oracle International Corporation System and method for supporting SQL-based rich queries in hyperledger fabric blockchains

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011008402A2 (en) * 2009-06-30 2011-01-20 Intel Corporation Squelch filtration to limit false wakeups
CN110288307A (zh) * 2019-05-13 2019-09-27 西安电子科技大学 基于Fabric区块链的智能合约协同开发系统及数据处理方法
CN111444092A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 智能合约的测试方法、装置、电子设备及存储介质
CN111552799A (zh) * 2020-04-30 2020-08-18 腾讯科技(深圳)有限公司 信息处理方法、装置、电子设备及存储介质
CN112148278A (zh) * 2020-09-25 2020-12-29 模视科技(北京)有限公司 可视化的区块链智能合约框架及智能合约开发部署方法
CN112199735A (zh) * 2020-09-25 2021-01-08 博雅正链(北京)科技有限公司 基于区块链的垂直电商交易平台
CN112363700A (zh) * 2020-11-16 2021-02-12 深圳壹账通智能科技有限公司 智能合约的协同创建方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Cloud-Based Disaster Management as a Service: A Microservice Approach for Hurricane Twitter Data Analysis;A. Khaleq 等;《2018 IEEE Global Humanitarian Technology Conference (GHTC)》;1-8 *
超级账本智能合约的应用研究;季超越 等;《现代信息科技》;第04卷(第04期);176-179 *

Also Published As

Publication number Publication date
CN113312035A (zh) 2021-08-27

Similar Documents

Publication Publication Date Title
Uchitel et al. Synthesis of behavioral models from scenarios
US8490050B2 (en) Automatic generation of user interfaces
CN111241454B (zh) 一种生成网页代码的方法、系统和装置
US7673292B2 (en) Auto conversion of tests between different functional testing tools
CN113312035B (zh) 一种面向Hyperledger Fabric的智能合约开发插件的实现方法
CN102667730A (zh) 设计时调试
CN108984202B (zh) 一种电子资源分享方法、装置和存储介质
CN108228173A (zh) 一种可视化的数据接口开发系统和方法
CN102521008B (zh) 程序编译装置和程序编译方法
Flanagan Effective Static Debugging
CN112988588B (zh) 客户端软件调试方法、装置、存储介质及电子设备
Risberg Alaküla et al. Property Probes: Source Code Based Exploration of Program Analysis Results
CN114327416A (zh) 应用于开发分支的接口同步方法、装置及电子设备
CN113885841A (zh) 脚本生成的方法、装置、电子设备和可读介质
Gaelli et al. Composing Tests from Examples.
O'Donnell et al. Implementing ATML into an existing software architecture
Ohnishi et al. Visual software requirements definition environment
Pulido Applying behavior driven development practices and tools to low-code technology
CN117348876B (zh) 基于freeRTOS嵌入式系统的应用开发方法、系统及介质
Irazábal et al. Supporting modularization in textual DSL development
CN117873560A (zh) 页面元素的Testid属性的处理方法、系统、设备及存储介质
Mansurov Automatic synthesis of SDL from MSC and its applications in forward and reverse engineering
Videira et al. Patterns and parsing techniques for requirements specification
Ohnishi Vrdl: a visual software requirements language
Chiorean et al. UML/OCL tools-objectives, requirements, state of the art-the OCLE experience

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
GR01 Patent grant
GR01 Patent grant