Fabric2.0 使用開發模式(dev 模式)測試

dev模式

  dev模式不是Fabric 2.0引入的,1.x版本就已存在的。對於Fabric 2.0來說,可以構建外部的鏈碼容器,對於運維和開發調試來說,變得越來越方便。在2.0版本之前,鏈碼是通過節點執行和維護的。開發模式在鏈碼“編碼/編譯/運行/調試”的開發生命週期中很有用。本節不考慮外部鏈碼的情形,後續會有博客去介紹外部鏈碼。

基礎環境

  確保已下載Fabric2.0版本鏡像及二進制工具;已克隆fabric-samples。

實踐

  fabric-samples 目錄下執行:

cd chaincode-docker-devmode

  測試過程需要開啓3個shell窗口,假設爲shell1 ,shell2,shell3

shell1啓動網絡

  fabric-samples/chaincode-docker-devmode目錄下執行:

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

  上邊的命令啓動了一個網絡,網絡的排序模式爲 SingleSampleMSPSolo ,並且以“開發模式” 啓動了 peer 節點。它還啓動了另外兩個容器 :一個是鏈碼環境,另一個是和鏈碼交互的 CLI。值得注意的一點是Peer 節點不會使用 TLS 因爲 dev 模式不支持 TLS。

shell2編譯並啓動鏈碼

  fabric-samples/chaincode-docker-devmode目錄下執行:

docker exec -it chaincode sh

  執行成功,應該看到/opt/gopath/src/chaincode $
繼續輸入命令:

cd sacc
go build

  此時可能報錯:
/opt/gopath/src/chaincode/sacc $ go build
go: github.com/hyperledger/[email protected]: Get https://proxy.golang.org/github.com/hyperledger/fabric-chaincode-go/@v/v0.0.0-20190823162523-04390e015b85.mod: dial tcp 34.64.4.81:443: i/o timeout
  這是因爲由於被牆無法下載依賴。這裏設置go代理爲阿里雲並重新執行 go build:

export GOPROXY=http://mirrors.aliyun.com/goproxy/
go build

  運行鏈碼:

CORE_CHAINCODE_ID_NAME=mycc:0 CORE_PEER_TLS_ENABLED=false ./sacc -peer.address peer:7052

  鏈碼從 peer 節點啓動並且日誌表示鏈碼成功註冊到了 peer 節點上。注意,在這個階段鏈碼沒有關聯任何通道。這個過程通過 instantiate 命令的之後的步驟完成。

shell3使用鏈碼

  即使在 --peer-chaincodedev 模式下,仍然需要安裝鏈碼,這樣鏈碼才能正常地通過生命週期系統鏈碼的檢查。這個需求能會在未來的版本中移除。

  進入 CLI 容器來執行這些調用:

docker exec -it cli bash
peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc

  現在執行一個調用來將 “a” 的值改爲 20

peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc

  最後,查詢 a ,返回結果:20

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

在這裏插入圖片描述

測試新鏈碼

  前面測試過程中,使用的是fabric-samples/chaincode/sacc下的鏈碼,實際測試時可以通過更改掛載路徑,以便測試不同鏈碼。

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