Fabric網路下如何為通道新增新的組織
阿新 • • 發佈:2018-12-12
首先要明確新增通道應該要做哪些事!一要通知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