一、Hyperledger fabric V1.0 架構
1、邏輯架構:
2、區塊鏈網絡
3、運行時架構
二、架構總結
1、架構要點
分拆Peer的功能,將Blockchain的數據維護和共識服務進行分離,共識服務從Peer節點中完全分離出來,獨立為Orderer節點提供共識服務; 基於新的架構,實現多通道(channel)的結構,實現了更為靈活的業務適應性(業務隔離、安全性等方面) 支持更強的配置功能和策略管理功能,進一步增強系統的靈活性和適應性;
2、架構目標
1、chaincode信任的靈活性:支持多個ordering服務節點,增強共識的容錯能力和對抗orderer作惡的能力
2、 擴展性: 將endorsement和ordering進行分離,實現多通道(實際是分區)結構,增強系統的擴展性;同時也將chaincode執行、ledger、state維護等非常消耗系統性能的任務與共識任務分離,保證了關鍵任務(ordering)的可靠執行
3、保密性:新架構對於chaincode在數據更新、狀態維護等方面提供了新的保密性要求,提高系統的業務、安全方面的能力
4、共識服務的模塊化:支持可插拔的共識結構,支持多種共識服務的接入和服務實現
3、重要特征【支持多chain和多channel】
多鏈chain
所謂的chain(鏈)實際上是包含Peer節點、賬本、ordering通道的邏輯結構,它將參與者與數據(包含chaincode在)進行隔離,滿足了不同業務場景下的”不同的人訪問不同數據“的基本要求。同時,一個peer節點也可以參與到多個chain中(通過接入多個channel);如下圖所示
多通道
通道是有共識服務(ordering)提供的一種通訊機制,類似於消息系統中的發布-訂閱(PUB/SUB)中的topic;基於這種發布-訂閱關系,將peer和orderer連接在一起,形成一個個具有保密性的通訊鏈路(虛擬),實現了業務隔離的要求;通道也與賬本(ledger)-狀態(worldstate)緊密相關;如下圖所示:
peer 1,2和N訂閱紅色通道,並共同維護紅色賬本; peer 1和N訂閱藍色通道並維護藍色賬本; 類似地,peer 2和peer N在黑色通道上並維護黑色賬本。
在這個例子中,peer N在訂閱了所有通道,我們看到每個通道都有一個相關的賬本。 一般來說,我們稱不涉及所有peer的賬本為子賬本,另一種是系統賬本,即全賬本。
通道和賬本的組合是一個虛擬鏈,因此一個區塊鏈網絡可以具有1個共識服務的多個鏈。 系統通道和全賬本構成系統鏈。 每個區塊鏈網絡只有1個系統鏈。如果交易是公開的,區塊鏈網絡可能永遠不需要多個鏈; 所有的交易對所有Peers成員都可見。 然而,在成員間進行私密交易(例如雙邊合同),單獨的鏈是隔離數據、提供保密的方式。
4、交易(數據)流程說明
事物
事物處理流程【交易流程】,如下:
- 應用程序通過SDK發送請求道Peer節點(一個或多個)
- peer節點分別執行交易(通過chaincode),但是並不將執行結果提交到本地的賬本中(可以認為是模擬執行,交易處於掛起狀態),參與背書的peer將執行結果返回給應用程序(其中包括自身對背書結果的簽名)
- 應用程序 收集背書結果並將結果提交給Ordering服務節點
- Ordering服務節點執行共識過程並生成block,通過消息通道發布給Peer節點,由peer節點各自驗證交易並提交到本地的ledger中(包括state狀態的變化)
事務流(peer節點內)
上述過程對應的執行序列圖如下:
5、賬本
總體流程如下圖所示:在新的架構中,Peer節點負責維護區塊鏈的賬本(ledger)和狀態(State),本地的賬本稱為PeerLedger,其結構如下:
整個區塊結構分為文件系統存儲的Block結構和數據庫維護的State狀態,其中state的存儲結構是可以替換的,可選的實現包括各種KV數據庫(LEVELDB,CouchDB等);
三、整體賬本設計詳述
四、1.0版本的版本計划
很明顯Febric V0.6與V1.0的架構及流程差異極大,在V0.6下開發的應用很難在V1.0環境下運行,所以我們還是不要費勁折騰V0.6,還是從V1.0開始吧!(官方公布的計划)
參看地址:http://newthink.blog.51cto.com/872263/1897379?utm_source=tuicool&utm_medium=referral