環境搭建完畢,需要的工具和鏡像安裝完畢,就可以進行chaincode測試了,接下來參考官方教程運行first-network。
進入first-netwok:
cd first-network
first-network的文件結構如下

在first-network目錄下有兩個自動化腳本byfn.sh和eyfn.sh,這兩個腳本的啟動順序是先執行byfn.sh再執行eyfn.sh(eyfn.sh不是必須的,eyfn.sh的作用稍后再介紹)。
byfn.sh的執行格式為:./byfn.sh (up|down|restart|generate|upgrade)
執行參數說明:
up:啟動
down:清除網絡
restart:重新啟動
generate:生成證書及創世塊
upgrade:將網絡從1.0升級到1.1
-c:用於指定channelName,默認值"mychannel"
-t:CLI timeout時間,默認值10
-d:延遲啟動,默認值3
-f:使用指定的網絡拓撲結構文件,默認使用docker-compose-cli.yaml
-s:指定使用的數據庫,可選 goleveldb或couchdb
-l:指定chaincode使用的語言,可選golang 或node
-i:指定鏡像tag,默認 "latest"
詳細參數可通過./byfn.sh help查看。
啟動first-network網絡:
因為測試chaincode不需要其他輔助的功能,只要將網絡啟動即可。
./byfn.sh up
執行過程如下

遇到提示輸入“y”。

最終看到輸出上面的信息,證明啟動成功。
first-network會生成1orderer+4peer+1CLI的網絡結構,整個網絡包括2個org。
輸入命令
docker ps
列出所有已啟動的容器。

整個網絡的啟動執行了以下操作:
1、生成創世區塊、通道、每個組織的msp等信息,保存在channel-artifacts文件夾中,配置信息對應configtx.yaml文件。
2、生成orderer和peer使用的公私鑰和證書等信息,保存在crypto-config文件夾中,配置信息對應crypto-config.yaml文件。
3、創建channel、加入channel、為通道的每個組織設置錨節點,安裝chaincode,實例化chaincode,查詢chaincode,調用chaincode等操作。
添加組織:
eyfn.sh腳本提供了增加組織的功能,啟動./eyfn.sh up會安裝jq,等待時間稍長一些。

執行成功后,使用docker ps查看已啟動的容器,會發現已經添加了org3。
手動測試chaincode:
測試chaincode,需要先進入到cli容器,后續的操作都在容器內進行。
docker exec -it cli bash
按照官方給出的,有a和b兩個賬戶,查看a賬戶的余額。
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
a賬戶的余額是80。
查看b賬戶的余額
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
b賬戶的余額是220
下面做以下轉賬測試,把b賬戶的錢轉給a賬戶20。
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","b","a","20"]}'

再分別查看a和b的賬戶,a的賬戶變為100,b的賬戶變為200。
整個網絡測試完畢,使用exit退出容器。接下來就可以進行下一步的學習了。
