使用VS Code开发智能合约

简介: 理论基础Hyperledger Fabric提供了一个基于docker和docker-compose的“单机版环境”,同时,peer节点可以运行在一种特殊的“devmode”下。这种模式下,peer不会自己启动特定的链码容器,允许我们使用调试模式直接运行一个链码程序,并让他连接到peer上。

理论基础

Hyperledger Fabric提供了一个基于docker和docker-compose的“单机版环境”,同时,peer节点可以运行在一种特殊的“devmode”下。这种模式下,peer不会自己启动特定的链码容器,允许我们使用调试模式直接运行一个链码程序,并让他连接到peer上。
更详细的说明可以参考官方文档:https://hyperledger-fabric.readthedocs.io/en/release-1.4/peer-chaincode-devmode.html

VS Code插件

自己手动安装和应用”单机版环境“还是比较繁琐的。好在我们有VS Code以及“IBM Blockchain Platform”插件 https://marketplace.visualstudio.com/items?itemName=IBMBlockchain.ibm-blockchain-platform
就让我们来看看怎么在VS Code环境里搞定Fabric的合约开发、调试、部署整个流程吧!

环境准备

VS Code V1.32 或更高版本。  https://code.visualstudio.com/
Docker V17.06.2-ce 或更高版本。  https://www.docker.com/get-started
Docker Compose V1.14.0 或更高版本。  https://docs.docker.com/compose/install/
如果要开发 Go 智能合同,那么需要安装 Go V1.12 或更高版本。  https://golang.org/dl/
如果要开发 Node 智能合同,那么需要安装 Node V8.x 或更高版本以及 npm V5.x 或更高版本。  https://nodejs.org/en/download/
如果要开发 Java 智能合同,那么需要安装 Java JDK V8。 https://openjdk.java.net/install/
这些都准备完成,通过IBM Blockchain Platform插件的检查后,我们就可以继续啦!

1

开发chaincode

这里我们就以Fabric官方golang版本的chaincode_example02为例。看看怎么打包、部署、调试chaincode。

注意:
区块链插件不会理解go语言插件中对于GOPATH的设置,因此启动VS Code前需要确保导出来GOPATH环境变量

export GOPATH=<你的GOPATH>

启动VS Code,打开合约项目:

cd $GOPATH
mkdir -p github.com/hyperledger
cd github.com/hyperledger
git clone https://github.com/hyperledger/fabric-samples
cd fabric-samples/chaincode/chaincode_example02/go/
code .

2

打包合约、启动本地Fabric网络

3

我们可以在VS Code的左侧找到插件入口。

  1. 通过插件的SMART CONCONTRACTS->Package Open Project来打包chaincode。点击后插件会提示你输入链码的名称和版本。这里我的链码取名为gocc,版本1.0。
  2. 通过插件的FABRIC ENVIRONMENTS->Local Fabric,来启动一个本地Fabric网络。

    • 启动会比较慢,需要拉一堆docker镜像,请大家耐心等待。
    • 插件就是封装了官方的单机版,如果过程中出错,可以在VS Code的输出中看到错误信息。

安装、实例化链码

4
当我们打包完成,并且启动了本地Fabric网络后,就可以安装、实例化链码了。

  1. 通过插件的FABRIC ENVIRONMENTS->+Install来安装链码。

    • 选择之前我们创建的gocc@1.0。
  2. 通过插件的FABRIC ENVIRONMENTS->+Instantiate来实例化链码。

    • 选择我们之前创建并安装的gocc@1.0
    • 输入初始化函数 init
    • 输入函数初始化参数 ["a","100","b","200"]
    • collection config file配置选择No(这是一个链码的高级安全功能,后续的系列文章会有介绍)

调用链码

5

  1. 通过插件提供的Evaluate Transaction和Submit Transaction来调用链码(shift+command+p 是VS Code的插件命令快捷键,调出后输入tran,可以快速找到这些功能)

    • 选择链码:gocc@1.0
    • 输入函数:query
    • 输入参数:["a"]
    • 输入transient data,我们直接回车(这也是链码的高级安全功能,后续的系列文章会有介绍)
  2. 我们可以在VS Code的输出窗口看到查询结果,a的余额有100

调试链码

6

在VS Code调试界面新增加一个调试配置。选择Go智能合约debug配置。
7

然后我们需要给合约运行加上必要的环境变量,目前只有一个"CORE_PEER_TLS_ENABLED":"false"是必须的。
配置完成后,就可以用VS Code的调试功能运行这个合约了。运行前系统会要去我们填写合约的名称和版本,在这个例子中,合约名称就是gocc,版本1.0

8

我们可以为程序设置断点。我们可以使用之前的方法调用链码。在调用链码过程中,程序就会停在断点上了。示例的这次调用,我故意填写了一个不存在的账户"A",通过单步调试,可以看到,调试中程序走到了相应逻辑中,最后报错返回。

上云

好啦,看到这里,相信本地链码的开发、调试都难不倒你了。那么有什么办法能方便的发布链码到云上呢?答案就是另一款VS Code插件:AlibabaCloud BaaS VS Code Extension

联系我们

欢迎感兴趣的同学加入钉钉群(钉钉群号: 23181816)。
钉钉群

目录
相关文章
|
5月前
|
Web App开发 JavaScript iOS开发
[√]使用vscode开发油猴Tampermonkey脚本
[√]使用vscode开发油猴Tampermonkey脚本
286 0
|
5月前
|
IDE Go 开发工具
Go开发IDE全览:GoLand vs VSCode全面解析
Go开发IDE全览:GoLand vs VSCode全面解析
193 0
|
4月前
|
移动开发 前端开发 JavaScript
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
|
6月前
|
网络协议 Ubuntu 网络安全
使用VScode SSH公网远程连接本地服务器开发【无公网IP内网穿透】
使用VScode SSH公网远程连接本地服务器开发【无公网IP内网穿透】
|
1月前
|
Linux 网络安全 开发工具
嵌入式中利用VS Code 远程开发原理
嵌入式中利用VS Code 远程开发原理
30 0
|
6月前
|
网络协议 Ubuntu Linux
VSCode使用Remote SSH远程连接Linux服务器【远程开发】
VSCode使用Remote SSH远程连接Linux服务器【远程开发】
|
1月前
|
网络协议 Ubuntu Linux
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
110 0
|
2月前
|
Linux C++
使用VS Code远程开发小游戏,并实现公网访问本地游戏
使用VS Code远程开发小游戏,并实现公网访问本地游戏
25 0
|
3月前
|
Linux C++
【VS Code开发】使用Live Server搭建MENJA小游戏并发布至公网远程访问
【VS Code开发】使用Live Server搭建MENJA小游戏并发布至公网远程访问
28 0
|
3月前
|
IDE 前端开发 搜索推荐
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
73 0