一直以來,寫完鏈碼進行測試都要先搭建一個Fabric環境,然后安裝鏈碼進行測試,實際上Fabric提供了最為簡單的方式可以允許我們對編寫的應用鏈碼進行功能測試,不需要搭建一個完整的Fabeic環境。而且測試完直接停止網絡也不會擔心有殘余的文件沒有刪除干凈,以至於搭建正式環境的時候出現各種錯誤。
進入正題好了,Fabric提供了一個開發模式,是專門用來對鏈碼進行測試用的。
其實,這些內容在Fabric官方文檔中都是有的,但是一般我們都忽略掉了,所以簡單說一下步驟
官方文檔地址:點這里
1.先決條件
首先,也是需要一些先決條件,比如Golang
環境,Docker
容器,docker-compose
工具,等等,這些不再說明,可以看這里完成先決條件的安裝。
2.開始
完成准備工作后,我們需要將Fabric-sample
文件夾從Github
上pull
下來,地址在這里,最簡單的方式是直接下載壓縮文件,然后到本地解壓出來,但是推薦使用IDE工具通過git
工具從Github
上拉取下來,具體方法自行百度。
完成之后,會有一個fabric-sample
文件夾,將該文件夾放在$GOPATH/src/github.com/hyperledger/
路徑下,路徑不存在自行創建。
切換版本
進入fabric-samples
文件夾,執行以下命令,將Fabric版本切換至1.4,如果使用其他版本請下面部分下載二進制與Docker鏡像的時候要對應。
git checkout release-1.4
3.二進制文件以及Docker鏡像
下載二進制文件是比較容易出錯的地方,因為容易因為版本不匹配導致網絡啟動失敗,所以在下載二進制文件的時候一定要注意使用的版本。
curl -sS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o ./scripts/bootstrap.sh
chmod +x ./scripts/bootstrap.sh
## ./scripts/bootstrap.sh [version] [ca version] [thirdparty_version]
這里需要輸入三個版本號,第一個是Fabric的版本號,第二個是Ca的版本號(在這里我們用不到),第三個是第三方工具的版本號。
我們之前是使用了1.4的Fabric,所以我們直接指定好版本就好了。
- Fabric >> 1.4.3(只要前綴是1.4就可以)
- CA >> 1.4.3
- ThirdParty >> 0.4.15
完整的命令為:
#記得要在bootstrap.sh文件的上一級目錄進行執行。
./scripts/bootstrap.sh 1.4.3 1.4.3 0.4.15
或者直接將版本號在文件中修改:
打開剛下載的bootstrap.sh
文件,前面幾行就是指定版本號的,自行修改就好,修改完直接使用命令進行下載就好了。
./scripts/bootstrap.sh
4.測試鏈碼
前面幾部沒有出現問題的話,到這里我們就可以對鏈碼進行測試了,進入fabric-sample/chaincode-docker-devmode
文件夾下,執行以下命令:
docker-compose -f docker-compose-simple.yaml up
如果沒有錯誤的話,我們的開發環境已經准備好了,接下來是對鏈碼進行測試的步驟:
- 將編寫的鏈碼放到
fabric-sample/chaincode/
文件夾下
# 打開第二個終端執行:
docker exec -it chaincode sh
如果已經將鏈碼放到fabric-sample/chaincode/
文件夾內,執行以下命令應該可以看到自己的鏈碼:
ls
- 編譯鏈碼,以官方的例子為例:
cd chaincode_example02/go
go build -o chaincode_example02
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./chaincode_example02
3.安裝與實例化:
打開第三個終端執行:
docker exec -it cli bash
# 以下命令按照自己的鏈碼內容自行修改
peer chaincode install -p chaincodedev/chaincode/chaincode_example02/go -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
4 測試
如果以上步驟沒有報錯的話,准備工作已經全部完成,剩下的就是測試自己的鏈碼了。如果鏈碼需要更新的話,只需要關閉網絡:
docker-compose -f docker-compose-simple.yaml down --volumes
重新啟動網絡並進行測試就好了。