fabric是由下面這個小節所描述的核心組件所組成的。 2.1 架構
這個架構參考關注在三個類別中:會員(Membership),區塊鏈(Blockchan)和鏈碼(chaincode)。這些類別是邏輯結構,而不是物理上的把不同的組件分割到獨立的進程,地址空間,(虛擬)機器中。
2.1.1 成員服務
成員服務為網路提供身份管理,隱私,保密和可審計性的服務。在一個不帶許可權的區塊鏈中,參與者是不需要被授權的,且所有的節點都可以同樣的提交交易並把它們彙集到可接受的塊中,如:它們沒有角色的區分。成員服務通過公開金鑰基礎設施(Public Key Infrastructure (PKI))和去中心化的/共識技術使得不帶許可權的區塊鏈變成帶許可權的區塊鏈。在後者中,通過實體註冊來獲得長時間的,可能根據實體類型產生的身份憑證(登記認證enrollment certificates)。在使用者使用過程中,這樣的認證允許交易憑證授權單位(Transaction Certificate Authority (TCA))頒發匿名認證。這樣的認證,如交易認證,被用來對提交交易授權。交易憑證存放區在區塊鏈中,並對審計叢集授權,否則交易是不可連結的。 2.1.2 區塊鏈服務
區塊鏈服務通過 HTTP/2 上的點對點(peer-to-peer)協議來管理分布式總賬。為了提供最高效的雜湊演算法來維護世界狀態的複製,資料結構進行了高度的最佳化。每個部署中可以插入和配置不同的共識演算法(PBFT, Raft, PoW, PoS)。 2.1.3 鏈碼服務
鏈碼服務提供一個安全的,輕量的沙箱在驗證節點上執行鏈碼。環境是一個“鎖定的”且安全的包含簽過名的安全作業系統鏡像和鏈碼語言,Go,Java 和 Node.js 的運行時和 SDK 層。可以根據需要來啟用其他語言。 2.1.4 事件
驗證 peers 和鏈碼可以向在網路上監聽並採取行動的應用發送事件。這是一些預定義好的事件集合,鏈碼可以產生客戶化的事件。事件會被一個或多個事件適配器消費。之後適配器可能會把事件投遞到其他裝置,如 Web hooks 或 Kafka。 2.1.5 應用編程介面(API)
fabric的主要介面是 REST API,並通過 Swagger 2.0 來改變。API 允許註冊使用者,區塊鏈查詢和發布交易。鏈碼與執行交易的堆間的互動和交易的結果查詢會由 API 集合來規範。 2.1.6 命令列介面(CLI)
CLI包含REST API的一個子集使得開發人員能更快的測試鏈碼或查詢交易狀態。CLI 是通過 Go 語言來實現,並可在多種作業系統上操作。 2.2 拓撲
fabric 的一個部署是由成員服務,多個驗證 peers、非驗證 peers 和一個或多個應用所組成一個鏈。也可以有多個鏈,各個鏈具有不同的巨集指令引數和安全要求。 2.2.1 單驗證Peer
功能上講,一個非驗證 peer 是驗證 peer 的子集;非驗證 peer 上的功能都可以在驗證 peer 上啟用,所以在最簡單的網路上只有一個驗證peer組成。這個配置通常使用在開發環境:單個驗證 peer 在編輯-編譯-調試周期中被啟動。
單個驗證 peer 不需要共識,預設情況下使用noops外掛程式來處理接收到的交易。這使得在開發中,開發人員能立即收到返回。 2.2.2 多驗證 Peer
生產或測試網路需要有多個驗證和非驗證 peers 組成。非驗證 peer 可以為驗證 peer 分擔像 API 請求處理或事件處理這樣的壓力。
網狀網路(每個驗證peer需要和其它驗證peer都相連)中的驗證 peer 來傳播資訊。一個非驗證 peer 串連到附近的,允許它串連的驗證 peer。當應用可能直接連接到驗證 peer 時,非驗證 peer 是可選的。 2.2.3 多鏈
驗證和非驗證 peer 的各個網路組成一個鏈。可以根據不同的需求建立不同的鏈,就像根據不同的目的建立不同的 Web 網站。