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


Fabric支持開發模式,在開發者模式下,調試智能合約比較方便。但是這僅僅適用Fabric1.4,鏈碼安裝在peer節點上。

Fabric2.0雖然保留了開發者模式,但是鏈碼容器獨立運行,作為獨立的Docker容器,這種模式就不一定靈光了。

本文目的是記錄下探索Fabric鏈碼調試方法過程的嘗試及錯誤排查,最終的結果是沒有成功。

結論是,鏈碼盡管可能需要調試但是鏈碼開發者模式並不適用。

建議: 鏈碼編寫過程中小心點兒,搭建本地測試網絡,進行合約測試,沒有問題再部署到生產網絡。

 

一、測試環境

deepin 20.1

 

二、依賴條件

1. 克隆倉庫到本地:   https://github.com/hyperledger/fabric-samples.git

 

三、調試環境搭建

 1. 測試網絡搭建(第1個shell窗口)

1. 切換到如下目錄 cd chaincode-docker-devmode

執行如下命令,啟動docker容器

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

以上命令實現了,啟動如下4個容器:

 orderer   --排序節點,交易排序
peer         --對等節點,賬本存儲
cli              --鏈碼交互容器
chaincode    --鏈碼容器,運行鏈碼

 

 執行完成,容器如下:

 

 

 

2. 編譯鏈碼並運行(第2個shell窗口)

 (1)執行 docker exec --user root -it chaincode sh,進入容器

  (2) ls 查看目錄,abstore是我們要使用合約的目錄

切換到目錄/opt/gopath/src/chaincode/abstore/go

 編譯報錯 go build -o abstore

原因,國內網絡環境問題,需要設置go proxy代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

然后再次執行go build -o abstore,編譯成功。

執行 go mod vendor,項目依賴遷移到工程目錄vendor下。

 

 

 

 

運行鏈碼

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

 啟動鏈碼服務。

 

2. 鏈碼交互測試容器(第3個shell窗口)

 (1)執行 docker exec -it cli bash,進入容器

peer chaincode install -p /opt/gopath/src/chaincodedev/chaincode/sacc -n mycc -v 0

 

報錯如下,原因還是go proxy需要設置下。

 

再次安裝 peer chaincode install -p /opt/gopath/src/chaincodedev/chaincode/sacc -n mycc -v 0

2021-04-01 01:34:27.264 UTC [chaincode.platform.util] WriteFileToPackage -> DEBU 231 Writing file to tarball: src/vendor/google.golang.org/grpc/vet.sh
2021-04-01 01:34:27.264 UTC [chaincode.platform.util] WriteFileToPackage -> DEBU 232 Writing file to tarball: src/vendor/modules.txt
2021-04-01 01:34:27.652 UTC [msp.identity] Sign -> DEBU 233 Sign: plaintext: 0AC4070A5C08031A0C08A3C694830610...7FBFFC0E0000FFFF578D45CD00688B01
2021-04-01 01:34:27.652 UTC [msp.identity] Sign -> DEBU 234 Sign: digest: C917D88A1FB2335A5B89DC8ACE6FDA0A2DF60382684432E62DE0C0C3B94635DC
2021-04-01 01:35:35.005 UTC [chaincodeCmd] submitInstallProposal -> INFO 235 Installed remotely: response:<status:200 payload:"OK" >

實例化 peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc

報錯

Error: error getting channel (myc) orderer endpoint: error bad proposal response 500: Requested function GetChannelConfig not found.

 

探索到此為止,進行不下去了。。。。

 

猜測原因:可能是Fabric2.0的鏈碼實例化步驟去掉了,或修改了規則。 總之教程不適用了。

測試版本 Fabric 2.3.0

 

參考文章: https://blog.csdn.net/weixin_43839871/article/details/107002767

 

 

四、常見問題

 1. cli容器啟動失敗

1. 切換到如下目錄 cd chaincode-docker-devmode

 

 cli容器日志 docker logs cli

 

出現以上問題,說明docker目錄有殘留。執行docker-compose -f docker-compose-simple.yaml down -v ,然后重新docker-compose -f docker-compose-simple.yaml up就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM