區塊鏈學習札記八:超級賬本(Hyperledger)平臺架構

區塊鏈學習札記八:超級賬本(Hyperledger)平臺架構

 

超級賬本(Hyperledger)是 Linux 基金會於 2015 年發起的推進區塊鏈數字技術和交易驗證的開源項目,該項目的目標是推進區塊鏈及分佈式記賬系統的跨行業發展與協作

目前該項目最著名的子項目是 Fabric,由 IBM 主導開發。按官方網站描述,Hyperledger Fabric 是分佈式記賬解決方案的平臺,以模塊化體系結構爲基礎,提供高度的彈性、靈活性和可擴展性。它旨在支持不同組件的可插拔實現,並適應整個經濟生態系統中存在的複雜性。

Hyperledger Fabric 提供了一種獨特的彈性和可擴展的體系結構,使其不同於其他區塊鏈解決方案。我們必須在經過充分審查的開源架構之上對區塊鏈企業的未來進行規劃。超級賬本是企業級應用快速構建的起點。

目前,Hyperledger Fabric 經歷了兩大版本架構的迭代,分別是 0.6 版和 1.0 版。其中,0.6 版的架構相對簡單,Peer 節點集衆多功能於一身,模塊化和可拓展性較差。1.0 版對 0.6 版的 Peer 節點功能進行了模塊化分解。目前最新的 1.1 版本處於 Alpha 階段。

在 1.0 版中,Peer 節點可分爲 peers 節點和 orderers 節點。peers 節點用於維護狀態(State)和賬本(Ledger),orderers 節點負責對賬本中的各條交易達成共識。

系統中還引入了認證節點(Endorsing Peers),認證節點是一類特殊的 peers 節點, 負責同時執行鏈碼(Chaincode)和交易的認證(Endorsing Transactions)。

Hyperledger Fabric 的分層架構設計如圖下所示。

Hyperledger Fabric 的分層架構設計

Hyperledger Fabric 可以分爲7層,分別是存儲層、數據層、通道層、網絡層、共識層、合約層、應用層

其中存儲層主要對賬本和交易狀態進行存儲。賬本狀態存儲在數據庫中,存儲的內容是所有交易過程中出現的鍵值對信息。比如,在交易處理過程中,調用鏈碼執行交易可以改變狀態數據。狀態存儲的數據庫可以使用 LevelDB 或者 CouchDB。LevelDB 是系統默認的內置的數據庫,CouchDB 是可選的第三方數據庫。區塊鏈的賬本則在文件系統中保存。

數據層主要由交易(Transaction)、狀態(State)和賬本(Ledger)三部分組成。

其中,交易有兩種類型:

  • 部署交易:以程序作爲參數來創建新的交易。部署交易成功執行後, 鏈碼就被安裝到區塊鏈上。
  • 調用交易:在上一步部署好的鏈碼上執行操作。鏈碼執行特定的函數,這個函數可能會修改狀態數據,並返回結果。

狀態對應了交易數據的變化。在 Hyperledger Fabric 中,區塊鏈的狀態是版本化的,用 key/value store(KVS) 表示。其中 key 是名字,value 是任意的文本內容,版本號標識這條記錄的版本。這些數據內容由鏈碼通過 PUT 和 GET 操作來管理。如存儲層的描述,狀態是持久化存儲到數據庫的,對狀態的更新是被文件系統記錄的。

 

賬本提供了所有成功狀態數據的改變及不成功的嘗試改變的歷史。

賬本是由 Ordering Service 構建的一個完全有序的交易塊組成的區塊哈希鏈 (Hash Chain)。

賬本既可以存儲在所有的 peers 節點上,又可以選擇存儲在幾個 orderers 節點上。 此外,賬本允許重做所有交易的歷史記錄,並且重建狀態數據。

通道層指的是通道 (Channel),通道是一種 Hyperledger Fabric 數據隔離機制,用於保證交易信息只有交易參與方可見。每個通道都是一個獨立的區塊鏈,因此多個用戶可以共用同一個區塊鏈系統,而不用擔心信息泄漏問題。

網絡層用於給區塊鏈網絡中各個通信節點提供 P2P 網絡支持,是保障區塊鏈賬本一致性的基礎服務之一。

在 Hyperledger Fabric 中,Node 是區塊鏈的通信實體。Node 僅僅是一個邏輯上的功能,多個不同類型的 Node 可以運行在同一個物理服務器中。Node 有三種類型,分別是客戶端、peers 節點和 Ordering Service。

其中,客戶端用於把用戶的交易請求發送到區塊鏈網絡中。

peers 節點負責維護區塊鏈賬本,peers 節點可以分爲 endoring peers 和 committing peers 兩種。endoring peers 爲交易作認證,認證的邏輯包含驗證交易的有效性,並對交易進行簽名;committing peers 接收打包好的區塊,並寫入區塊鏈中。與 Node 類似,peers節點也是邏輯概念,endoring peers 和 committing peers 可以同時部署在一臺物理機上。

Ordering Service 會接收交易信息,並將其排序後打包成區塊,然後,寫入區塊鏈中,最後將結果返回給 committing peers。

共識層基於 Kafka、SBTF 等共識算法實現。Hyperledger Fabric 利用 Kafka 對交易信息進行排序處理,提供高吞吐、低延時的處理能力,並且在集羣內部支持節點故障容錯。相比於 Kafka,SBFT(簡單拜占庭算法)能提供更加可靠的排序算法,包括容忍節點故障以及一定數量的惡意節點。

合約層是 Hyperledger Fabric 的智能合約層 Blockchain,Blockchain 默認由 Go 語言實現。Blockchain 運行的程序叫作鏈碼,持有狀態和賬本數據,並負責執行交易。在Hyperledger Fabric 中,只有被認可的交易才能被提交。而交易是對鏈碼上的操作的調用,因此鏈碼是核心內容。同時還有一類稱之爲系統鏈碼的特殊鏈碼,用於管理函數和參數。

應用層是 Hyperledger Fabric 的各個應用程序。

此外,既然是聯盟鏈,在 Hyperledger Fabric中 還有一個模塊專門用於對聯盟內的成員進行管理,即 Membership Service Provider(MSP),MSP 用於管理成員認證信息,爲客戶端和 peers 節點提供成員授權服務。


備註:學習筆記,日有所得。

           --不間端地思考,實時地批判你的工作!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章