1. 程式人生 > >聯盟鏈——03.Fabric核心模組詳解

聯盟鏈——03.Fabric核心模組詳解

1.1 導語

  • Fabric 的核心模組,核心模組配置資訊的管理方式

1.2 Fabric 核心模組

  • peer 主節點模組,負責儲存區塊鏈資料,執行維護鏈碼
  • orderer 交易打包、排序模組
  • cryptogen 組織和證書生成模組
  • configtxgen 區塊和交易生成模組
  • configtxlator 區塊 交易解 模組
    1

1.3 Fabric 模組的通用選項和命令

  • 5個核心模組都是基於命令列的方式執行,必須熟悉這些模組的命令,介紹一下這些通用選項。

  • help 選項

    • Available Commands :表示表命 ,包含子命令
    • Flags :顯示當前命令的引數
    • Global Flags :表示全域性引數,所有的子命令都可以使用
  • -v ,–version

1.4 Fabric 模組的子命令、選項和配置檔案

  • Fabric 核心模組的配置資訊、由配置檔案 命令列選型 環境變數三個部分組成
    環境變數〉配置檔案〉命令選項

1.4.1 cryptogen

  • cryptogen 模組主要用來生成組織結構和賬號相關的檔案, 任何 Fabric 系統的開發通常都是從 cryptogen 模組開始的 Fabric 專案中,當系統設計完成之後第一項工作就是根據系統的設計來編寫 cryptogen 的配置檔案,然後通過這些配 檔案生成相關的證書檔案cryptogen 模組所使用的配置檔案是整個 Fabric 專案的基石 下面我們將介紹 cryptogen 模組命令列選項及其使用方式
1.cryptogen 模組命令說明
  • cryptogen 模組是通過命令列的方式執行的,一個 cryptogen 命令由命令列引數和配置檔案兩部分組成,通過執行命 cryptogen --help 可以顯示 cryptogen 模組的命令列選項,執行結果如下所示
usage : cryptogen [<flags>] <command> [<args> . . ] 
Utility for generating Hyperledger Fabr key material 
Flags : 
--help 
Commands :
help ge erate showtemplate version
cryptogen 模組 共有 4個命令,這 個命令及其作用如下所示
  • help 顯示幫助資訊

  • generate :根據配置檔案生成證書資訊

  • showtemplate :顯 系統預設 cryptogen 模組配 檔案資訊

  • version 當前模組的版本號

其中 generate 選項是用來根據配 檔案生成 Fabric 系統相關的證書檔案

2.cryptogen 模組的配置檔案
  • cryptogen 模組的配 檔案用來描述 要生成的證書檔案的特性

23

上述模板檔案定義了一個 or erer 節點,這個 orderer 節點的名字為 or erer, orderer點的根域名為 examp le .com ,主機名為 order 模板檔案同時定義了兩個組織,兩個組織的分別為 orgl org2 ,其中組織 orgl 包含了 個節點和 個使用者,組織 orgl節點和2 個使用者

3.cyptogen 例項:建立測試配置檔案

2

根據上述 Fabric 系統的基本資訊,我們可以編 cryptogen 模組用的配置檔案,配置檔案的內容如下所示:

在這裡插入圖片描述

測試環境中域名可以隨便定義的,但是在正式的生 環境中,域名最好選擇已經通過備案的。

  • 生成證書檔案
    cryptogen 模組的 generate 命令可以生成相關的證書檔案 命令如下
cryptogen generate --config=/opt/hyperledger/fabricconfig/crypto-config . yaml 
--output /opt/hyperledger/fabricconfig/crypto-config

/opt hyperledger fabricconfig 是證 書檔案存放目錄,也可以是任何具有讀寫許可權的資料夾,但是需妥提前建立

進入 opt hyper!edger fabricconfig crypto config 件夾之後有兩個子資料夾,通過命tree -L 顯示如下:

在這裡插入圖片描述

  • tree 工具是 Linux 系統中的常用命令,可以顯示資料夾中檔案的層次結構

  • 命令執行成功之後,進入 ordererOrganizations 然後通過命令 往四”L4 顯示如下:

4

4.Fabric 證書檔案的結構

cryptogen 模組生成的證書檔案就是 Fabric 系統執行所需要的證書檔案,接下來我們將詳細介紹這些證書檔案的種類和作用 進入資料夾 peerOrganizations 後執行命令 tree -L 1, 命令結果如下所示:

在這裡插入圖片描述

三個子檔案和描述的組織的對應關係

在這裡插入圖片描述

資料夾 orgl .qklszzn.com 行命令 tree -L5 顯示如下:
在這裡插入圖片描述

在這裡插入圖片描述

  • cryptogen模組生成的證書是 Fabric 系統的重要組成部分,是所有Fablic系統的開始。

1.4.2 configtxgen

1.configtxgen模組的命令
  • configtxgen 模組用來生成 orderer 的初始化檔案和 channel 的初始化檔案 configtxgen模組包含如下子命令選項:

• asOrg 所屬的組織
• channe!ID : chann 名字,如果沒有系統會提供 個預設值
• inspectBlock :打印製定區塊檔案中的配置內容
• inspectChanne!CreateTx :列印建立通道的交易的配置檔案
• outputAnchorPeersUpdate 更新 channel 配置資訊
• outputBlock :輸出區塊檔案的路徑
• outputCreateChanne!Tx :標示輸出創始塊檔案
• profile :配置檔案的節點
• version 顯示版本資訊

2.configtxgen 模組的配 檔案

configxgen 模組的配 置檔案包含 Fabric 系統初始塊 Channel 初始塊檔案等資訊.

configtxgen 模組配置檔案的樣例如下所示:

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
(註釋:缺失)

  • Profiles節點詳解:Profiles 點定義了整個系統的結構和 channel 的結構,配置檔案中
    Profiles 關鍵字不允許更改 ,否則配置無效。 系統配置資訊 中設定了系統中 orderer 節點
    的資訊以及系統中包含的組織數

3.configtxgen 典型的應用場景

  1. 建立orderer的初始塊

在這裡插入圖片描述

  1. 建立 channel 初始塊

在這裡插入圖片描述

  1. 建立錨點更新檔案

在這裡插入圖片描述

1.4.3 configtxlator

configtxator 模組可以把區塊鏈的二進位制檔案轉化 JSON 格式的檔案,便於我們閱和理解.

含有三個命令,configtxlator–help

在這裡插入圖片描述

其中start命令包含兩個引數:

在這裡插入圖片描述

  • configtxlator 是一個RESTAPI服務的形式提供服務的,可以通過標準的http請求來訪問 configtxlator

  • configtxlator 啟動示例

  • conf gtxlator start --hostname=O 0 . 0 . 0 --port=

  • configtxlator的REST服務提供瞭解碼,編碼,計算配置更新,交易打包 四個功能 (下面請確保curl已經安裝好了)

  1. 解碼
    在這裡插入圖片描述
curl -X POST --data-binary @configurat on block.block http :ll127. 0 . 0 . 1 : 7059/ 
protolator/decode/commo Block> . /configuration_ block . json 
  1. 編碼
    在這裡插入圖片描述
curl -X POST --data-binary @updated onfig . json http :ll127 . 0 . 0 . 1 : 7059/ 
protolator/encode/commo Config > updated_con f 工 . pb 

上述命令將json格式的配置檔案pdated_config.json轉化成區塊鏈檔案updateconfig.pb

3.計算配置更新量

23

4.交易打包
在這裡插入圖片描述

1.4.4 orderer

  • order 模組負責對交易進行排序,並將排好序的交易打包成區塊
  1. 命令
  • help 顯示幫助資訊
  • start *啟動 orderer 節點
  • version 顯示版本資訊
  • Show vers on information
  • benchmark 採用基準本模式執行 orderer
    2.配置資訊

orderer 模組配置資訊可以用環境變數或者配置檔案的方式來配置。

環境變數配置:

在這裡插入圖片描述

export set ORDERER_GENERAL_LOGLEVEL=debug 
export set ORDERER_GENERAL_LISTENADDRESS=0 . 0 . 0 . 0 
export set ORDERER_GENERAL_LISTENPORT=7050 
export set ORDERER_GENERAL GENESISMETHOD=file 
export set ORDERER GENERAL GENESISFILE=/opt/hyperledger/order/orderer . genesis . 
block 
export set ORDERER GENERAL_LOCALMSPID=OrdererMSP
export set ORDERER_GENERAL_LOCALMSPDIR=/opt/hyperledger/fabr cconfig/crypto-config/
ordererOrgan zat ons/qklszzn.com/orderers/orderer qklszzn com/msp 
export set ORDERER_GENERAL_ LEDGERTYPE=file 
export set ORDERER_GENERAL BATCHTIMEOUT=10s 
export set ORDERER_GENERAL_MAXMESS.l\GECOUNT= 10 
export set ORDERER_GENERAL_TLS ENABLED= false 
export set ORDERER_GENERAL_TLS_ PRIVATEKEY=/opt/hyperledger/fabricconfig/crypto 
config/ordererOrganizations/qklsz com/ /orderer . qklsz com/tls/server key 
export set ORDERER_GENERAL_TLS_ CERTIFICATE=/opt/hyperledger/fabricconfig/ 
crypto-co f 工 g/ordererOrganizations/qklszzn com/orderers/orderer qklszzn com/tls/
server crt 
export set ORDERER_GENERAL_TLS_ ROOTCAS= [I opt /hyper ledger If abr cconfig/cryptoconf g/ordererOrganizations/qklszzn com/orderers/orderer qklszzn .c om/tls/ca crt)

orderer模組配置檔案:

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

3.orderer模組配置檔案詳解

orderer模式的配置檔案功5部分,

  • Genera
  • FileLedger
  • RAMLedger
  • Kafka
  • Debug
1. General節點配置

General 節點中包含了 orderer 模組的基本控制資訊

在這裡插入圖片描述

在這裡插入圖片描述

配置項:

LedgerType :賬本的型別,有 ram json file 種類型可以選擇 ram 表示賬本的資料儲存在記憶體中, 般用於測試環境 json file 表示賬本資料儲存在檔案中,在生產環境中 般推薦使用 file
• enAddress : ord rer 伺服器監昕的地址,如果伺服器有多個網絡卡, 般需要指明
監聽的具體地址
• ListenPort 監聽埠
• Enabled 啟用 TLS 時的相關配
• PrivateKey 私鑰檔案
• Certificate :證書檔案
• RootCAs :根證書檔案
• ClientAuthEnabled :啟用客戶端證書驗證
• ClientRootCAs :客戶端根證書
• LogLevel :日誌級別
• LogFormat :日誌格式
GenesisMethod :初始塊的來源方式,支援 provisional file, provisional 表示 GenesisProfile 選項指定的內容在預設的配 檔案中的配置是自動生成的,後者使用 GenesisFile指定的現成初始的檔案
GenesisProfile :初始塊的 profile ,在 configtxgen 模組的配置檔案中指
• GenesisF 巳:初始塊檔案的路
• LocalMSPDir: orderer 模組 msp 檔案的路
• LocalMSPID: orderer 模組 編號,在 configtxgen 模組的配置檔案中指
• Enabled :是否啟動 go profile 資訊
• Address: go profile 資訊的訪問地址
• efault :採用的密碼機制, SW 為軟體程式實現, PKCSll 為硬體的 方式
• Hash 演算法型別

2.FileLedger節點配置

FileLedger 節點中包含了 ordrerer 模組中賬本檔案相關的配置資訊
在這裡插入圖片描述

配置項

• Location :賬本檔案的路徑
• Prefix :賬本存放在臨時 目錄時候的目 錄名 ,如果已經指定了 Location 值, 則該選項無效

3.RAMLedger節點配置

RAMLedger 節點中包含了 rderer 模組的賬本在記憶體中資料儲存方式的相 配置資訊
在這裡插入圖片描述

配置項

• storySize :如果 Ledg rType 型別為 RAM 時記憶體中儲存的區塊的數目, 超過這個數目的區塊將被放棄

4.Kafka節點配置

Kafka 節點中包 orderer 模組中連線 Kafka 關的資訊,注意 :如 果ordrer節點的排序模式選擇了solo 那麼該節點的所有配均無效.

3

在這裡插入圖片描述

配置項

• Retry:如果 orderer 在啟動的時候, Kafka 還沒有啟動或者 Kafka 若機時重試的次數
• Shortlnterval :操作失敗短重試狀態下重試的時間間隔
• ShortTotal :短重試狀態下最多重試的時間
• Longlnterval :長 試狀 下重試的時間間隔
• LongTotal :長 試狀態下 多重試時間
• DialTimeout 等待超時時間
• ReadTimeout 超時時間
• WriteTimeout 超時時間
• RetryBackoff: Kafka 叢集選舉 leader 的元資料
• RetryMax: Kafka 群選舉 leader 元資料
• RetryBackoff 者訊息超時時間
• Verbose : Kafka 戶端的日誌級別,在 orderer 的執行日誌中顯示 Kafka 的日誌資訊
• Enabled :是否啟動 TLS
• PrivateKey :私鑰前面
certificate: Kafka 的證書
rootCAs :驗證 Kafka 的根證書
version: Kafka 的版本號

5.Debug節點配置

Debug 節點中包含了 orderer 模組除錯相關的選項
在這裡插入圖片描述