fabric学习(6)——添加组织机构(2)

在上一节分享了添加一个组织机构进入通道,过程还是比较复杂的。

本节分享在新的组织机构加入通道后,如何升级chaincode,以便让新的组织也能够参与到chaincode的业务中

进入org3cli容器中执行install命令,这里直接使用2.0版本

docker exec -it Org3cli bash

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

上述命令默认是peer0.org3,如果要在peer1.org3也安装该chaincode,切换到相应的环境:

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org3.example.com/msp
CORE_PEER_ADDRESS=peer1.org3.example.com:12051
CORE_PEER_LOCALMSPID="Org3MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org3.example.com/tls/ca.crt

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

回到cli容器中,安装新版本链码

exit

docker exec -it cli bash

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

设置环境变量,然后直接调用upgrade,把链码的策略定义成"OR ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  && export CHANNEL_NAME=mychannel

peer chaincode upgrade -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a","90","b","210"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

需要注意的是,upgrade方法和instantiate一样都要调用到链码的init方法,因此都要传递init方法中需要的参数。

调用链码查看是否部署成功:

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

如果返回90即代表部署成功。

调用链码:

peer chaincode invoke -o orderer.example.com:7050  --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

再次查询:

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

返回结果是80

上述示例仅在peer0.org1、peer0.org3、peer1.org3容器中部署了链码,并且仅在peer0.org1上面实例化了链码,其他的节点想要部署或者实例化,参考前文命令即可。

每个peer的环境变量:

peer0.org1

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

peer0.org2

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp 
CORE_PEER_ADDRESS=peer0.org2.example.com:9051 
CORE_PEER_LOCALMSPID="Org2MSP" 
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt 

peer1.org1

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer1.org1.example.com:8051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt

peer1.org2

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp 
CORE_PEER_ADDRESS=peer1.org2.example.com:10051 
CORE_PEER_LOCALMSPID="Org2MSP" 
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt 

转载请注明来源

×

喜欢就点赞,疼爱就打赏