CN114691096A - 智能合约开发方法、装置、设备和存储介质 - Google Patents
智能合约开发方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114691096A CN114691096A CN202210246099.8A CN202210246099A CN114691096A CN 114691096 A CN114691096 A CN 114691096A CN 202210246099 A CN202210246099 A CN 202210246099A CN 114691096 A CN114691096 A CN 114691096A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- server
- file
- contract
- development
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开一种智能合约开发方法、装置、设备和存储介质,属于区块链技术领域。包括:根据服务器发送的智能合约开发界面的界面数据显示智能合约开发界面;接收针对文件浏览区域显示的智能合约文件的选择操作,将智能合约文件的智能合约代码显示在代码编辑区域;接收针对代码编辑区域显示的智能合约代码的编辑操作,向服务器发送携带有智能合约文件的合约标识的编辑请求,以指示服务器根据编辑请求对存储的智能合约文件进行编辑;接收针对工具栏区域显示的保存按钮的确认操作,向服务器发送智能合约保存请求,以指示服务器对本次编辑的智能合约文件进行保存。本申请可提高开发智能合约的便捷性,降低开发难度,便于技术人员简单快速开发智能合约。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种智能合约开发方法、装置、设备和存储介质。
背景技术
智能合约(Smart Contract),是一段可以自动执行的计算机程序,总是按照事先设置的规则执行操作。借由Solidity、Go等语言,开发人员能够编写出可自我执行的智能合约,其可被视为一份具有权威性且不可悔改的交易合约。但是,智能合约作为区块链技术的关键特性之一,开发门槛较高,很难在短时间内快速掌握。
发明内容
本申请提供了一种智能合约开发方法、装置、设备和存储介质,可以降低智能合约的开发难度,便于技术人员简单快速的进行智能合约的开发。所述技术方案如下:
第一方面,提供了一种智能合约开发方法,应用于终端,所述方法包括:
向服务器发送智能合约开发界面显示请求;
若接收到所述服务器发送的智能合约开发界面的界面数据,则根据所述界面数据显示所述智能合约开发界面,所述智能合约开发界面包括文件浏览区域、代码编辑区域和工具栏区域,所述文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件;
若接收到针对所述文件浏览区域显示的智能合约文件的选择操作,则将所述智能合约文件中的智能合约代码显示在所述代码编辑区域;
若接收到针对所述代码编辑区域显示的智能合约代码的编辑操作,则向所述服务器发送携带有所述智能合约文件的合约标识的编辑请求,以指示所述服务器根据所述编辑请求对存储的所述智能合约文件进行编辑;
若接收到针对所述工具栏区域显示的保存按钮的确认操作,则向所述服务器发送智能合约保存请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所有智能合约文件进行保存。
在本申请中,文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件,因而可以方便技术人员使用不同的智能合约开发语言来开发智能合约,可以满足技术人员的开发需求,且技术人员可在代码编辑区域直接对文件浏览区域显示的智能合约文件中的智能合约代码进行编辑,从而提高了开发智能合约的便捷性,降低了开发难度,可以便于技术人员简单快速开发智能合约。
可选地,所述智能合约文件包括智能合约模板文件或智能合约开发文件,所述智能合约模板文件是所述服务器设置的初始的智能合约文件,所述智能合约开发文件是合约仓库中保存的智能合约文件;
在向所述服务器发送的所述智能合约开发界面显示请求未携带合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述服务器设置的所述智能合约模板文件,所述智能合约模板文件显示于所述文件浏览区域;
在向所述服务器发送的所述智能合约开发界面显示请求携带所述合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述合约仓库地址处的合约仓库中保存的智能合约开发文件,所述智能合约开发文件显示于所述文件浏览区域。
可选地,所述智能合约保存请求用于请求所述服务器将本次通过所述智能合约开发界面编辑的所有智能合约文件保存至合约仓库中;
所述向所述服务器发送智能合约保存请求之后,还包括:
接收所述服务器发送的用于保存本次通过所述智能合约开发界面编辑的所有智能合约文件的合约仓库的合约仓库地址。
可选地,所述方法还包括:
在所述文件浏览区域显示有所述智能合约开发文件的情况下,若所述智能合约开发文件已部署至区块链,则在所述工具栏区域显示保存草稿按钮和升级按钮;
若接收到针对所述工具栏区域显示的保存草稿按钮的确认操作,则向所述服务器发送智能合约设置请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约开发文件进行调试;
若接收到所述服务器发送的调试成功消息,则在接收到针对所述工具栏区域显示的升级按钮的确认操作的情况下,向所述服务器发送智能合约部署请求,以指示所述服务器将本次通过所述智能合约开发界面编辑的所述智能合约开发文件部署至所述区块链。
可选地,所述智能合约开发界面包括一个或多个插件,所述一个或多个插件用于实现代码开发功能,所述代码开发功能包括语法高亮、代码自动补全、代码重构、查看定义、函数跳转中的一个或多个功能。
可选地,所述智能合约开发界面还包括合约调试区域,所述方法还包括:
若接收到针对所述合约调试区域中显示的调试按钮的确认操作,则向所述服务器发送智能合约调试请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约文件进行调试;
若接收到所述服务器发送的调试结果,将所述调试结果显示在所述合约调试区域。
可选地,所述方法还包括:
若接收到针对所述工具栏区域显示的安全检测按钮的确认操作,则对所述代码编辑区域显示的智能合约代码进行安全检测,得到检测结果;
在所述智能合约开发界面中显示指定窗口,在所述指定窗口中显示所述检测结果。
可选地,所述智能合约开发界面还包括日志输出区域,所述日志输出区域用于记录所述智能合约开发界面中的操作信息。
第二方面,提供了一种智能合约开发装置,所述装置包括:
第一发送模块,用于向服务器发送智能合约开发界面显示请求;
第一显示模块,用于若接收到所述服务器发送的智能合约开发界面的界面数据,则根据所述界面数据显示所述智能合约开发界面,所述智能合约开发界面包括文件浏览区域、代码编辑区域和工具栏区域,所述文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件;
第二显示模块,用于若接收到针对所述文件浏览区域显示的智能合约文件的选择操作,则将所述智能合约文件中的智能合约代码显示在所述代码编辑区域;
第二发送模块,用于若接收到针对所述代码编辑区域显示的智能合约代码的编辑操作,则向所述服务器发送携带有所述智能合约文件的合约标识的编辑请求,以指示所述服务器根据所述编辑请求对存储的所述智能合约文件进行编辑;
第三发送模块,用于若接收到针对所述工具栏区域显示的保存按钮的确认操作,则向所述服务器发送智能合约保存请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所有智能合约文件进行保存。
可选地,所述智能合约文件包括智能合约模板文件或智能合约开发文件,所述智能合约模板文件是所述服务器设置的初始的智能合约文件,所述智能合约开发文件是合约仓库中保存的智能合约文件;
在向所述服务器发送的所述智能合约开发界面显示请求未携带合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述服务器设置的所述智能合约模板文件,所述智能合约模板文件显示于所述文件浏览区域;
在向所述服务器发送的所述智能合约开发界面显示请求携带所述合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述合约仓库地址处的合约仓库中保存的智能合约开发文件,所述智能合约开发文件显示于所述文件浏览区域。
可选地,所述智能合约保存请求用于请求所述服务器将本次通过所述智能合约开发界面编辑的所有智能合约文件保存至合约仓库中;
所述装置还包括:
接收模块,用于接收所述服务器发送的用于保存本次通过所述智能合约开发界面编辑的所有智能合约文件的合约仓库的合约仓库地址。
可选地,所述装置还包括:
第三显示模块,用于在所述文件浏览区域显示有所述智能合约开发文件的情况下,若所述智能合约开发文件已部署至区块链,则在所述工具栏区域显示保存草稿按钮和升级按钮;
第四发送模块,用于若接收到针对所述工具栏区域显示的保存草稿按钮的确认操作,则向所述服务器发送智能合约设置请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约开发文件进行调试;
第五发送模块,用于若接收到所述服务器发送的调试成功消息,则在接收到针对所述工具栏区域显示的升级按钮的确认操作的情况下,向所述服务器发送智能合约部署请求,以指示所述服务器将本次通过所述智能合约开发界面编辑的所述智能合约开发文件部署至所述区块链。
可选地,所述智能合约开发界面包括一个或多个插件,所述一个或多个插件用于实现代码开发功能,所述代码开发功能包括语法高亮、代码自动补全、代码重构、查看定义、函数跳转中的一个或多个功能。
可选地,所述智能合约开发界面还包括合约调试区域,所述装置还包括:
第六发送模块,用于若接收到针对所述合约调试区域中显示的调试按钮的确认操作,则向所述服务器发送智能合约调试请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约文件进行调试;
第四显示模块,用于若接收到所述服务器发送的调试结果,将所述调试结果显示在所述合约调试区域。
可选地,所述装置还包括:
检测模块,用于若接收到针对所述工具栏区域显示的安全检测按钮的确认操作,则对所述代码编辑区域显示的智能合约代码进行安全检测,得到检测结果;
第五显示模块,用于在所述智能合约开发界面中显示指定窗口,在所述指定窗口中显示所述检测结果。
可选地,所述智能合约开发界面还包括日志输出区域,所述日志输出区域用于记录所述智能合约开发界面中的操作信息。
第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的智能合约开发方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的智能合约开发方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的智能合约开发方法的步骤。
可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种智能合约开发系统的示意图;
图2是本申请实施例提供的一种智能合约开发界面的示意图;
图3是本申请实施例提供的一种智能合约开发方法的流程图;
图4是本申请实施例提供的一种智能合约开发装置的结构示意图;
图5是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请中描述的“一个实施例”或“一些实施例”等语句意味着在本申请的一个或多个实施例中包括该实施例描述的特定特征、结构或特点。由此,在本申请中的不同之处出现的“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等语句不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。此外,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在对本申请实施例进行详细地解释说明之前,对本申请实施例的应用场景予以说明。
智能合约作为区块链技术的关键特性之一,开发、调试和维护智能合约的门槛较高,很难在短时间内快速掌握。为此,本申请实施例提供了一种智能合约开发方法,可以让技术人员方便的在线上开发智能合约。
下面对本申请实施例涉及的系统架构予以说明。
图1是本申请实施例提供的一种智能合约开发系统的示意图。参见图1,该智能合约开发系统包括终端101和服务器102。
终端101和服务器102可以通过有线连接或无线连接进行通信。其中,终端101可安装浏览器等应用来实现智能合约的开发,示例地,技术人员可在终端101安装的浏览器中打开Web界面,在该Web界面中编辑和调试智能合约代码,以实现对智能合约的开发。服务器102可以是BaaS(Blockchain as a Service,区块链即服务)平台,当然,也可以是其他区块链平台,本申请实施例对此不作限定。
终端101和服务器102构成IDE(Intergreated Development Environment,集成开发环境)。其中,IDE的执行环境包括两个,一个是IDE前端执行环境,在终端101中,另一个是IDE后端执行环境,在服务器102中。
对于服务器102,其中的IDE后端执行环境可支持多种智能合约开发语言,如可以支持Solidity、Java、Go等语言,如此,技术人员可以以其所需的智能合约开发语言来进行智能合约的开发。这种情况下,服务器102可以为不同的智能合约开发语言设置不同的后端语言执行环境。例如,对于Java语言,由于其会需要某些依赖包,所以可以在服务器102中安装Java SDK(Software Development Kit,软件开发工具包)和Maven环境;对于Go语言,由于其需要Go modules依赖包,所以可以在服务器102中安装Go SDK。也就是说,在本申请实施例中,可将多种智能合约开发语言的后端语言执行环境事先安装在服务器102中,以为技术人员提供能够直接使用的开发环境。
另外,为了方便技术人员快速开发一份智能合约,服务器102可以使用其安装的多种智能合约开发语言的后端语言执行环境,设置一些由不同智能合约开发语言编写、针对不同业务场景的智能合约模版文件。技术人员可以将这些智能合约模版文件保存到自己的合约仓库中,并根据这些智能合约模板文件编写所需的智能合约文件,在调试好所编写的智能合约文件后,再将其部署到链上。可选地,可将合约仓库中的智能合约文件称之为智能合约草稿,将部署到链上的智能合约文件称之为智能合约实例。
本申请实施例中涉及到智能合约文件的存储和版本控制,可以采用Git仓库(Github)等合约仓库来存储和管理智能合约文件。合约仓库是用来保存智能合约文件的一个位置。Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
示例地,每一个技术人员编写的每一份智能合约文件都可以存储在自己的Git仓库中,且存储的每一份智能合约文件都有唯一私有的Git仓库地址,该Git仓库地址可以包括以下三个字段:Git Server存储目录、用户标识(即用户ID(Identity document))、合约标识(即合约ID)。其中,Git Server存储目录是Git仓库的存放目录。用户标识用于标识Git仓库所属的用户账号,是全局唯一的。合约标识用于标识智能合约,也是全局唯一的。由这三个字段组成的Git仓库地址可以唯一定位到一份智能合约文件。
在本申请实施例中,该智能合约开发系统还可以包括其他计算机设备,合约仓库可以设置于该计算机设备中。在开发智能合约时,服务器102可以根据终端101发送的用户标识,从该计算机设备中获取属于该用户标识的合约仓库的详情信息,可以包括智能合约开发语言类型(languageType)、智能合约文件的本地地址(localUri)、合约操作标识(templateId)、合约实例标识(entityId)、区块链标识(chainId)等信息。然后将这些信息传输至终端101,供终端101展示,技术人员可以根据终端101展示的这些信息来编写和调试智能合约文件。
可选地,可以使用Theia等框架来实现IDE的执行环境。下面以通过Theia框架实现IDE的执行环境为例来进行说明,当然,也可以以其他框架来实现IDE的执行环境,本申请实施例对此不作限定。
Theia框架是一种支持多语言的、可扩展的、运用Web技术(包括TypeScript、CSS(Cascading Style Sheets,层叠样式表)、HTML(Hyper Text Markup Language,超文本标记语言)等)开发的框架,其中,TypeScript是一种由微软开发的开源、跨平台的编程语言,它是JavaScript的超集,最终会被编译为JavaScript代码。
Theia框架运行在两个独立的进程中,它们被称之为前端和后端,相互之间通过WebSocket上的JSON(JavaScript Object Notation,JS对象简谱)-RPC(Remote ProcedureCall,远程过程调用)消息或HTTP(Hyper Text Transfer Protocol,超文本传输协议)上的REST(Representational State Transfer,表现层状态转移)API(ApplicationProgramming Interface,应用程序接口)来通信,其中,前端运行在终端101中的浏览器或桌面应用上,后端运行在服务器102上。也即,基于Theia框架的工具可以远程部署在服务器102,并通过终端101中的浏览器或桌面应用进行访问。其中,WebSocket是一种在单个TCP(Transmission Control Protocol,传输控制协议)连接上进行全双工通信的协议。JSON-RPC是一个无状态且轻量级的远程过程调用传送协议,其传递内容透过JSON为主。
Theia框架的底层复用了很多VSCode(Visual Studio Code)模块和接口。VSCode模块是一款由微软开发且跨平台的免费源代码编辑器,即是一个IDE编辑器,可支持代码开发中常用的功能,如可支持语法高亮、代码自动补全(IntelliSense)、代码重构、查看定义、函数跳转等功能。
VSCode模块具有丰富的插件市场,特别是具有各种语言的插件,这些插件扩展了VSCode模块的许多功能。由于Theia框架底层复用了很多VSCode模块,所以Theia框架可以很好的兼容这些插件,因而对于代码开发中常用的功能,如语法高亮、代码自动补全、代码重构、查看定义、函数跳转等功能,只需在Theia框架中安装这些插件即可。示例地,在Theia框架中安装这些插件可以是在浏览器的扩展文件夹下的package.json文件中,添加以下字段:
“theiaPluginDir”:“../plugins”,
“theiaPlugins”:{
“vscode-builtin-css”:“http://nexus.xxx.cn/ide/plugins/css-39-prel.vsix”,
“vscode-builtin-html”:“http://nexus.xxx.cn/ide/plugins/html-39-prel.vsix”,
“vscode-builtin-go”:“http://nexus.xxx.cn/ide/plugins/go-39-prel.vsix”,
“vscode-builtin-java”:“http://nexus.xxx.cn/ide/plugins/java-39-prel.vsix”,
“vscode-builtin-javascript”:“http://nexus.xxx.cn/ide/plugins/javascript-39-prel.vsix”,
“vscode-builtin-json”:“http://nexus.xxx.cn/ide/plugins/json-39-prel.vsix”,
“vscode-builtin-markdown”:“http://nexus.xxx.cn/ide/plugins/markdown-39-prel.vsix”,
“vscode-builtin-npm”:“http://nexus.xxx.cn/ide/plugins/npm-39-prel.vsix”,
“vscode-builtin-scss”:“http://nexus.xxx.cn/ide/plugins/scss-39-prel.vsix”,
“vscode-builtin-typescript”:“http://nexus.xxx.cn/ide/plugins/typescript-39-prel.vsix”,
“vscode-builtin-xml”:“http://nexus.xxx.cn/ide/plugins/xml-39-prel.vsix”,
“vscode-go”:“http://nexus.xxx.cn/ide/plugins/vscode-go-22.vsix”,
“vscode-java”:“http://nexus.xxx.cn/ide/plugins/redhat.java-61.vsix”,
“vscode-solidity”:“http://nexus.xxx.cn/ide/plugins/vscode-solidity.vsix”
上述字段中的第一个关键字“theiaPluginDir”是插件的本地存放目录,这个目录地址可以自定义。上述字段中的第二个关键字“theiaPlugins”定义了所需的插件,其是一个key-value形式的对象,key为插件名称,value为插件下载地址。IDE打包时会读取“theiaPlugins”这个关键字,将“theiaPlugins”这个关键字下定义的所有插件下载到“theiaPluginDir”这个关键字所定义的目录地址中,IDE运行时,会从这个目录地址加载这些插件。
此外,Theia框架还包括Plugin(插件)模块和Extension(扩展)模块,可供技术人员扩展所需功能。其中,Plugin模块和Extension模块的区别主要表现在:1.代码隔离:Extension模块在Theia框架的核心进程中运行,Plugin模块在单独进程中运行。2.加载过程:Extension模块需要打包编译至完整的IDE中,Plugin模块只需单独打包成文件,在运行IDE时直接加载。3.技术栈:开发Extension模块需要学习IDE中的所有技术栈,主要包括TypeScript、Inversify、React、CSS等,而开发Plugin模块不需要学习额外的技术栈,根据需求选择学习相应的技术栈即可,其中React是一个用于构建用户界面的JavaScript库。通过上面对比可知,Extension模块的开发成本和学习成本比Plugin模块要高,但是Extension模块的扩展能力要比Plugin模块强大。
可选地,可以通过Extension模块和Plugin模块来实现所需的IDE布局。也即,可以通过Extension模块和Plugin模块实现对终端101中的智能合约开发界面的设计。例如,可以通过重写Extension模块中的ApplicationShell类中的createLayout布局方法,得到所需的布局。
作为一种示例,参见图2,终端101中的智能合约开发界面可以包括文件浏览区域、代码编辑区域、工具栏区域、合约调试区域、日志输出区域等。下面对这几个区域进行具体说明。
(1)文件浏览区域
文件浏览区域是用来查看和管理智能合约文件的区域,可以由三部分组成,最上面的部分是合约类型选择器,它的下拉选项是所支持的各种开发语言(如Solidity、Java、Go等语言),点击选择这些开发语言,可以切换显示使用不同开发语言编写的智能合约文件。中间的部分是智能合约文件列表,它是后端通过Node.js(即运行在服务器102的JavaScript)读取合约仓库中的文件状态后,通过WebSocket上的JSON-RPC消息或HTTP上的REST API传输到前端来展示的,而在前端对智能合约文件的操作行为(如新建、编辑、删除等),则是前端通过WebSocket上的JSON-RPC消息或HTTP上的REST API传输指令到后端来完成的。最下面的部分是智能合约文件的编译结果,可供技术人员查看。
(2)代码编辑区域
代码编辑区域是编辑智能合约文件中的智能合约代码的地方,技术人员可在代码编辑区域中对文件浏览区域展示的智能合约文件中的智能合约代码进行编辑。示例地,代码编辑区域可以基于Monaco Editor实现,Monaco Editor也可以是VSCode模块所使用的编辑器。
(3)工具栏区域
工具栏区域定义了一些重要的智能合约操作按钮,方便技术人员进行快捷操作,这些操作主要包括:静态分析、形式验证、设置、保存、保存草稿、升级等。
其中,静态分析按钮和形式验证按钮用于检测智能合约代码的安全漏洞。示例地,点击静态分析按钮和形式验证按钮,可以在侧边栏打开指定窗口,并调用相关安全检测服务,该服务可以通过Restful API提供,最终的检测结果在该指定窗口进行展示。设置按钮用于设置编辑器的字体、编辑模式(如vim、emacs、sublime等)等其他全局配置信息。保存按钮用于将所编辑的智能合约文件保存到技术人员的个人合约仓库中。可选地,保存草稿按钮和升级按钮在打开的智能合约文件已部署在链上时才展示,点击保存草稿按钮,可将当前的智能合约文件保存到git仓库的master分支上,用来编译和调试,等到调试成功后,点击升级按钮,可以弹出升级对话框,在该升级对话框中填写升级操作的相关信息,然后进行确认,即可将编辑的智能合约文件部署至链上,如此就完成了对链上智能合约的升级。
(4)合约调试区域
合约调试区域可以是在右侧常驻的面板区域,合约调试区域可以根据文件浏览区域中不同的合约类型展示不同的调试界面,该调试界面通常包括编译、部署、执行、排错(Debug)等Tab组件,具体的编译、部署、执行、Debug等操作在后端执行,后端可以将调试结果通过WebSocket上的JSON-RPC消息或HTTP上的REST API传输到前端来展示。
(5)日志输出区域
日志输出区域用于记录和反馈技术人员的一些重要操作信息。
综上可知,本申请实施例可以编译并调试智能合约代码,以查看和测试智能合约代码的执行情况。可以对智能合约代码进行安全检测,找出智能合约代码中存在的潜在安全漏洞,保证智能合约代码的执行安全。并且,对于链上已经部署的智能合约,为其提供一键升级按钮,方便对链上智能合约的升级,以便安装新的智能合约版本或对已有的智能合约打补丁。此外,还内置了一些由不同智能合约开发语言编写、针对不同业务场景的智能合约模板文件,技术人员可以将智能合约模版文件存储到自己的合约仓库中来进行管理、编译、调试等,如此,可以降低智能合约开发难度,方便技术人员快速在链上部署智能合约。
值得说明的是,本申请实施例支持的智能合约开发语言多,扩展性强,比如可以支持Solidity、Java、Go等语言,如果技术人员想要支持其他语言,只需开发相关的调试界面即可。并且,支持智能合约的安全检测,从而可以降低智能合约的安全风险。支持对链上智能合约的一键升级。支持智能合约模版文件存储功能,从而方便快速开发和部署一个智能合约。此外,还支持语法高亮、代码自动补全、代码重构、查看定义、函数跳转等功能,从而具有良好的编程体验。
下面对智能合约开发系统执行的智能合约开发方法进行详细地解释说明。
图3是本申请实施例提供的一种智能合约开发方法的流程图。参见图3,该方法包括以下步骤。
步骤301:终端向服务器发送智能合约开发界面显示请求。
智能合约开发界面显示请求用于请求显示智能合约开发界面,智能合约开发界面是用于开发智能合约的界面,示例地,智能合约开发界面可以是浏览器中的Web界面。
可选地,终端可以在接收到智能合约开发界面显示指令时向服务器发送智能合约开发界面显示请求。智能合约开发界面显示指令用于指示显示智能合约开发界面,智能合约开发界面显示指令可以由技术人员触发,技术人员可以通过点击操作、滑动操作、语音操作、手势操作、体感操作等操作触发,本申请实施例对此不作限定。
本申请实施例中显示于智能合约开发界面的智能合约文件可以包括智能合约模板文件或智能合约开发文件,智能合约模板文件是服务器设置的初始的智能合约文件,智能合约开发文件是合约仓库中保存的智能合约文件。
在一些实施例中,若终端在执行步骤301之前未曾显示过智能合约开发界面,则技术人员尚未具有自己的合约仓库,即不具有与自己的用户账号关联的合约仓库。这种情况下,终端在步骤301中是首次向服务器发送智能合约开发界面显示请求,终端本次请求显示的是初始的智能合约开发界面,初始的智能合约开发界面中显示的是服务器设置的智能合约模板文件。
在另一些实施例中,若终端在执行步骤301之前曾显示过智能合约开发界面,则技术人员在之前通过智能合约开发界面开发智能合约后已具有自己的合约仓库,即具有与自己的用户账号关联的合约仓库。这种情况下,终端在步骤301中不是首次向服务器发送智能合约开发界面显示请求,终端本次请求显示的是最新的智能合约开发界面,最新的智能合约开发界面中显示的是服务器获取到的技术人员的合约仓库中的智能合约开发文件。这种情况下,终端在步骤301中向服务器发送的智能合约开发界面显示请求中携带有合约仓库地址,该合约仓库地址是终端上次在智能合约开发界面完成智能合约开发后,即终端将开发的智能合约存储至合约仓库后,由服务器返回的合约仓库地址。
进一步地,终端向服务器发送智能合约开发界面显示请求后,服务器若接收到终端发送的智能合约开发界面显示请求,则将智能合约开发界面的界面数据发送给终端,以供终端根据该界面数据显示智能合约开发界面。
可选地,若终端向服务器发送的智能合约开发界面显示请求未携带合约仓库地址,则服务器获取初始的智能合约开发界面的界面数据并返回给终端。此时该界面数据中包括服务器设置的初始智能合约模板文件,这些智能合约模板文件可以包括使用不同智能合约开发语言编写、针对不同业务场景的智能合约模板文件。
若终端向服务器发送的智能合约开发界面显示请求携带合约仓库地址,则服务器获取最新的智能合约开发界面的界面数据并返回给终端。此时该界面数据中包括该合约仓库地址处的合约仓库中保存的所有智能合约开发文件,该智能合约开发文件是技术人员之前通过智能合约开发界面开发的,且该智能合约开发文件中包括尚未部署至区块链的智能合约开发文件,以及包括已经部署至区块链的智能合约开发文件,已部署至区块链的智能合约开发文件和尚未部署至区块链的智能合约开发文件可以通过不同的标记进行区分,以便终端可以获知哪些智能合约开发文件已部署至区块链。
其中,服务器在接收到终端发送的携带有合约仓库地址的智能合约开发界面显示请求后,可以从设置有合约仓库的计算机设备中将该合约仓库地址处的合约仓库复制到本地文件夹,如在合约仓库为git仓库时,服务器可以执行git clone操作来将合约仓库拷贝到本地文件夹。之后,服务器可以获取本地文件夹中的该合约仓库的详情信息,其中可以包括该合约仓库保存的所有智能合约开发文件。
步骤302:终端若接收到服务器发送的智能合约开发界面的界面数据,则根据该界面数据显示智能合约开发界面。
智能合约开发界面中包括多个与智能合约的开发相关的区域,如可以包括文件浏览区域、代码编辑区域、工具栏区域、合约调试区域、日志输出区域等。这些区域已在上文进行详细说明,此处不再赘述。其中,文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件。代码编辑区域用于对文件浏览区域显示的智能合约文件的智能合约代码进行编辑。工具栏区域用于显示可执行各种操作的按钮。合约调试区域用于对文件浏览区域显示的智能合约文件进行调试。日志输出区域用于记录智能合约开发界面中的操作信息。也即,在技术人员在智能合约开发界面执行操作的过程中,终端可以将相关的操作信息显示在日志输出区域。
本申请实施例中的智能合约文件包括智能合约模板文件或智能合约开发文件。在服务器返回的界面数据中包括服务器设置的智能合约模板文件的情况下,可将智能合约模板文件显示于文件浏览区域。在服务器返回的界面数据中包括合约仓库地址处的合约仓库中保存的智能合约开发文件的情况下,可将智能合约开发文件显示于文件浏览区域。
步骤303:若终端接收到针对文件浏览区域显示的智能合约文件的选择操作,则将该智能合约文件中的智能合约代码显示在代码编辑区域。
该选择操作可以是技术人员触发的,如技术人员可以通过点击操作、滑动操作、语音操作、手势操作、体感操作等触发针对文件浏览区域显示的智能合约文件的选择操作。
该选择操作用于指示要对所选择的智能合约文件进行编辑,因而此时终端可将该智能合约文件中的智能合约代码显示于代码编辑区域中,以供技术人员在代码编辑区域中对所显示的智能合约代码进行编辑。
可选地,智能合约开发界面中还可以内嵌有一个或多个插件,该一个或多个插件用于实现代码开发功能,该代码开发功能可以包括语法高亮、代码自动补全、代码重构、查看定义、函数跳转等中的一个或多个功能。示例地,该一个或多个插件可以通过VSCode模块实现。
这种情况下,在技术人员在代码编辑界面中编辑智能合约代码的过程中,该一个或多个插件可以自动实现各自的功能,如可以自动对代码编辑界面显示的智能合约代码进行语法高亮、代码自动补全、代码重构、查看定义、函数跳转等操作,如此,可以极大地提高技术人员的编程体验。
步骤304:若终端接收到针对代码编辑区域显示的智能合约代码的编辑操作,则向服务器发送携带有该智能合约文件的合约标识的编辑请求,以指示服务器根据该编辑请求对存储的该智能合约文件进行编辑。
该编辑请求可以携带合约标识和编辑操作信息。服务器接收该编辑请求后,可以对自身存储的由该合约标识所标识的智能合约文件中的智能合约代码进行该编辑操作信息所指示的编辑操作。
在一些实施例中,在终端是首次通过智能合约开发界面进行智能合约的开发的情况下,设置有合约仓库的计算机设备中尚不存在技术人员的合约仓库,此时服务器中也就没有复制的合约仓库。这种情况下,服务器在接收到终端发送的该编辑请求后,可以创建一个本地文件夹,然后将自身设置的由该合约标识所标识的智能合约模板文件存储至该本地文件夹中,之后对该本地文件夹中的该智能合约模板文件中的智能合约代码进行该编辑操作信息所指示的编辑操作。
在另一些实施例中,在终端不是首次通过智能合约开发界面进行智能合约的开发的情况下,设置有合约仓库的计算机设备中存在技术人员的合约仓库,此时服务器中也就存在复制的合约仓库。这种情况下,服务器在接收到终端发送的该编辑请求后,可以直接对自身复制的合约仓库中的由该合约标识所标识的智能合约开发文件中的智能合约代码进行该编辑操作信息所指示的编辑操作。
进一步地,工具栏区域还可以显示安全检测按钮(如可以包括上述的静态分析按钮、形式验证按钮等)。这种情况下,若终端接收到针对工具栏区域中显示的安全检测按钮的确认操作,则对代码编辑区域显示的智能合约代码进行安全检测,得到检测结果。之后,终端在智能合约开发界面中显示指定窗口,在指定窗口中显示检测结果。
该确认操作可以是技术人员触发的,如技术人员可以通过点击操作、滑动操作、语音操作、手势操作、体感操作等触发针对工具栏区域中显示的安全检测按钮的确认操作。该确认操作用于指示对正在编辑的智能合约代码进行安全检测。终端对代码编辑区域显示的智能合约代码进行安全检测后,可以找出智能合约代码中存在的潜在安全漏洞,从而可以保证智能合约代码的执行安全,降低智能合约的安全风险。
进一步地,若终端接收到针对合约调试区域中显示的调试按钮的确认操作,则向服务器发送智能合约调试请求,以指示服务器对本次通过智能合约开发界面编辑的智能合约文件进行调试。之后,若终端接收到服务器发送的调试结果,可以将调试结果显示在合约调试区域。
该确认操作可以是技术人员触发的,如技术人员可以通过点击操作、滑动操作、语音操作、手势操作、体感操作等触发针对合约调试区域中显示的调试按钮的确认操作。该确认操作用于指示对已编辑的智能合约文件进行调试,因而终端在接收到该确认操作后,可以向服务器发送智能合约调试请求。服务器在对已编辑的智能合约文件进行调试后,可以将得到的调试结果返回给终端,终端显示该调试结果后,可以便于技术人员获知智能合约文件的执行情况。
其中,服务器在接收到终端发送的智能合约调试请求后,可以调用智能合约操作接口实现对已编辑的智能合约文件的调试。该智能合约操作接口可用于实现编译、部署、调用、升级等合约操作。
步骤305:若终端接收到针对工具栏区域显示的保存按钮的确认操作,则向服务器发送智能合约保存请求,以指示服务器对本次通过智能合约开发界面编辑的所有智能合约文件进行保存。
该确认操作可以是技术人员触发的,如技术人员可以通过点击操作、滑动操作、语音操作、手势操作、体感操作等触发针对工具栏区域显示的保存按钮的确认操作。该确认操作用于指示对已编辑的智能合约文件进行保存,因而该终端在接收到该确认操作后,可以向服务器发送智能合约保存请求。
可选地,智能合约保存请求用于请求服务器将本次通过智能合约开发界面编辑的所有智能合约文件保存至合约仓库中。也就是说,服务器接收到终端发送的智能合约保存请求后,可以对终端本次通过智能合约开发界面编辑的所有智能合约文件进行保存,且可以将其保存至合约仓库中,然后服务器可以向终端返回该合约仓库的合约仓库地址,该合约仓库是属于技术人员的个人合约仓库,也即是与技术人员的用户账号关联的合约仓库。终端在接收到服务器发送的合约仓库地址后,可以在下次请求显示智能合约开发界面时使用,即在下次向服务器发送的智能合约开发界面显示请求中携带该合约仓库地址。示例地,该合约仓库地址可以包括仓库存储目录、用户标识和合约标识,该仓库存储目录是该合约仓库的存放目录,该用户标识用于标识该合约仓库所属的用户账号,该合约标识用于标识该合约仓库中保存的智能合约开发文件。
本申请实施例中,可将终端通过智能合约开发界面编辑的智能合约文件保存至合约仓库,如此,提供了对智能合约的存储和管理功能,这种情况下,即使技术人员清空了浏览器数据或者更换了电脑,技术人员开发的智能合约文件也不会丢失。
在一些实施例中,在终端是首次通过智能合约开发界面进行智能合约的开发的情况下,设置有合约仓库的计算机设备中尚不存在技术人员的合约仓库,此时服务器中也就没有复制的合约仓库。这种情况下,服务器在接收到终端发送的智能合约保存请求后,可以将之前创建的用于存储已编辑的智能合约文件的本地文件夹中的所有智能合约文件存储至该计算机设备中的一个新建的合约仓库中。
在另一些实施例中,在终端不是首次通过智能合约开发界面进行智能合约的开发的情况下,设置有合约仓库的计算机设备中存在技术人员的合约仓库,此时服务器中也就存在复制的合约仓库。这种情况下,服务器在接收到终端发送的智能合约保存请求后,可以直接将自身复制的合约仓库中的所有智能合约文件存储至该计算机设备中对应的合约仓库中。
在一些实施例中,终端在文件浏览区域显示有智能合约开发文件的情况下,若该智能合约开发文件已部署至区块链,则在工具栏区域显示保存草稿按钮和升级按钮。这种情况下,终端可在代码编辑区域对该智能合约开发文件进行编辑,且通过工具栏区域显示的保存按钮指示服务器对已编辑的该智能合约开发文件进行保存,具体过程已在上述步骤304和步骤305进行说明,此处不再赘述。
之后,若终端接收到针对工具栏区域显示的保存草稿按钮的确认操作,则向服务器发送智能合约设置请求,以指示服务器对本次通过智能合约开发界面编辑的智能合约开发文件进行调试。若终端接收到服务器发送的调试成功消息,则在接收到针对工具栏区域显示的升级按钮的确认操作的情况下,向服务器发送智能合约部署请求,以指示服务器将本次通过智能合约开发界面编辑的智能合约开发文件部署至区块链。
其中,服务器接收到终端发送的智能合约设置请求,可以确定终端是想要对已部署至区块链的智能合约进行升级,因而服务器可以先对本次通过智能合约开发界面编辑的智能合约开发文件进行调试,以保证后续部署至区块链上的智能合约的安全性。示例地,服务器可以调用智能合约操作接口来对智能合约开发文件进行调试。
服务器在对该智能合约开发文件调试成功后,可以向终端发送调试成功消息。之后,服务器若接收到终端发送的智能合约部署请求,则可以将调试成功的该智能合约开发文件部署至区块链,完成对链上智能合约的升级,该升级可以实现安装新的智能合约版本或对已有的智能合约打补丁。示例地,服务器可以调用智能合约操作接口来将调试成功的该智能合约开发文件部署至区块链。
在本申请实施例中,终端向服务器发送智能合约开发界面显示请求后,若接收到服务器发送的智能合约开发界面的界面数据,则根据界面数据显示智能合约开发界面。之后,若终端接收到针对智能合约开发界面中的文件浏览区域显示的智能合约文件的选择操作,则将该智能合约文件中的智能合约代码显示在智能合约开发界面中的代码编辑区域,然后在接收到针对代码编辑区域显示的智能合约代码的编辑操作的情况下,向服务器发送携带有该智能合约文件的合约标识的编辑请求,以指示服务器根据该编辑请求对存储的该智能合约文件进行编辑。之后,若终端接收到针对智能合约开发界面中的工具栏区域显示的保存按钮的确认操作,则向服务器发送智能合约保存请求,以指示服务器对本次通过智能合约开发界面编辑的所有智能合约文件进行保存。由于文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件,所以可以方便技术人员使用不同的智能合约开发语言来开发智能合约,可以满足技术人员的开发需求,且技术人员可在代码编辑区域直接对文件浏览区域显示的智能合约文件中的智能合约代码进行编辑,从而提高了开发智能合约的便捷性,降低了开发难度,可以便于技术人员简单快速开发智能合约。
图4是本申请实施例提供的一种智能合约开发装置的结构示意图。该装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图5所示的计算机设备。参见图4,该装置包括:第一发送模块401、第一显示模块402、第二显示模块403、第二发送模块404、第三发送模块405。
第一发送模块401,用于向服务器发送智能合约开发界面显示请求;
第一显示模块402,用于若接收到服务器发送的智能合约开发界面的界面数据,则根据界面数据显示智能合约开发界面,智能合约开发界面包括文件浏览区域、代码编辑区域和工具栏区域,文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件;
第二显示模块403,用于若接收到针对文件浏览区域显示的智能合约文件的选择操作,则将智能合约文件中的智能合约代码显示在代码编辑区域;
第二发送模块404,用于若接收到针对代码编辑区域显示的智能合约代码的编辑操作,则向服务器发送携带有智能合约文件的合约标识的编辑请求,以指示服务器根据编辑请求对存储的智能合约文件进行编辑;
第三发送模块405,用于若接收到针对工具栏区域显示的保存按钮的确认操作,则向服务器发送智能合约保存请求,以指示服务器对本次通过智能合约开发界面编辑的所有智能合约文件进行保存。
可选地,智能合约文件包括智能合约模板文件或智能合约开发文件,智能合约模板文件是服务器设置的初始的智能合约文件,智能合约开发文件是合约仓库中保存的智能合约文件;
在向服务器发送的智能合约开发界面显示请求未携带合约仓库地址的情况下,服务器发送的界面数据中包括服务器设置的智能合约模板文件,智能合约模板文件显示于文件浏览区域;
在向服务器发送的智能合约开发界面显示请求携带合约仓库地址的情况下,服务器发送的界面数据中包括合约仓库地址处的合约仓库中保存的智能合约开发文件,智能合约开发文件显示于文件浏览区域。
可选地,智能合约保存请求用于请求服务器将本次通过智能合约开发界面编辑的所有智能合约文件保存至合约仓库中;该装置还包括:
接收模块,用于接收服务器发送的用于保存本次通过智能合约开发界面编辑的所有智能合约文件的合约仓库的合约仓库地址。
可选地,该装置还包括:
第三显示模块,用于在文件浏览区域显示有智能合约开发文件的情况下,若智能合约开发文件已部署至区块链,则在工具栏区域显示保存草稿按钮和升级按钮;
第四发送模块,用于若接收到针对工具栏区域显示的保存草稿按钮的确认操作,则向服务器发送智能合约设置请求,以指示服务器对本次通过智能合约开发界面编辑的智能合约开发文件进行调试;
第五发送模块,用于若接收到服务器发送的调试成功消息,则在接收到针对工具栏区域显示的升级按钮的确认操作的情况下,向服务器发送智能合约部署请求,以指示服务器将本次通过智能合约开发界面编辑的智能合约开发文件部署至区块链。
可选地,智能合约开发界面包括一个或多个插件,一个或多个插件用于实现代码开发功能,代码开发功能包括语法高亮、代码自动补全、代码重构、查看定义、函数跳转中的一个或多个功能。
可选地,智能合约开发界面还包括合约调试区域,该装置还包括:
第六发送模块,用于若接收到针对合约调试区域中显示的调试按钮的确认操作,则向服务器发送智能合约调试请求,以指示服务器对本次通过智能合约开发界面编辑的智能合约文件进行调试;
第四显示模块,用于若接收到服务器发送的调试结果,将调试结果显示在合约调试区域。
可选地,该装置还包括:
检测模块,用于若接收到针对工具栏区域显示的安全检测按钮的确认操作,则对代码编辑区域显示的智能合约代码进行安全检测,得到检测结果;
第五显示模块,用于在智能合约开发界面中显示指定窗口,在指定窗口中显示检测结果。
可选地,智能合约开发界面还包括日志输出区域,日志输出区域用于记录智能合约开发界面中的操作信息。
在本申请实施例中,向服务器发送智能合约开发界面显示请求后,若接收到服务器发送的智能合约开发界面的界面数据,则根据界面数据显示智能合约开发界面。之后,若接收到针对智能合约开发界面中的文件浏览区域显示的智能合约文件的选择操作,则将该智能合约文件中的智能合约代码显示在智能合约开发界面中的代码编辑区域,然后在接收到针对代码编辑区域显示的智能合约代码的编辑操作的情况下,向服务器发送携带有该智能合约文件的合约标识的编辑请求,以指示服务器根据该编辑请求对存储的该智能合约文件进行编辑。之后,若接收到针对智能合约开发界面中的工具栏区域显示的保存按钮的确认操作,则向服务器发送智能合约保存请求,以指示服务器对本次通过智能合约开发界面编辑的所有智能合约文件进行保存。由于文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件,所以可以方便技术人员使用不同的智能合约开发语言来开发智能合约,可以满足技术人员的开发需求,且技术人员可在代码编辑区域直接对文件浏览区域显示的智能合约文件中的智能合约代码进行编辑,从而提高了开发智能合约的便捷性,降低了开发难度,可以便于技术人员简单快速开发智能合约。
需要说明的是:上述实施例提供的智能合约开发装置在智能合约开发时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
上述实施例提供的智能合约开发装置与智能合约开发方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
图5为本申请实施例提供的一种计算机设备的结构示意图。如图5所示,计算机设备5包括:处理器50、存储器51以及存储在存储器51中并可在处理器50上运行的计算机程序52,处理器50执行计算机程序52时实现上述实施例中的智能合约开发方法中的步骤。
计算机设备5可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备5可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备5的类型。本领域技术人员可以理解,图5仅仅是计算机设备5的举例,并不构成对计算机设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器50可以是中央处理单元(Central Processing Unit,CPU),处理器50还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器51在一些实施例中可以是计算机设备5的内部存储单元,比如计算机设备5的硬盘或内存。存储器51在另一些实施例中也可以是计算机设备5的外部存储设备,比如计算机设备5上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器51还可以既包括计算机设备5的内部存储单元也包括外部存储设备。存储器51用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (12)
1.一种智能合约开发方法,其特征在于,应用于终端,所述方法包括:
向服务器发送智能合约开发界面显示请求;
若接收到所述服务器发送的智能合约开发界面的界面数据,则根据所述界面数据显示所述智能合约开发界面,所述智能合约开发界面包括文件浏览区域、代码编辑区域和工具栏区域,所述文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件;
若接收到针对所述文件浏览区域显示的智能合约文件的选择操作,则将所述智能合约文件中的智能合约代码显示在所述代码编辑区域;
若接收到针对所述代码编辑区域显示的智能合约代码的编辑操作,则向所述服务器发送携带有所述智能合约文件的合约标识的编辑请求,以指示所述服务器根据所述编辑请求对存储的所述智能合约文件进行编辑;
若接收到针对所述工具栏区域显示的保存按钮的确认操作,则向所述服务器发送智能合约保存请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所有智能合约文件进行保存。
2.如权利要求1所述的方法,其特征在于,所述智能合约文件包括智能合约模板文件或智能合约开发文件,所述智能合约模板文件是所述服务器设置的初始的智能合约文件,所述智能合约开发文件是合约仓库中保存的智能合约文件;
在向所述服务器发送的所述智能合约开发界面显示请求未携带合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述服务器设置的所述智能合约模板文件,所述智能合约模板文件显示于所述文件浏览区域;
在向所述服务器发送的所述智能合约开发界面显示请求携带所述合约仓库地址的情况下,所述服务器发送的所述界面数据中包括所述合约仓库地址处的合约仓库中保存的智能合约开发文件,所述智能合约开发文件显示于所述文件浏览区域。
3.如权利要求2所述的方法,其特征在于,所述智能合约保存请求用于请求所述服务器将本次通过所述智能合约开发界面编辑的所有智能合约文件保存至合约仓库中;
所述向所述服务器发送智能合约保存请求之后,还包括:
接收所述服务器发送的用于保存本次通过所述智能合约开发界面编辑的所有智能合约文件的合约仓库的合约仓库地址。
4.如权利要求3所述的方法,其特征在于,所述合约仓库地址包括仓库存储目录、用户标识和合约标识,所述仓库存储目录是所述合约仓库的存放目录,所述用户标识用于标识所述合约仓库所属的用户账号,所述合约标识用于标识所述合约仓库中保存的智能合约开发文件。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
在所述文件浏览区域显示有所述智能合约开发文件的情况下,若所述智能合约开发文件已部署至区块链,则在所述工具栏区域显示保存草稿按钮和升级按钮;
若接收到针对所述工具栏区域显示的保存草稿按钮的确认操作,则向所述服务器发送智能合约设置请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约开发文件进行调试;
若接收到所述服务器发送的调试成功消息,则在接收到针对所述工具栏区域显示的升级按钮的确认操作的情况下,向所述服务器发送智能合约部署请求,以指示所述服务器将本次通过所述智能合约开发界面编辑的所述智能合约开发文件部署至所述区块链。
6.如权利要求1-5任一所述的方法,其特征在于,所述智能合约开发界面包括一个或多个插件,所述一个或多个插件用于实现代码开发功能,所述代码开发功能包括语法高亮、代码自动补全、代码重构、查看定义、函数跳转中的一个或多个功能。
7.如权利要求1-5任一所述的方法,其特征在于,所述智能合约开发界面还包括合约调试区域,所述方法还包括:
若接收到针对所述合约调试区域中显示的调试按钮的确认操作,则向所述服务器发送智能合约调试请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所述智能合约文件进行调试;
若接收到所述服务器发送的调试结果,将所述调试结果显示在所述合约调试区域。
8.如权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
若接收到针对所述工具栏区域显示的安全检测按钮的确认操作,则对所述代码编辑区域显示的智能合约代码进行安全检测,得到检测结果;
在所述智能合约开发界面中显示指定窗口,在所述指定窗口中显示所述检测结果。
9.如权利要求1-5任一所述的方法,其特征在于,所述智能合约开发界面还包括日志输出区域,所述日志输出区域用于记录所述智能合约开发界面中的操作信息。
10.一种智能合约开发装置,其特征在于,所述装置包括:
第一发送模块,用于向服务器发送智能合约开发界面显示请求;
第一显示模块,用于若接收到所述服务器发送的智能合约开发界面的界面数据,则根据所述界面数据显示所述智能合约开发界面,所述智能合约开发界面包括文件浏览区域、代码编辑区域和工具栏区域,所述文件浏览区域用于显示使用不同智能合约开发语言编写的智能合约文件;
第二显示模块,用于若接收到针对所述文件浏览区域显示的智能合约文件的选择操作,则将所述智能合约文件中的智能合约代码显示在所述代码编辑区域;
第二发送模块,用于若接收到针对所述代码编辑区域显示的智能合约代码的编辑操作,则向所述服务器发送携带有所述智能合约文件的合约标识的编辑请求,以指示所述服务器根据所述编辑请求对存储的所述智能合约文件进行编辑;
第三发送模块,用于若接收到针对所述工具栏区域显示的保存按钮的确认操作,则向所述服务器发送智能合约保存请求,以指示所述服务器对本次通过所述智能合约开发界面编辑的所有智能合约文件进行保存。
11.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210246099.8A CN114691096A (zh) | 2022-03-14 | 2022-03-14 | 智能合约开发方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210246099.8A CN114691096A (zh) | 2022-03-14 | 2022-03-14 | 智能合约开发方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691096A true CN114691096A (zh) | 2022-07-01 |
Family
ID=82138769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210246099.8A Pending CN114691096A (zh) | 2022-03-14 | 2022-03-14 | 智能合约开发方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691096A (zh) |
-
2022
- 2022-03-14 CN CN202210246099.8A patent/CN114691096A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427646B (zh) | 基于Appium的安卓App自动化测试框架构建方法和装置 | |
CN107615239B (zh) | 用于托管和发布软件包的基础架构 | |
US9608893B2 (en) | Methods and systems for parsing data objects | |
US9471282B2 (en) | System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component | |
US20230244465A1 (en) | Systems and methods for automated retrofitting of customized code objects | |
US10331425B2 (en) | Automated source code adaption to inject features between platform versions | |
US9632754B2 (en) | Auto generation and linkage of source code to test cases | |
US8266588B2 (en) | Creating projects in a rational application developer workspace | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN102270128A (zh) | 库一致性检查器 | |
CN113885870A (zh) | 应用程序更新方法、电子设备、终端设备及系统 | |
CN109284126B (zh) | 类库自动更新方法、装置、电子设备、存储介质 | |
CN115407977A (zh) | 一种信息编译方法、装置、设备及计算机可读存储介质 | |
CN117112060A (zh) | 组件库构建方法、装置、电子设备及存储介质 | |
KR101005498B1 (ko) | 테스트 라이브러리를 이용하는 휴대폰 어플리케이션 검증시스템 및 그 방법 | |
KR101114038B1 (ko) | 공통 언어 런타임 언어에서의 리소스에 대한 어드레스 지원 | |
CN108897588B (zh) | 一种用于模块间通信的路由方法和路由装置 | |
CN114461223A (zh) | 一种代码生成方法、装置及终端设备 | |
CN114217789A (zh) | 功能组件拓展方法、装置、设备、存储介质及程序产品 | |
KR101035097B1 (ko) | 모바일기기를 위한 검증이력관리 시스템 및 그 방법 | |
CN111552480B (zh) | 跨平台编译方法、装置、设备及可读存储介质 | |
CN117215558A (zh) | 安卓的基于可视化的软件开发方法、装置、设备及介质 | |
CN110334031A (zh) | 内存分配代码检测方法、装置、计算机设备及存储介质 | |
CN109213502B (zh) | 应用更新方法和装置 | |
CN116301886A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 |
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 |