Fabric 提供了 chaincode 的开发模式,使 chaincode 在开发阶段可以进行快速开发、构建、运行、调试,非常好用。
步骤
(1)下载 fabric-samples
git clone https://github.com/hyperledger/fabric-samples.git
(2)启动 chaincode-docker-devmode
cd fabric-samples/chaincode-docker-devmode
docker-compose -f docker-compose-simple.yaml up
会输出大量启动信息,等待启动完成。
(3)启动 chaincode
打开一个新终端窗口执行:
docker exec -it chaincode bash
进入 chaincode 容器后执行:
cd sacc
go build
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
(4)调用 chaincode
打开一个新终端窗口执行:
docker exec -it cli bash
进入 cli 容器后执行:
peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
(5)修改 chaincode
通过 docker-compose-simple.yaml 可以看到 chaincode 容器挂载了本地的 "./../chaincode" 目录,其中就有 sacc 项目,修改 sacc.go,在 set 和 get 方法中添加一些打印信息,进入 chaincode 容器的 sacc 目录,查看 sacc.go,可以看到刚才添加的打印语句,重新执行:
go build
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
然后在 cli 容器中执行:
peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
chaincode 容器窗口中就可以看到之前添加的打印信息了。