Hyperledger Fabric 2.0 Chaincode as an external service 圖解

Chaincode as an external service

Fabric v2.0支持在Fabric外部部署和執行鏈碼,使用戶能夠獨立於對等方管理鏈碼運行時。這有助於在結構雲部署(如Kubernetes)上部署鏈碼。鏈碼現在可以作爲服務運行,其生命週期在Fabric之外進行管理,而不是在每個對等機上構建和啓動鏈碼。此功能利用Fabric v2.0外部構建器和啓動程序功能,使操作員能夠使用程序擴展對等機以構建、啓動和發現鏈碼。在閱讀本主題之前,您應該熟悉外部生成器和啓動程序內容。

一圖流講解配置

如圖,藍色的代表peer server,在server中配置的

externalBuilders:
- name: external-builder
path: /builders/external
environmentWhitelist:
- GOPROXY
是要對應真正的處理邏輯文件,build,detect腳本的。(這個要手寫)
右側是準備的chaincode服務器,地址要保存在connection.json中
裏邊ccid對應的是比如cli安裝chaincode給出的id
lab也要對應給metadata.json
通過detect來做過濾,在detect腳本中如果exit code爲0,則進入對應的external service的處理,執行build,release…
配置

一圖流講解流程(體感)

當cli安裝chaincode的tar包時,通過執行peer server上的腳本,將connection.json解析出來。
當需invoke的時候,會根據解析出來的connection.json去網絡上的一個位置調用chaincode server(grpc).
流程

結果:

bash-5.0# peer lifecycle chaincode install myccpkg.tgz
2020-06-10 06:25:26.881 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 001 Installed remotely: response:<status:200 payload:"\nGmycc_1:c4240e0592ffc2a20e020fb20019671583124a603ac85158525bbf629a50d01b\022\006mycc_1" > 
2020-06-10 06:25:26.881 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 002 Chaincode code package identifier: mycc_1:c4240e0592ffc2a20e020fb20019671583124a603ac85158525bbf629a50d01b
bash-5.0# peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name mycc $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --output json --init-required
{
        "approvals": {
                "Org1MSP": true,
                "Org2MSP": false
        }
}
bash-5.0# peer lifecycle chaincode queryinstalled >&log.txt
bash-5.0#   PACKAGE_ID=`sed -n '/Package/{s/^Package ID: //; s/, Label:.*$//; p;}' log.txt`
bash-5.0# peer lifecycle chaincode approveformyorg --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name mycc --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${VERSION} --waitForEvent
2020-06-10 06:26:49.515 UTC [cli.lifecycle.chaincode] setOrdererClient -> INFO 001 Retrieved channel (mychannel) orderer endpoint: orderer.example.com:7050
2020-06-10 06:26:51.569 UTC [chaincodeCmd] ClientWait -> INFO 002 txid [aac1f430b905fa2a8768151b9549f2f75432515acebb5ef5eddb4a987a99372d] committed with status (VALID) at 
bash-5.0# peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name mycc $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --output json --init-required
{
        "approvals": {
                "Org1MSP": true,
                "Org2MSP": true
        }
}
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 peer1.org2.example.com:10051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt --isInit -c '{"Args":["Init","a","100","b","100"]}'
2020-06-10 08:19:13.470 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 

在這裏插入圖片描述

Ref:

https://hyperledger-fabric.readthedocs.io/en/release-2.1/cc_service.html
https://blog.csdn.net/DAOSHUXINDAN/article/details/104814621

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章