06.Fabric核心模組之Configtxgen解析
阿新 • • 發佈:2018-11-20
陳述
主要講Fabric核心模組中Configtxgen
- 生成Orderer節點的初始化檔案
- 生成channel的初始化檔案
Configtxgen模組命令
onfigtxgen模組是通過命令列的方式執行的,通過執行命令Configtxgen --help
可以顯示 Configtxgen 模組的命令列選項,執行結果如下所示:
$ Configtxgen --help
Usage of ./Configtxgen:
# 指定所屬的組織
-asOrg string
Performs the config generation as a particular organization ( by name), only
including values in the write set that org (likely) has privilege to set
# 指定建立的channel的名字, 如果沒指定系統會提供一個預設的名字.
-channelID string
The channel ID to use in the configtx
# 執行命令要載入的配置檔案的路徑, 不指定會在當前目錄下查詢
-configPath string
The path containing the configuration to use ( if set)
# 列印指定區塊檔案中的配置內容,string:檢視的區塊檔案的名字
-inspectBlock string
Prints the configuration contained in the block at the specified path
# 列印建立通道的交易的配置檔案
-inspectChannelCreateTx string
Prints the configuration contained in the transaction at the specified path
# 更新channel的配置資訊
-outputAnchorPeersUpdate string
Creates an config update to update an anchor peer (works only with the default
channel creation, and only for the first update)
# 輸出區塊檔案的路徑
-outputBlock string
The path to write the genesis block to (if set)
# 標示輸出創始區塊檔案
-outputCreateChannelTx string
The path to write a channel creation configtx to (if set)
# 將組織的定義列印為JSON(這對在組織中手動新增一個通道很有用)。
-printOrg string
Prints the definition of an organization as JSON. (useful for adding an org to
a channel manually)
# 指定配置檔案中的節點
-profile string
The profile from configtx.yaml to use for generation. (default
"SampleInsecureSolo")
# 顯示版本資訊
-version
Show version information
Configtxgen模組配置檔案
Configtxgen 模組的配置檔案包含Fabric系統初始塊、Channel初始塊檔案等資訊。
Configtxgen模組的配置檔案樣例如下所示,以下部分定義了整個系統的配置資訊:
Profiles:
# 組織定義識別符號,可自定義,命令中的 -profile 引數對應該識別符號, 二者要保持一致
ydqyOrgsOrdererGenesis:
Capabilities:
<<: *ChannelCapabilities # 引用下面為 ChannelCapabilities 的屬性
Orderer: # 配置屬性,系統關鍵字,不能修改
<<: *OrdererDefaults # 引用下面為 OrdererDefaults 的屬性
Organizations:
- *OrdererOrg # 引用下面為 OrdererOrg 的屬性
Capabilities:
<<: *OrdererCapabilities # 引用下面為 OrdererCapabilities 的屬性
Consortiums: # 定義了系統中包含的組織
SampleConsortium:
Organizations: # 系統中包含的組織
- *OrgGo # 引用了下文包含的配置
- *OrgJava
# 通道定義識別符號,可自定義
TwoOrgsChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *OrgGo
- *OrgJava
Capabilities:
<<: *ApplicationCapabilities
# 所有的值使用預設的true即可, 不要修改
Capabilities:
Global: &ChannelCapabilities
V1_1: true
Orderer: &OrdererCapabilities
V1_1: true
Application: &ApplicationCapabilities
V1_2: true
# 組織節點相關配置資訊
Organizations:
# orderer節點配置資訊
- &OrdererOrg
Name: OrdererOrg # orderer節點名稱
ID: OrdererMSP # orderer節點編號
MSPDir: ./crypto-config/ordererOrganizations/ydqy.com/msp # msp檔案路徑
#orderer節點中包含的組織,如果有有多個需要配置多個
- &OrgGo
Name: OrgGoMSP # 組織名稱
ID: OrgGoMSP # 組織編號
# 組織msp檔案路徑
MSPDir: ./crypto-config/peerOrganizations/go.ydqy.com/msp
AnchorPeers: # 組織的訪問域名和埠
- Host: peer0.go.ydqy.com
Port: 7051
- &OrgJava
Name: OrgJavaMSP
ID: OrgJavaMSP
MSPDir: ./crypto-config/peerOrganizations/java.ydqy.com/msp
AnchorPeers:
- Host: peer0.java.ydqy.com
Port: 7051
# orderer節點的配置資訊
Orderer: &OrdererDefaults
# orderer節點共識演算法,有效值:"solo" 和 "kafka"
OrdererType: solo
Addresses:
- ubuntu.ydqy.com:7050 # orderer節點監聽的地址
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 99 MB
PreferredMaxBytes: 512 KB
# kafka相關配置
Kafka:
Brokers:
- 127.0.0.1:9092
Organizations:
Application: &ApplicationDefaults
Organizations:
說明
上述配置檔案中的 Profiles節點定義了整個系統的結構和channel的結構, 配置檔案中的Profiles
關鍵字不允許修改,否則配置無效。系統配置資訊中設定了系統中orderer節點的資訊以及系統中包含的組織數。
Configtxgen 的使用
為了統一管理,可以將生成的初始塊檔案放入指定目錄中,如:channel-artifacts,我們在TestNetWork目錄中建立該子目錄。
Configtxgen 命令在執行的時候需要載入一個叫做configtx.yaml的配置檔案, 如果沒有指定預設重命令執行的當前目錄查詢,我們可以通過引數 -configPath
進行指定,也可以將這個目錄設定到環境變數FABRIC_CFG_PATH
中。
`export FABRIC_CFG_PATH=$(pwd)/networks/config/`
-
建立
orderer
的初始塊[email protected]:TestNetWork$ Configtxgen -profile ydqyOrgOrdererGenesis -outputBlock ./channel-artifacts/genesis.block # ydqyOrgOrdererGenesis: 要和配置檔案中的配置項對應, 可以由數字和字母構成. # orderer初始塊檔案為genesis.block,生成在channel-artifacts目錄中
-
建立
channel
的初始塊[email protected]:TestNetWork$ Configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel # TwoOrgsChannel: 要和配置檔案中的配置項對應 # channel.tx 為生成的頻道檔案, 在channel-artifacts目錄中 # 建立的頻道名稱為: mychannel
-
建立錨點更新檔案 - 每個組織分別進行更新
# 更新第一個組織 OrgGoMSP 的peer節點 [email protected]:TestNetWork$ Configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/GoMSPanchors.tx -channelID mychannel -asOrg OrgGoMSP # TwoOrgsChannel: 要和配置檔案中的配置項對應 # OrgGoMSP組織使用的頻道為 mychannel 生成的配置資訊檔名為 GoMSPanchors.tx #============================================================================== # 更新第2個組織 OrgJavaMSP 的peer節點 [email protected]:TestNetWork$ Configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/JavaMSPanchors.tx -channelID mychannel -asOrg OrgJavaMSP # TwoOrgsChannel: 要和配置檔案中的配置項對應 # OrgJavaMSP組織使用的頻道為 mychannel 生成的配置資訊檔名為 JavaMSPanchors.tx