一. 编写代码
参考 https://blog.csdn.net/qq_40185499/article/details/103900268
二. 部署和测试
参考 https://blog.csdn.net/yang731227/article/details/84584924
1. 启动网络
即启动区块链。
打开文件,进入 /go/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode目录中,右键打开一个终端A,执行下面代码:
---删除所有活跃的容器---
docker rm -f $(docker ps -aq)
---清理网络缓存---
docker network prune
---启动网络---
docker-compose -f docker-compose-simple.yaml up
2. 启动链码
即部署和编译智能合约。
(1). 打开一个新的终端B,进入 chaincode 容器
docker exec -it chaincode /bin/sh
(2). 编译链码
cd hello
go build
报错1:
解决方案:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
报错2:
解决方案:以root身份重新进入容器,再次编译
docker exec -it -u root chaincode sh
(3). 启动链码
CORE_CHAINCODE_ID_NAME=mycc:0 CORE_PEER_TLS_ENABLED=false ./hello -peer.address peer:7052
3. 测试链码
即进行实例化和调用。
(1). 打开一个新的终端C,进入 cli 容器
docker exec -it cli bash
(2). 安装链码
--- -n是安装的名字,-v是version---
peer chaincode install -p chaincode/hello -n mycc -v 0
(3). 实例化
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init", "hello","world"]}' -C myc
(4). 调用链码
peer chaincode query -n mycc -c '{"Args":["query","hello"]}' -C myc
4. 退出
一定要down再关虚拟机,不然虚拟机可能会打不开。
docker-compose -f docker-compose-simple.yaml down
三. 总结
之前看了很多博客,但是不上手实践是真的不知道会出现哪些奇奇怪怪的问题。参考了多个博主的文章,自己再动手实践了下,为了防止自己下次在出现问题到处找解决方案,而且刚入门,链码的代码部分都是参考别人的,暂时了解fabric是怎么使用的,就记录下了这篇文章。