天天看點

hyperledger fabric設定開發者模式

修改鍊碼後,總要從新部署,這在開發過程中很麻煩。設定開發者模式,就可以比較友善調試修改代碼。以fabric-sample的basic-network為事例。

作業系統:centos 7.6

  1. 修改docker-compose.yml
#修改peer節點,啟動時候開啟開發者模式
#command: peer node start
command: peer node start --peer-chaincodedev=true
#修改peer節點的端口映射,添加7052端口
port:
	- 7052:7052
           

這個端口就是我們在本地啟動chaincode連接配接peer節點時使用的端口,

可以通過 config/core.yaml 修改預設端口。

  1. 跑啟動腳本
./start.sh
           

腳本幫我們啟動了docker容器,建立channel,并把peer節點加入到channel。

  1. 設定環境變量,編譯鍊碼
cd fabric-samples/chaincode/chaincode_example02/go
# .env檔案位于鍊碼目錄下,作為全局環境配置檔案
# CORE_PEER_ADDRESS=peer:7052
echo 'export CORE_PEER_ADDRESS=127.0.0.1:7052'  >> .env
# CORE_CHAINCODE_ID_NAME=chaincodeName:chaincodeVersion
echo 'export CORE_CHAINCODE_ID_NAME=mycc:1.0'  >> .env
. .env
go run .
           

輸出結果

2019-02-07 20:55:49.076 CST [shim] setupChaincodeLogging -> INFO 001 Chaincode log level not provided; defaulting to: INFO
2019-02-07 20:55:49.076 CST [shim] setupChaincodeLogging -> INFO 002 Chaincode (build level: ) starting up ...

           

已經連接配接上了

  1. 啟動容器cli,進入容器
docker-compose -f docker-compose.yml up -d cli
docker exec -it cli /bin/bash
           
  1. 安裝鍊碼,初始化鍊碼,調用鍊碼
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode_example02/go
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init", "a", "100", "b", "200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'
           

在 go run . 的視窗,發現了fmt.Print的資訊。

ex02 Init
Aval = 100, Bval = 200
ex02 Invoke
Aval = 90, Bval = 210
           

Ctrl-c,修改鍊碼,再go run .

發現修改後的代碼也能跑。甚至go的dlv也能使用。