fabric安裝請查看這裏,很全的fabric 安裝資料。
可能會遇到的bug,golang的環境配置問題。golang的環境變量配置請參考這裏。這裏環境編譯的命令爲
sudo gedit /etc/profile
or
sudo vim /etc/profile
vim 退出命令爲:wq,當時犯傻啦,用的:wq!,出現了swp文件。(swp文件需要刪除)
golang可能因爲很多牆的原因,go get命令下載依賴很麻煩。所以改一下鏡像
安裝過程中可能會遇到很多權限問題所以執行每條命令的時候最好加上sudo
我爲了省力,把文件的權限改成了都改爲可讀寫可執行(777)
修改命令爲sudo chmod -R 777 "filename"
安裝的過程中可能會遇到curl問題,設置了代理後,可能需要暫時繞過代理。需要使用的命令爲:curl -x ""
curl -x "" http://www.stackoverflow.com
使用sudo apt-get update時,可能會提示GPG錯誤:由於沒有公鑰,無法驗證下列簽名
安裝完成後,需要進行測試環節
測試命令:
./network.sh up (啓動網絡)
./network.sh createChannel(創建通道,默認通道名字爲mychannel)
./network.sh deployCC(部署鏈碼,默認是go語言版本)
在執行鏈碼的時候可能會因爲執行sudo 命令改變的go語言的環境變量(重置到默認的環境變量)
解決方案爲:(忘記在哪個博客啦。我找到在放出來)
部署鏈碼:fabcar
官網給的例子是錯誤的。
找到fabcar文件,執行sudo ./startFabric.sh 進行初始化。(這個跟text-network不是一個控制檯)可參考
回到text-network控制檯進行配置
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
測試代碼
運行以下命令以獲取已添加到通道賬本中的汽車列表:
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
使用以下命令調用fabcar鏈碼來更改賬本上汽車的所有者:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"changeCarOwner","Args":["CAR9","Dave"]}'
還有很多命令請自行google(可能執行鏈碼的時候出現錯誤,可執行sudo chomod 777 text-network/)
修改鏈碼:
在fabcar中進行修改的。在chaincode/fabcar/go下的go文件進行修改。
func (s *SmartContract) Queryhelloworld(ctx contractapi.TransactionContextInterface, carNumber string)(int,error) {
message:="hello world"
fmt.Printf(message)
return 111111,nil
//return message,nil
}
修改完畢後,執行sudo ./startFbric.sh
進入test-network控制檯。進行操作
peer chaincode query -C mychannel -n fabcar -c '{"Args":[
"queryhelloworld","CAR9"]}'
會出現111111
表示成功!祝順利!!!!!!!!!!