聯盟鏈——03.Fabric核心模組詳解
1.1 導語
- Fabric 的核心模組,核心模組配置資訊的管理方式
1.2 Fabric 核心模組
- peer 主節點模組,負責儲存區塊鏈資料,執行維護鏈碼
- orderer 交易打包、排序模組
- cryptogen 組織和證書生成模組
- configtxgen 區塊和交易生成模組
- configtxlator 區塊 交易解 模組
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 模組的配 檔案用來描述 要生成的證書檔案的特性
上述模板檔案定義了一個 or erer 節點,這個 orderer 節點的名字為 or erer, orderer點的根域名為 examp le .com ,主機名為 order 模板檔案同時定義了兩個組織,兩個組織的分別為 orgl org2 ,其中組織 orgl 包含了 個節點和 個使用者,組織 orgl節點和2 個使用者
3.cyptogen 例項:建立測試配置檔案
根據上述 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.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 典型的應用場景
- 建立orderer的初始塊
- 建立 channel 初始塊
- 建立錨點更新檔案
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已經安裝好了)
- 解碼
curl -X POST --data-binary @configurat on block.block http :ll127. 0 . 0 . 1 : 7059/
protolator/decode/commo Block> . /configuration_ block . json
- 編碼
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.計算配置更新量
4.交易打包
1.4.4 orderer
- order 模組負責對交易進行排序,並將排好序的交易打包成區塊
- 命令
- 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 那麼該節點的所有配均無效.
配置項
• 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 模組除錯相關的選項