hyperledger fabric - chaincode fingerprint mismatch data mismatch

王一洋發表於2018-12-24

Error: Error endorsing query: rpc error: code = Unknown desc = Error executing chaincode: Could not get deployment transaction from LSCC for mycc:1.0 - Get ChaincodeDeploymentSpec for mycc/mychannel from LSCC error: chaincode fingerprint mismatch data mismatch - <nil>

從以上報錯內容,直譯過來就是合約程式碼指紋不匹配。

進入cli容器:

docker exec -it cli bash

查詢當前所安裝的鏈碼

peer chaincode list --installed
Get installed chaincodes on peer:
Name: mychannel, Version: 1.0, Path: github.com/hyperledger/fabric/aberic/chaincode/go/chaincode_example02, Id: a77f5b650cd1a11a3402f52a0ad2b3961e1763d62ff1109bc360feb535ba9026
2018-12-24 01:12:32.768 UTC [main] main -> INFO 005 Exiting.....

可以看出,鏈碼一共4個因素:

name:安裝時指定的鏈碼名稱  -n引數

Version:安裝時指定的版本  -v引數

Path:合約所在的路徑,必須保持完全一樣,目錄的所有者許可權要完全一致

可以用ll命令檢視:

如果有差異,可以通過命令修改:

sudo chown -R   使用者:組   /目錄

Id:合約在以上3個要素完全一樣的情況下,打包或安裝時會生成一個唯一的Id

如果以上4個要素有差異,就會驗證不通過 "chaincode fingerprint mismatch data mismatch"

推薦做法:

1、專門用一臺機器來作為cli,通過切換環境變數,指向不同的peer,安裝合約;

2、將合約打包簽名 chaincode package ... 就可以隨處安裝了,適用於生產環境,多節點多網路的部署。

 

參考文件:

https://github.com/hyperledger/fabric/releases/tag/v1.3.0   v1.3.0 Release Notes - October 10, 2018

https://www.jianshu.com/p/dca0546d85f6  如何解析chaincode package檔案

https://blog.csdn.net/qq_36793353/article/details/78922369

相關文章