Ubuntu 20.04 Docker 配置多机 Fabric 2.4
Ubuntu 20.04 配置fabric 2.4 密码学文件并实现多机部署
host1主机安装了fabric-cli,主要操作在host1上执行,通过改变环境变量切换host2、host3、host4的fabric环境。
目录
1、进入fabric-cli
sudo docker exec -it cli bash
默认进入的是Org1的环境
2、设置go环境
go env -w GOPROXY=https://goproxy.io,direct
go env -w GOPROXY=https://proxy.golang.com.cn,direct
3、打包智能合约
# /opt/gopath/src/github.com/chaincode是docker中对应的~/chaincode目录
peer lifecycle chaincode package test.tar.gz --path /opt/gopath/src/github.com/chaincode/test --lang golang --label test
没有任何报错说明安装成功;
常见错误有:go版本过高导致依赖下载失败,建议在go.mod中直接指定小版本,更改go.sum中下载验证的hash,可以解决大部分版本错误的问题。
4、安装智能合约
peer lifecycle chaincode install test.tar.gz
payload显示200,合约安装成功
5、 验证合约是否安装成功
peer lifecycle chaincode queryinstalled
6、 同意合约
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 test --version 1 --package-id test:2f9f8aeed4e1a8c8e44bbb60f31f7cc2199aae552ecee829fe52259ccbaf7f16 --sequence 1 --waitForEvent
需要修改的字段 --name、--package-id
如果想对同一个label的智能合约做更改,还需要修改 --sequence字段,比上一个版本+1即可
7、切换org2、org3、org4的环境变量
# 组织2
export CORE_PEER_LOCALMSPID=Org2MSP
export 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
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051
# 组织3
export CORE_PEER_LOCALMSPID=Org3MSP
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
export CORE_PEER_ADDRESS=peer0.org3.example.com:7051
# 组织4
export CORE_PEER_LOCALMSPID=Org4MSP
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org4.example.com/peers/peer0.org4.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org4.example.com/users/Admin@org4.example.com/msp
export CORE_PEER_ADDRESS=peer0.org4.example.com:7051
每次切换一个org,共切换3次,每次切换后均执行4-6步
8、查看合约的同意状态
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name test --version 1 --sequence 1 --output json
需要修改的字段 --name,可能修改的字段 --sequence
9、提交合约
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 test --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:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --peerAddresses peer0.org3.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt --peerAddresses peer0.org4.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org4.example.com/peers/peer0.org4.example.com/tls/ca.crt --version 1 --sequence 1
需要修改的字段 --name,可能修改的字段 --sequence
10、查看已经安装的合约
peer lifecycle chaincode querycommitted --channelID mychannel --name test
11、在docker中查看合约是否已经运行
至此,host1、host2、host3、host4全部运行test合约