上篇文章我们结合vsc内置的5858端口调试,和nodejs内置的5858调试端口,在docker下开放5858端口,使得主机vsc可以对docker下的hfc应用(本质上是个nodejs应用)进行debug。
但如果hfc运行在docker下,对程序开发来说仍然很蛋疼,比如我想引入meteor作为前端框架,总不能到docker下去折腾吧?!
所以这篇文章讲如何在主机下运行和调试hfc。
目标
- 在Bluemix服务上建立区块链实例
- hfc程序与Bluemix上的区块链实例交互
在Bluemix服务上建立区块链实例
Bluemix提供了30天的免费服务:
注册完成之后创建一个blockchain应用:
商用价格不便宜:
创建完毕之后到这里把json凭证复制到本机备用,这个文件中描述了您刚创建的这个区块链网络的详细信息,下一步hfc与服务交互需要依赖这些信息:
git clone hfc的代码到本地
代码地址:https://github.com/IBM-Blockchain/SDK-Demo
用vsc打开代码所在的目录
vsc内置了集成终端,默认打开的目录为当前目录,非常好用:
- 直接在集成终端下执行
npm install
,下载nodejs依赖文件; - 用前面保存到本地的json凭证替换
ServiceCredentials.json
内容;
准备调试
第一次运行,vsc不知道你想干嘛,会主动问你,选Node.js
然后它会生成一个默认的launch.json
文件,修改它如下:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
"program": "${workspaceRoot}/helloblockchain.js",
"cwd": "${workspaceRoot}",
"env": {
"GRPC_TRACE":"all",
"DEBUG":"hfc"
}
},
{
"type": "node",
"request": "attach",
"name": "附加到进程",
"port": 5858
}
]
}
我们的修改主要是指定了helloblockchain.js
为程序入口,并且增加了两个环境变量以便输出更详细的调试信息。
开始调试
切换集成终端到显示调试输出:
调试状态下可以设置断点、观察变量、或者进入到hfc库函数内进行单步跟踪:
这个用例演示了用户登录、建立新用户、deploy
和invoke
chaincode,
如果顺利的话,输出应该这样的:
坑
这个连接Bluemix的示范程序不稳定(不确定是否我的网络环境使然),我遇到以下异常:
比如这个, 作者说是两次deploy引起的,但是又不是每次都出现;
还有这个, 抛出的异常是:
ERROR: failed to register Error: Identity or token does not match
实际上并非你的用户名密码不对,而是你在不同的地方register了两次(我是在同一台机器的两个目录下运行),解决办法就是把Bluemix上的实例干掉,重新建一个。
下一步
- Bluemix的商用服务还是太贵,准备尝试主机hfc与本地的docker网络交互。
- 引入meteor作为前端框架