1. 程式人生 > >BlockChain技術系列(二)- fabric架構介紹

BlockChain技術系列(二)- fabric架構介紹

fabric是由下面這個小節所描述的核心元件所組成的。

2.1 架構

這個架構參考關注在三個類別中:會員(Membership),區塊鏈(Blockchan)和鏈碼(chaincode)。這些類別是邏輯結構,而不是物理上的把不同的元件分割到獨立的程序,地址空間,(虛擬)機器中。

Reference architecture

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 在編輯-編譯-調試周期中被啟動。

Single Validating Peer

單個驗證 peer 不需要共識,預設情況下使用noops外掛來處理接收到的交易。這使得在開發中,開發人員能立即收到返回。

2.2.2 多驗證 Peer

生產或測試網路需要有多個驗證和非驗證 peers 組成。非驗證 peer 可以為驗證 peer 分擔像 API 請求處理或事件處理這樣的壓力。

Multiple Validating Peers

網狀網路(每個驗證peer需要和其它驗證peer都相連)中的驗證 peer 來傳播資訊。一個非驗證 peer 連線到附近的,允許它連線的驗證 peer。當應用可能直接連線到驗證 peer 時,非驗證 peer 是可選的。

2.2.3 多鏈

驗證和非驗證 peer 的各個網路組成一個鏈。可以根據不同的需求建立不同的鏈,就像根據不同的目的建立不同的 Web 站點。