Ubuntu 20.04 多机fabric 2.4 部署智能合约

Ubuntu 20.04 Docker 配置多机 Fabric 2.4

Ubuntu 20.04 配置fabric 2.4 密码学文件并实现多机部署

host1主机安装了fabric-cli,主要操作在host1上执行,通过改变环境变量切换host2、host3、host4的fabric环境。

目录

1、进入fabric-cli

2、设置go环境

3、打包智能合约

4、安装智能合约

5、 验证合约是否安装成功

6、 同意合约

7、切换org2、org3、org4的环境变量

8、查看合约的同意状态

9、提交合约

10、查看已经安装的合约

11、在docker中查看合约是否已经运行​


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合约

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值