一、說明
在上一篇文章中分享了智慧合約的安裝與使用,如果業務有變更程式碼需要修改怎麼辦呢?本文分享如何對已安裝的合約進行版本更新。
二、環境準備
區塊鏈網路安裝:《Hyperledger Fabric 2.x 環境搭建》
智慧合約安裝:《Hyperledger Fabric 2.x 自定義智慧合約》
執行以下命令,可以看到已安裝的合約資訊:
peer lifecycle chaincode queryinstalled
三、重新打包程式碼
重新把最新的合約原始碼打包:
peer lifecycle chaincode package mycc.tar.gz --path /opt/app/my-fabric-chaincode-java --lang java --label mycc
四、重新安裝合約
再次分別為 peer0.org1
和 peer0.org2
兩個機構安裝合約:
peer lifecycle chaincode install mycc.tar.gz
執行以下命令,重新檢視已安裝的合約資訊:
peer lifecycle chaincode queryinstalled
可以發現新增加了一條 Label 名稱相同 Package ID 不一樣的記錄:
五、重新審批
再次分別為 peer0.org1
和 peer0.org2
兩個機構審批合約:
peer lifecycle chaincode approveformyorg \
-o localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--tls \
--cafile ${MSP_PATH}/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem \
--channelID mychannel \
--name mycc \
--version 1.1 \
--package-id mycc:ecd2abc60ea098508aeefc135d8838787e9c1e3b8e411386a23ca56b7dfed758 \
--sequence 2
package-id:需填入新安裝的Package ID
sequence:因為是審批第二個合約,所以需要填2
version:只是識別符號,可改可不改
執行以下命令,檢查節點審批狀態:
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mycc --version 1.1 --sequence 2 --output json
返回:
{
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
六、重新提交
執行以下命令,向通道提交合約:
peer lifecycle chaincode commit \
-o localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--tls \
--cafile ${MSP_PATH}/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem \
--channelID mychannel \
--name mycc \
--peerAddresses localhost:7051 \
--tlsRootCertFiles ${MSP_PATH}/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
--peerAddresses localhost:9051 \
--tlsRootCertFiles ${MSP_PATH}/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt \
--version 1.1 \
--sequence 2
需要把 sequence 和 version 改為審批時的值
七、檢視已提交合約
執行一下命令:
peer lifecycle chaincode querycommitted --channelID mychannel --name mycc --output json
可以看到現在通道 mychannel
名字為 mycc
的合約已經更新為 1.1
版本:
{
"sequence": 2,
"version": "1.1",
"endorsement_plugin": "escc",
"validation_plugin": "vscc",
"validation_parameter": "EiAvQ2hhbm5lbC9BcHBsaWNhdGlvbi9FbmRvcnNlbWVudA==",
"collections": {},
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
掃碼關注有驚喜!