首先要明确添加通道应该要做哪些事!一要通知orderering service服务器,新组织加入到通道,验证过的建议交易封装后是要提交给orderering service服务器,由它分发到commit peer节点。二是通道配置要改变,新组织极有可能成为背书策略贡献者。
一、生成Org3密钥资料
进入/first-network/org3-artifacts/目录,该目录有2个文件:org3-crypto.yaml和configtx.yaml,执行下列命令
../../bin/cryptogen generate --config=./org3-crypto.yaml
通过org3-crypto.yaml为org3 CA及两个与之绑定的peer节点生成密钥和证书,这些文件保存在
org3-artifacts目录下。
再使用configtxgen以JSON格式打印出
Org3-specific配置资料,这个过程用到了 configtx.yaml文件,命令如下:
export FABRIC_CFG_PATH=$PWD && ../../bin/configtxgen -printOrg Org3MSP > ../channel-artifacts/org3.json
生成org3.json文件,保存在/first-network/
channel-artifacts/目录下。这个文件包含了org3的策略定义和以base-64编码格式的3个重要证书:
admin、CA根证书、TLS根证书,这些信息将会被追加到通道配置文件中去。
最后一项任务是把Orderer Org’s MSP资料导入到Org3的crypto-config目录。我们主要关注
Orderer’s TLS 根证书,用来保证Org3组织与ordering节点通讯。命令如下:
cd ../ && cp -r crypto-config/ordererOrganizations org3-artifacts/crypto-config/
现在我们可以更新通道配置了。
二、准备CLI环境
首先进入CLI容器,这个容器是执行BYFN启动的,可获取2个peer组织和orderer组织的MSP资料,可由org1 admin用户引导。命令如下:
docker exec -it cli bash
Export the ORDERER_CA
and CHANNEL_NAME
variables:
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
检查确认变更配置是否正确:
echo $ORDERER_CA && echo $CHANNEL_NAME
需要注意的是如果重启CLI容器,你必须要重复上面的命令。
三、获取配置
现在我们有了2个关键环境变量的CLI容器: ORDERER_CA和
CHANNEL_NAME。接下来要从mychannel通道获取最近的配置区块。
为什么要拉取最新版本的配置文件呢?这是因为通道配置元素是版本化的。版本化的原因有几个,可以防止配置更改,另外还可以确保一致性。(例如当新组织加入到通道后,如果你想将一个组织从通道中移出,版本化可以防止你将这两个组织同时移出),命令如下所述:
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA
将二进制通道配置块写入到config_block.pb文件中
,文件名及后缀有助于识别文件类型。
以上命令行执行结果如下:
2017-11-07 17:17:57.383 UTC [channelCmd] readBlock -> DEBU 011 Received block: 2
这句话告诉我们最近mychannel配置块是block 2而不是创世纪块。因此块序列如下描述:
block 0: genesis block
block 1: Org1 anchor peer update
block 2: Org2 anchor peer update