前言
用fabric-samples里自带的test-network网络,一个orderer,两个peer,其中orderer去容器启动,peer用容器启动。
一、调试工具
goland,可能遇到的问题见这里
二、前期准备
拉取fabric2.1源码
cd fabric
mkdir work_dir && cd work_dir
mkdir bin
mkdir orderer # 放置orderer程序运行产生的文件
# 拷贝test-network必要的配置
cp <fabric-samples path>/config/* ./config/
cp <fabric-samples path>/test-network ./
cp -r <fabric-samples path>/chaincode ./
# 运行一下验证拷贝过来的配置是能用的
cp <fabric-samples path>/bin/* ./bin/ # 先用下载下来的bin测试,待源码编译的时候会自动将其替换掉
cd test-network
./network down
./network up
# 结果打印应该提示成功,略
三、添加go build配置
goland中打开fabric项目,Run/Debug Configuration,添加go build配置。(orderer配置的yaml文件:/fabric/work_dir/test-network/docker/ docker-compose-test-net.yaml):
把上面的环境变量编辑到go build配置中,如下:
Environment一项:
注意添加最后一行是关于orderer配置 的yaml文件里没有的,这是告诉程序启动的时候去./config找orderer.yaml文件。
四、(1)修改orderer.yaml文件
vi work_dir/config/orderer.yaml
修改账本的位置
(2)/work_dir/test-network/configtx/configtx.yaml
OrdererType选择kafka:
五、开始debug
(1)清理环境
cd work_dir/test-network
./network.sh down
# 清理orderer的FileLedger目录,以后每次网络重置都需要做这步,./byfn.sh down脚本无法照顾到IDE启动的
# orderer
rm -rf ../orderer/*
(2)启动peer容器
wang@wang:~/go/src/github.com/hyperledger/fabric/work_dir/test-network$ ./network.sh up
(3)debug
先把断点打在 fabric/cmd/orderer/main.go中,然后点击debug
(4)发送交易
wang@wang:~/go/src/github.com/hyperledger/fabric/work_dir/test-network$ ./network.sh createChannel
wang@wang:~/go/src/github.com/hyperledger/fabric/work_dir/test-network$ ./network.sh deployCC
后续内容详见这篇文章