Fabric chaincode調試

一、參考:
https://github.com/hyperledger/fabric-samples/tree/release-1.3/chaincode-docker-devmode
https://hyperledgercn.github.io/hyperledgerDocs/chaincode_developers_zh/#chaincode_7
http://www.zhayujie.com/fabric/chaincode-test.html
但是得注意docker-compose-simple.yaml中peer節點的命令,並將原來的註釋掉,不然可能會報錯(可能是我fabric的bin命令用的是1.2版本,而此處fabric-samples用的是1.3版本)。
在這裏插入圖片描述

二、編寫自動化腳本簡化調試流程(注意叫腳本的權限)。
1、在終端1執行啓動腳本命令./startFabric.sh(目錄:fabric-samples/chaincode-docker-devmode)。腳本代碼如下

#!/bin/bash
set -e

docker-compose -f docker-compose-simple.yaml up

輸出如下表示網絡啓動成功
在這裏插入圖片描述
2、在終端2執行鏈碼運行環境腳本./chaincode.sh(目錄:fabric-samples/chaincode-docker-devmode)。腳本代碼如下

#!/bin/bash
set -e

docker exec -it chaincode ./chaincode.sh

執行完此命令將進入容器chaincode的工作目錄(volume映射:./../chaincode:/opt/gopath/src/chaincode),並執行該目錄下的./chaincode.sh(目錄:fabric-samples/chaincode)。腳本代碼如下

#!/bin/bash
set -e

cd mychaincode
go build -o ehr 
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=ehr:0 ./ehr

輸出如下表示鏈碼運行環境搭建成功
在這裏插入圖片描述
3、在終端3執行鏈碼安裝並實例化的腳本./client.sh(目錄:fabric-samples/chaincode-docker-devmode)。腳本代碼如下

#!/bin/bash
set -e

docker exec cli peer chaincode install -p chaincodedev/chaincode/mychaincode -n ehr -v 0
printf "chaincode installed successfully!\n\n"

docker exec cli peer chaincode instantiate -n ehr -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
printf "chaincode instantiated successfully!\n\n"
printf "you can run 'peer chaincode [function]...' to invoke chaincode function!\n\n"

docker exec -it cli bash

執行完此步之後鏈碼ehr((目錄:fabric-samples/chaincode/mychaincode/ehr.go)已經安裝並實例化成功。
在這裏插入圖片描述
實例化過程中會執行鏈碼中的Init函數,在終端2會打印出語句fmt.Printf("")的結果
在這裏插入圖片描述
鏈碼中的Init函數如下
在這裏插入圖片描述
4、終端3調用
調用invoke函數

peer chaincode invoke -n ehr -c '{"Args":["invoke","a","b","10"]}' -C myc

結果
在這裏插入圖片描述
終端2打印
在這裏插入圖片描述
調用query函數

peer chaincode query -n ehr-c '{"Args":["query","a"]}' -C myc

結果
在這裏插入圖片描述
終端2打印
在這裏插入圖片描述
三、修改chaincode再次調試步驟(不用關閉3個終端窗口)
1、先在終端3中執行exit退出容器
在這裏插入圖片描述
然後再執行腳本./stopFabric.sh關閉網絡,腳本代碼如下

#!/bin/bash
set -e

docker rm -f $(docker ps -aq)
docker network prune -f
docker volume prune -f

在這裏插入圖片描述
2、編寫鏈碼,然後按照步驟二執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章