Hyperledger fabric: 使用dev模式调试链码(
2018-04-20 本文已影响68人
司青玄
fabric的链码开发是比较痛苦的,主要是调试起来特别繁琐。在不使用dev模式的情况下,写好chaincode之后不能在本地测试,必须将代码部署到docker, 然后再install,instantiate,这样peer节点会在新的容器中启动你的chaincode。更可怕的是,你只能通过docker logs
查看chaincode日志,没有任何办法调试,只能靠打日志的方式debug。更更可怕的是,每当你修改完golang代码后,你都要重新再跑一遍上面的这些流程。
使用dev模式启动peer节点虽然还是需要安装、初始化链码,但区别在于你只需要执行一次这个步骤就可以了,并且chaincode可以运行在本地(比如直接在IDE启动),这样就允许我们使用IDE的调试功能。此外,当修改了代码后,直接在IDE中编译运行就能看到修改后的chaincode了。
要使用dev模式,首先修改运行peer的容器的启动命令,添加--peer-chaincodedev
参数,例如在docker-compose.yaml
中:
command: peer node start --peer-chaincodedev=true
然后要注意将7052
端口映射到宿主机端口:
ports:
- 7052:7052
这个端口就是我们在本地启动chaincode连接peer节点时使用的端口。注意,这里使用的是fabric 1.1版本,如果是1.0版本,这个端口是7051,可以通过修改core.yaml
文件调整默认端口。
接下来,登陆cli容器,向往常一样install
, instantiate
链码:
peer chaincode install -n 链码名 -v 1 -p xxx.com/xxxapp
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n 链码名 -v 版本号 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
上面命令中的-P
(背书策略)根据实际情况进行调整。
下一步我们准备在IDE中直接运行chaincode。在此之前要先配置两个环境变量:
CORE_PEER_ADDRESS=127.0.0.1:7052
CORE_CHAINCODE_ID_NAME=链码名:版本号
然后就可以启动链码了,调试效率大大提升。