Fabric2.0中如何升級智能合約

小編給大家分享一下Fabric2.0中如何升級智能合約,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目前創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、賓川網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1.查看需要升級的智能合約信息

目前已部署一個智能合約到peer0.org1.example.com,cli控制臺輸入命令:

peer lifecycle chaincode queryinstalled

查看mycc合約的package_id如下: Fabric2.0中如何升級智能合約

查看mycc在mychannel通道的合約定義,cli控制臺輸入命令:

peer lifecycle chaincode querycommitted -C mychannel

可以看到mycc具體信息 Fabric2.0中如何升級智能合約 | 參數(shù) |中文描述 | 值 |--|--|--| | Name |合約名稱 |mycc |Version |合約版本|1 |Sequence |合約序列號(升級1次,加1) |1 |Endorsement Plugin|背書插件|escc |Validation Plugin|校驗插件|vscc

執(zhí)行一次query操作方便后面對比

 peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

此時控制臺輸出a的值為90 Fabric2.0中如何升級智能合約

2 修改合約代碼

假如本地不存在該合約代碼,2.0提供從節(jié)點上獲取代碼包的操作 控制臺輸入以下命令

 peer lifecycle chaincode getinstalledpackage --package-id  mycc_1:00ef9e95ea103b2c27eacd5a62efd9b34863c672d236a1ce99a7d539b2f9ef7a

packge-id:使用1步驟中查詢獲取的合約packge_id

當前目錄出現(xiàn)mycc.tar.gz包為合約包,解壓合約包里面的code.tar,編輯合約代碼 添加一個方法默認加10 Fabric2.0中如何升級智能合約

Fabric2.0中如何升級智能合約

3. 重新打包合約

控制臺輸入以下命令打包合約:

 peer lifecycle chaincode package mycc.tar.gz --path github.com/hyperledger/fabric-samples/chaincode/abstore/go/ --lang golang --label mycc_1

將根據(jù)新的合約代碼打包成新的智能合約包mycc.tar.gz

4. 重新安裝合約

更新合約代碼需要重新將合約安裝到節(jié)點上

peer lifecycle chaincode install mycc.tar.gz

控制臺輸出合約安裝信息:

Fabric2.0中如何升級智能合約

此時我們再查詢一下節(jié)點安裝合約信息,控制臺輸入:

peer lifecycle chaincode queryinstalled

控制臺輸出: Fabric2.0中如何升級智能合約

可以看到新增了一個package_id不一樣的mycc,原來的還在。

5.修改合約定義

真正升級的操作其實是在合約定義這一步驟 控制臺輸入以下命令,與原來相比將package_id修改為新安裝的合約package_id,sequence要改成2,因為install了2次

peer lifecycle chaincode approveformyorg --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 --channelID mychannel --name mycc --version 1 --init-required --package-id  mycc_1:2f358faa3475e5c37a90be9a7c0db2f608ecb09b13f64b001f83799be9fccc77 --sequence 2 --waitForEvent

Fabric2.0中如何升級智能合約

檢查approve狀態(tài),控制臺輸入:

peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mycc --version 1 --sequence 2 --output json --init-required

sequence要改成2,因為install了2次,否則報錯Error: query failed with status: 500 - failed to invoke backing implementation of 'CheckCommitReadiness': requested sequence is 1, but new definition must be sequence 2

6.切換節(jié)點重復 3,4,5操作

環(huán)境變量切換peer0.org2.example.com,重復3,4,5步,知道出現(xiàn)以下結(jié)果 Fabric2.0中如何升級智能合約

7.重新提交合約定義

完成智能合約lifecycle策略后,重新提交合約定義

 peer lifecycle chaincode commit -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 --channelID mychannel --name mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --version 1 --sequence 2 --init-required

注意序列號sequence

控制臺輸出以下結(jié)果:

Fabric2.0中如何升級智能合約

此時通過新的智能合約查詢a的值,還是為90

Fabric2.0中如何升級智能合約

8.檢驗新合約代碼

剛剛添加了addTen這個方法,理論上a應該加10等于100 控制臺輸入以下命令調(diào)用addTen

 peer chaincode invoke -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 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt  -c  '{"Args":["addTen","a"]}'

查看結(jié)果a果然為100 升級成功

Fabric2.0中如何升級智能合約

以上是“Fabric2.0中如何升級智能合約”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前文章:Fabric2.0中如何升級智能合約
標題來源:http://bm7419.com/article26/pscdcg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、定制網(wǎng)站網(wǎng)站制作、全網(wǎng)營銷推廣做網(wǎng)站、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設