Fabric 升級鏈碼和修改背書策略


在現實的生產環境下,我們可能會遇到如下的場景,之前安裝的鏈碼,不能滿足當前業務的需求,需要將其修改,通常的思路是刪除掉鏈碼,再重新安裝和初始化,但是Fabric的設計是不支持鏈碼的刪除,不用的話可以將其容器停掉,或者需要業務升級的時候升級鏈碼。

下面我們來看看具體升級鏈碼的步驟。升級鏈碼其實比較簡單:

只需要三步 就可以完成鏈碼的升級操作:

1>從宿主機將chaincode拷貝進cli容器

1 docker cp community2.0 cli:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

2>安裝新版本chaincode,打包到peer節點

1 docker exec -it cli bash
2 peer chaincode install -n mycc -v 2.0 -p github.com/hyperledger/fabric/examples/chaincode/go/community2.0

3>升級chaincode和其背書策略

1 peer chaincode upgrade -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -v 2.0 -c '{"Args":["init"]}' -P "OR      ('Org1MSP.member','Org2MSP.member')"

下面我們來做個試驗:

本次實驗基於《Fabric 組織錨節點的添加》實驗結果繼續做升級鏈碼和背書策略的操作

這次的實驗是將官方的chaincode_example02 版本更改為2.0,背書策略從OR ('Org1MSP.member') 更改為AND ('Org1MSP.member')

其中為了觀看直觀,我們將a的值調整成1000,b的值調成2000

第一次安裝和初始化時的命令如下:

1 peer chaincode install -n mycc -p github.com/hyperledger/fabric/network006/chaincode/go/chaincode_example02 -v 1.0
2 peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member')"

結果可以參考上篇文章

更新操作的命令:

1 peer chaincode install -n mycc -p github.com/hyperledger/fabric/network006/chaincode/go/chaincode_example02 -v 2.0
2 peer chaincode upgrade -o orderer.example.com:7050 -C mychannel -n mycc -v 2.0 -c '{"Args":["init","a","1000","b","2000"]}' -P "AND ('Org1MSP.member')"

結果是:

 

 可以看到2.0的鏈碼被安裝並且成功實例化

下面我們通過命令來查詢a的值和b的值有沒有發生變化

 

 可以看到我們通過admin用戶和usertest用戶查詢的a就是我們更新后的值

同樣的方法查詢b的值

 

我們再來看看通道信息是否發生變化:

1 peer channel getinfo -c mychannel

結果:

 

 

之前的結果是:

 


免責聲明!

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



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