1. 程式人生 > >06.Fabric核心模組之Configtxgen解析

06.Fabric核心模組之Configtxgen解析

陳述

主要講Fabric核心模組中Configtxgen

  1. 生成Orderer節點的初始化檔案
  2. 生成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