美文网首页
Fabric 动态增加组织

Fabric 动态增加组织

作者: 李小二的倔强 | 来源:发表于2020-03-20 16:10 被阅读0次

Fabric 是联盟链,一个 channel 就好比一个联盟,如果有新的机构需要加入,则必须得到联盟内的成员的认可。

正是基于这样的场景,fabric 在为 channel 新增 org 时,会涉及诸多的权限和证书操作。
为 Channel 动态新增 Org 有以下几步:

  1. 为新 org 生成证书
  2. 为新 org 生成配置文件
  3. 生成和提交新 org 的配置

1.peer channel fetch config 创建添加新 org 的配置交易,为网络新增 org
2.peer channel signconfigtx 为配置交易签名,需网络中 MAJORITY 的 org 都签名
3.peer channel update 提交签名后的配置交易至 orderer

4.将新 org 添加入 channel

1.启动新 org 集群,一般会有一个 cli 和多个 peer
2.peer channel fetch 于 cli 中从 orderer 中获取 channel 创世块
3.peer channel join 将新 org 下的 peer 加入 channel

5.升级chaincode和背书策略

1.peer chaincode install 为新 org 的 peer 安装 chaincode,于新 org 的 cli 中完成
2.peer chaincode install, 为其他 org 升级 chaincode,于原 org 的 cli 中完成
3.peer chaincode upgrade 升级背书策略,于原 org 的 cli 中完成

6.测试是否成功
此文通过 fabric-samples 下的 first-network 样例为基础,在其区块链网络上,为通道 mychannel 新增一个 Org3,Org3 包含两个 peer。

初始环境

fabric-samples 地址为 https://github.com/hyperledger/fabric-samples , 本文采用其中的 first-network 实验。

first-network 启动后,会默认创建 1 个 orderer 节点,4个 peer 节点(其中 2个属于 org1,2个属于 org2),并提供一个 cli 用于相关操作。

docker ps 之后输出如下:

CONTAINER ID        IMAGE                                                                                                  COMMAND                  CREATED              STATUS              PORTS                                              NAMES
a36d576296f4        dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab   "chaincode -peer.add…"   About a minute ago   Up About a minute                                                      dev-peer1.org2.example.com-mycc-1.0
70789dd829f0        dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9   "chaincode -peer.add…"   About a minute ago   Up About a minute                                                      dev-peer0.org1.example.com-mycc-1.0
c961ab191471        dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b   "chaincode -peer.add…"   About a minute ago   Up About a minute                                                      dev-peer0.org2.example.com-mycc-1.0
8314e683df95        hyperledger/fabric-tools:latest                                                                        "/bin/bash"              About a minute ago   Up About a minute                                                      cli
c80bb0cdbb3e        hyperledger/fabric-peer:latest                                                                         "peer node start"        About a minute ago   Up About a minute   0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
656efc4c4b94        hyperledger/fabric-orderer:latest                                                                      "orderer"                About a minute ago   Up About a minute   0.0.0.0:7050->7050/tcp                             orderer.example.com
1f6777d60647        hyperledger/fabric-peer:latest                                                                         "peer node start"        About a minute ago   Up About a minute   0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
8be768d5aed0        hyperledger/fabric-peer:latest                                                                         "peer node start"        About a minute ago   Up About a minute   0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com
0680044f68b9        hyperledger/fabric-peer:latest         

自动化动态添加

first-network 直接提供了自动化添加的脚本 eyfn.sh。执行 ./eyfn.sh up 即可自动化为 channel 添加 org3。此法因不具扩展性,且不方便理解 fabric,因此不再赘述。以下是执行后的输出,若成功,会输出 All GOOD 。

[work@gzhxy-fsg-fpu-hyperledger01 first-network]$ ./eyfn.sh up
Starting with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] Y
proceeding ...
/home/work/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/cryptogen
... ...
... ...
... ...
2018-04-09 03:37:24.644 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: 1B7235C3DC2AF4B066928DDEA387D4A0524357DEB4978C23DB70B01B893DBC3A
Query Result: 80
2018-04-09 03:37:24.651 UTC [main] main -> INFO 008 Exiting.....
===================== Query on peer0.org3 on channel 'mychannel' is successful =====================
========= All GOOD, EYFN test execution completed ===========
 _____   _   _   ____
| ____| | \ | | |  _ \
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/

虽然不赘述 eyfn.sh,但脚本和手动部署原理是一致的,可以仔细学习。

为 channel 动态添加 Org

step1: 为新 org 生成证书

cd org3-artifacts/
cryptogen generate --config=./org3-crypto.yaml

会依据 org3-crypto.yaml 生成,生成后的文件位于 org3-artifacts/crypto-config/ 下

org3-crypto.yaml 文件中 Org3 的配置如下:

PeerOrgs:
  - Name: Org3
    Domain: org3.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
    Users:
      Count: 1

step2: 为新 org 生成配置文件

导入配置

相关文章

网友评论

      本文标题:Fabric 动态增加组织

      本文链接:https://www.haomeiwen.com/subject/ijvjyhtx.html