­

Hyperledger Fabric學習筆記02-網絡節點的架構

  • 2020 年 1 月 21 日
  • 筆記

節點是區塊鏈的通信主體,是一個邏輯概念。多個不同類型的節點可以運行在同一物理服務器上。有多種類型的節點:客戶端、Peer節點、排序服務節點和CA節點。下圖為網絡節點架構圖2-1:

客戶端節點

客戶端或者應用程序代表有最終用戶操作的實體。

  • 它必須連接到某一個Peer節點或者排序服務節點上與區塊鏈網絡進行通信。
  • 客戶端向背書節點(Endorser)提交交易提案(Transaction Proposal),
  • 當收集到足夠背書後,向排序服務廣播結義,進行排序,生成區塊。

Peer節點

所有的Peer節點都是記賬節點(Committeer),負責驗證從排序服務節點區塊里的交易,維護狀態數據和賬本的副本。

部分節點會執行交易並對結果進行簽名背書,充當背書節點。背書節點是動態的角色,是與具體鏈碼綁定的。每個鏈碼在實例化的時候都會設置背書策略,指定哪些節點對交易背書後才是有效的。也只有在應用程序向它發起交易背書請求的時候才是背書節點,其他的時候就是普通的記賬節點,只負責驗證交易並記賬。

圖2-1所示的Peer節點還有一種角色是主節點(Leader Peer),代表的是和排序服務節點通信的節點,負責從排序服務節點處獲取最新的區塊並在組織內部同步。可以強制設置為主節點,也可以動態選舉產生。

有的節點同時是背書節點和記賬節點,也可以同時是背書節點、主節點和記賬節點,也可以只是記賬節點。

排序服務節點

排序服務節點(Ordering Service Node或者Orderer)接收包含背書籤名的交易,對未打包的交易進行排序生成區塊,廣播給Peer節點。

排序服務提供的是原子廣播(Atomic Broadcast),保證同一個鏈上的節點接收到相同的消息,並且有相同的邏輯順序。

排序服務的多通道(MultiChannel)實現了多鏈的數據隔離,保證只有同一個鏈的Peer節點才能訪問鏈上的數據,保護用戶隱私。

排序服務可以採用集中式服務,也可以採用分佈式協議。

可以實現不同級別的容錯處理,目前正式發佈的1.0版本只支持Apache Kafka集群,提供交易排序的功能,只實現CFT(Crash Fault Tolerance,崩潰故障容錯),不支持BFT(Byzantime Fault Tolerance,拜占庭容錯)。 現在是通過Kafka/ Zookeeper實現的CFT,未來將提供基於 etcd/Raft 的Raft共識訂購服務以及完全分散的BFT訂購服務

##CA節點

CA節點是Hyperledger Fabric1.0的證書頒發機構(Certificate Authority),由服務器和客戶端組件組成。

CA節點接收客戶端的註冊申請,返回註冊密碼用於用戶登錄,以便獲取身份證書。

區塊鏈網絡上所有的操作都會驗證用戶的身份。

CA節點是可選的,可以用其他成熟的第三方CA頒發證書。

參考資料

《深度探索區塊鏈Hyperledger Fabric技術與應用》

Pluggable Consensus