一个商用的区块链网络,随着业务的发展变化,经常需要动态的新增/移除组织,以满足业务/安全等管理需要。本文在既有组织/节点的基础上,新增一个组织两个节点。
Fabric 是联盟链,一个 Channel 就好比一个子链,如果有新的机构需要加入,则必须得到联盟内的成员的认可。基于这样的场景,Fabric 在为 channel 新增 org 时,会涉及诸多的权限和证书操作。
Fabric 动态新增组织步骤
- 为新 org 生成证书
- 为新 org 生成配置文件
- 生成和提交新 org 的配置
- peer channel fetch config 创建添加新 org 的配置交易,为网络新增 org
- peer channel signconfigtx 为配置交易签名,需网络中 MAJORITY 的 org 都签名
- peer channel update 提交签名后的配置交易至 orderer
- 将新 org 添加入 channel
- 启动新 org 集群,一般会有一个 cli 和多个 peer
- peer channel fetch 于 cli 中从 orderer 中获取 channel 创世块
- peer channel join 将新 org 下的 peer 加入 channel
- 升级chaincode和背书策略
- peer chaincode install 为新 org 的 peer 安装 chaincode,于新 org 的 cli 中完成
- peer chaincode install, 为其他 org 升级 chaincode,于原 org 的 cli 中完成
- peer chaincode upgrade 升级背书策略,于原 org 的 cli 中完成
此文通过 fabric-samples 下的 first-network 样例为基础,在其区块链网络上,为通道 cfichannel 新增一个组织Cfec,CfecOrg 包含个 peer。