Fabric Dev開發除錯模式的搭建過程

強吉義發表於2018-07-31

在利用Fabric開發Chaincode的時候,除錯Chaincode顯得尤為不方便,因為Chaincode正常應該執行在Docker容器中,每次修改Chaincode後想要使其更改生效必須得對Chaincode進行升級重新例項化,給我們的開發除錯帶來了很大的不便。下面給大家介紹一下如何啟動並利用Dev模式來開發除錯Chaincode。

1、從github上clone Hyperledger Fabric的原始碼到本地,切換進入fabric目錄,執行如下命令make可執行檔案

make release

將$GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin加入 ~/.profile 中,執行 source ~/.profile 生效

2、啟動orderer

ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo orderer
ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo nohup orderer >/dev/null 2>&1 &  #後臺啟動

3、啟動peer

peer node start --peer-chaincodedev=true
nohup peer node start --peer-chaincodedev=true >/dev/null 2>&1 &  #後臺啟動

4、用configtxgen工具生成通道交易配置檔案用於建立通道

configtxgen -channelID ch1 -outputCreateChannelTx ch1.tx -profile SampleSingleMSPChannel
configtxgen -channelID ch2 -outputCreateChannelTx ch2.tx -profile SampleSingleMSPChannel

5、建立通道ch1和ch2

peer channel create -o 127.0.0.1:7050 -c ch1 -f ch1.tx
peer channel create -o 127.0.0.1:7050 -c ch2 -f ch2.tx

6、加入通道

peer channel join -b ch1.block
peer channel join -b ch2.block

7、自此,peer跟orderer就已經建立了關係,可以啟動我們要除錯的鏈碼了 

cd examples/chaincode/go/chaincode_example02
go build -o example02
CORE_PEER_ADDRESS=10.0.2.15:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./example02
  
注意:在dev模式下,CORE_PEER_ADDRESS這個引數不能用127.0.0.1,而應該用啟動peer時候例項化Gossip所對應的ip地址
2018-06-21 03:48:21.626 UTC [gossip/gossip] start -> INFO 01b Gossip instance 10.0.2.15:7051 started

否則會在啟動鏈碼的時候報錯,具體報錯資訊如下:
2018-06-21 03:52:43.648 UTC [shim] SetupChaincodeLogging -> INFO 002 Chaincode (build level: ) starting up ...
2018-06-21 03:52:46.654 UTC [shim] userChaincodeStreamGetter -> ERRO 003 context deadline exceeded error trying to connect to local peer

 8、在peer上安裝註冊要除錯的Chaincode

peer chaincode install -n mycc -v 0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

9、在peer上例項化Chaincode

peer chaincode instantiate -n mycc -v 0 -c `{"Args":["init","a","100","b","200"]}` -o 127.0.0.1:7050 -C ch1
peer chaincode instantiate -n mycc -v 0 -c `{"Args":["init","a","100","b","200"]}` -o 127.0.0.1:7050 -C ch2

10、測試呼叫Chaincode

peer chaincode invoke -n mycc -c `{"Args":["invoke","a","b","10"]}` -o 127.0.0.1:7050 -C ch1
peer chaincode invoke -n mycc -c `{"Args":["invoke","a","b","10"]}` -o 127.0.0.1:7050 -C ch2

11、測試查詢Chaincode

peer chaincode query -n mycc -c `{"Args":["query","a"]}` -o 127.0.0.1:7050 -C ch1
peer chaincode query -n mycc -c `{"Args":["query","a"]}` -o 127.0.0.1:7050 -C ch2

以上就是Fabric Dev模式下開發除錯Chaincode的基本步驟,如果我們除錯的Chaincode本地做了修改,只需要將第7步中修改過後的Chaincode重新編譯,然後重新啟動。直接呼叫即可生效,而無需再次對peer側的Chaincode進行升級例項化等操作,會大大提高我們開發除錯Chaincode的效率,希望能夠對大家有所幫助。

相關文章