Fabric專案學習:原始碼
Fabric專案學習。第八次週報。
原始碼https://github.com/hyperledger/fabric.git
系統執行架構。
下圖是上圖簡化版。
Orderer排序節點配置檔案:
orderer.yaml | 通用配置文、賬本配置、Kafka配置 | /etc/hyperledger/fabric |
msp | 組織成員身份證書、簽名私鑰等檔案 | /var/ hyperledger/orderer |
tls | TLS認證證書金鑰等檔案 | |
orderer.genesis.block | 系統通道創世區塊檔案 |
Peer節點配置檔案:
channel.tx | 應用通道配置交易檔案 | /etc/hyperledger/fabric |
Org1MSPanchors.tx | Org1MSP組織錨節點配置更新交易檔案 | /opt/gopath/src/github.com/ hyperledger/fabric/peer/channel-artifaxts |
Org2MSPanchors.tx | Org2MSP組織錨節點配置更新交易檔案 |
配置機制:Viper。
配置區塊檔案。
crypto-config.yaml:定義組織成員關係,用於生成指定拓撲結構的組織關係與身份證書、金鑰等檔案,TLS認證證書。
configtx.yaml:定義Orderer系統通道和應用通道配置資訊,包括聯盟和組織定義,生成系統通道創世區塊檔案、新建應用通道配置交易檔案、錨節點更新交易檔案等。
core.yaml:定義Peer節點的日誌配置、通用配置、Gossip配置、events配置、tls配置、vm鏈碼執行環境、鏈碼相關配置等。
環境變數:
RDERER_XXX:Orderer節點環境變數配置,與orderer.yaml配置項對應。
CORE_XXX:Peer節點環境配置,與core.yaml配置項對應。
測試流程指令碼(測試Orderer排序節點是否可用、建立應用通道、新增Peer節點到指定通道、更新通道中每個組織的錨點配置、安裝鏈碼、例項化鏈碼、查詢鏈碼)
Orderer節點原始碼:
blocksprovider:區塊提供者模組。
client.go:提供broadcastClient客戶端。
deliveryclient.go:Deliver服務客戶端。
requester.go:請求區塊資料。
/fabric/protos/orderer:protobuf訊息定義模組。
/fabric/common/deliver:定義Deliver伺服器及處理介面。
Peer節點包括Endorser背書節點、Committer記賬節點等。
Endorser背書節點:檢查使用者提交的簽名提案訊息,啟動鏈碼容器模擬執行交易提案,驗證結果通過後進行簽名背書。
Committer記賬節點:負責檢查交易訊息格式的合法性與驗證背書策略的有效性。