向fabric1.1网络中添加组织

初始状态:本地跑有网络(fabric1.1),一个通道mychannel,通道中有3个组织org1、org2、org3;
1:在对应网络的文件夹下创建组织4文件夹org4-artifacts,在org-artifacts下创建组织4的configtx.yaml和org4-crypto.yaml可以参照原来网络中的crypto-config.yaml和configtx.yaml或者官方github上的org3-artifacts: https://github.com/hyperledger/fabric-samples/tree/release-1.1/first-network/org3-artifacts
2:生成org4的证书此时org4-artifacts文件夹下会多出crypto-config文件夹里面即为org4的证书,把org4-artifacts/crypto-config/peerOrganizations下的org4.example.com复制到原网络文件夹下的crypto-config/peerOrganizations中。该文件夹原来存放的是org1-3的证书
在这里插入图片描述

../bin/cryptogen generate --config=./org4-crypto.yaml

3:在原网络的configtx.yaml下加上org4的信息即org4-artifacts下configtx.yaml里的内容
在这里插入图片描述

4:生成org4的配置保存在channel-artifacts下

./bin/configtxgen -printOrg Org4MSP -profile ./configtx.yaml > ./channel-artifacts/org4.json

在这里插入图片描述

5:安装jq工具jq 可以对 JSON 进行过滤、修改等操作

apt install jq

6:进入原网络客户端容器获取当前通道的配置文件保存到config_block.pb里

 docker exec -it cli bash
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 channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --cafile $ORDERER_CA

7:原网络文件夹下创建一个tem文件夹
8:把config_block.pb拷贝到主机上操作

docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/config_block.pb ./tem

9:在tem内把config_block.pb解码为json格式

../bin/configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json0

10:把org4的内容加入到config.json中

jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org4MSP":.[1]}}}}}' config.json ../channel-artifacts/org4.json > modified_config.json

11:把config.json和modified_config.pb编码成二进制文件

../bin/configtxlator proto_encode --input config.json --type common.Config --output config.pb
../bin/configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb

12:用configtxlator计算出两个二进制的差异,输出到org4_update.pb

export CHANNEL_NAME=mychannel
../bin/configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output org4_update.pb

13:将org4_update.pb解码为json文件

../bin/configtxlator proto_decode --input org4_update.pb --type common.ConfigUpdate | jq . > org4_update.json

14:用jq给org4_update.json补充标头

echo '{"payload":{"header":{"channel_header":{"channel_id":"'$CHANNEL_NAME'", "type":2}},"data":{"config_update":'$(cat org4_update.json)'}}}' | jq . > org4_update_in_envelope.json

15:把org4_update_in_envelope.json编码为二进制文件

../bin/configtxlator proto_encode --input org3_update_in_envelope.json --type common.Envelope --output org3_update_in_envelope.pb

16:把二进制文件拷贝到容器里

docker cp org4_update_in_envelope.pb cli:/opt/gopath/src/github.com/hyperledger/fabric/peer

17:依次让原通道里的每个组织给新配置签名

CORE_PEER_ID=peer0.org2.example.com
CORE_PEER_ADDRESS=peer0.org2.example.com:7051
CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
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
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
peer channel signconfigtx -f org3_update_in_envelope.pb

设置cli容器的环境变量,把环境变量里的org2依次换为2、3,初始是以org1的成员身份依次执行

将通道更新提交至网络

peer channel update -f org3_update_in_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --cafile $ORDERER_CA

其中CHANNEL_NAME和ORDERER_CA为:

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

提交完后将在cli容器中以org4的成员身份加入通道、安装链码可以正常操作链码即成功将组织加入通道。

参考博客:
https://www.cnblogs.com/jxd283465/p/13530044.html
https://www.cnblogs.com/llongst/p/12072885.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值