fabric的starter-kit确实是快速搭建和认识fabric的途径,但开发人员更关注的其实是hfc。starter-kit的介绍和hfc的介绍脱节了。
本篇要实现的是:主机的hfc通过grpc与本机docker下的node交互。
参考文档:
- Chaincode的开发环境建立[我走的Option 2 ,Not Vagrant]
-
hfc开发环境建立
[注意:这篇讲到的fabric network在第一部分已经完成了,starter-kit与示例的app.js不搭调,按我的文档会更顺利]
Chaincode的开发环境搭建
这一步的目标是:在docker下运行一个member节点提供用户注册服务,运行一个 peer节点提供chaincode调试服务。
用docker镜像启动节点
这一部分按照上面的文档做就好,附上docker-compose.yml
内容:
membersrvc:
image: hyperledger/fabric-membersrvc
ports:
- "7054:7054"
command: membersrvc
vp0:
image: hyperledger/fabric-peer
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
links:
- membersrvc
command: sh -c "sleep 5; peer node start --peer-chaincodedev"
编译和运行chaincode
仍然按照文档做就好,主要做了几件事:
- 安装go执行环境,mac下我的
GOPATH
环境变量是自己手工设置的; - 下载相关代码;
- 编译和运行chaincode;(运行起来之后,其实处于等待被
invoke
状态)
验证节点
搭建完成之后docker-compose up
启动节点,
然后用Rest API进行验证,我用的Postman。
也可以用Rest API去deploy
和invoke
上面的chaincode试试。
hfc的开发环境搭建
上面的工作结果:我们已经可以通过Rest API方式deploy
和invoke
chaincode,下面我们要用hfc提供的grpc方式代替Rest API方式做同样的事。
- 安装nodejs
nodejs内置了npm,安装完之后,安装hfc - npm install -g hfc
其中-g
表示全局可见,没有-g
的话只有当前目录可见。 - 下载和修改示例代码
curl -o app.js https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/web-app.js
这个示例代码,依赖3个外部传入的环境变量,docker下是通过docker-compose.yml
设置和传入的,为了省事,我们直接赋值:
//var PEER_ADDRESS = process.env.CORE_PEER_ADDRESS;
//var MEMBERSRVC_ADDRESS = process.env.MEMBERSRVC_ADDRESS;
var PEER_ADDRESS = "localhost:7051";
var MEMBERSRVC_ADDRESS = "localhost:7054";
...
//var mode = process.env['DEPLOY_MODE'];
var mode = 'dev';
运行hfc
在vsc下以nodejs方式运行示例程序,顺利的话,vsc调试面板会输出以下信息:
同时,终端下运行的chaincode也会输出被invoke
的调试信息: