1. 程式人生 > >02.Fabric1.0架構簡介

02.Fabric1.0架構簡介

陳述

如果說以比特幣為代表的貨幣區塊鏈技術為 1.0,以以太坊為代表的合同區塊鏈技術為 2.0,那麼實現了完備的許可權控制和安全保障的 Hyperledger 專案毫無疑問代表著區塊鏈技術 3.0 時代的到來。

Fabric1.0架構簡介

Fabric架構的核心包括三部分:

  • Identity - 身份管理
  • Smart Contact - 智慧合約
  • Ledger及Transactions - 賬本和交易

Identity

Identity,也就是身份管理,Fabric是目前為止在設計上最貼近聯盟鏈思想的區塊鏈。聯盟鏈考慮到商業應用對安全、隱私、監管、審計、效能的需求,提高准入門檻,成員必須被許可才能加入網路。Fabric成員管理服務為整個區塊鏈網路提供身份管理、隱私、保密和可審計的服務。成員管理服務通過公鑰基礎設施PKI和去中心化共識機制使得非許可的區塊鏈變成許可制的區塊鏈。

Smart Contract

Fabric的智慧合約smart contract稱為鏈碼ChainCode,是一段程式碼,它處理網路成員所同意的業務邏輯。和以太坊相比,Fabric鏈碼和底層賬本是分開的,升級鏈碼時並不需要遷移賬本資料到新鏈碼當中,真正實現了邏輯與資料的分離。

鏈碼可採用Go、Java、Node.js語言編寫。鏈碼被編譯成一個獨立的應用程式,fabric用Docker容器來執行chaincode,裡面的base映象都是經過簽名驗證的安全映象,包括OS層和開發chaincode的語言、runtime和SDK層。一旦chaincode容器被啟動,它就會通過gRPC與啟動這個chaincode的Peer節點連線。

Ledger | Transactions

Fabric使用建立在HTTP/2上的P2P協議來管理分散式賬本。採取可插拔的方式來根據具體需求來設定共識協議,比如PBFT,Raft,PoW和PoS等。

Ledger

賬本Ledger主要包含兩塊blockchain和state。blockchain就是一系列連在一起的block,用來記錄歷史交易。state對應賬本的當前最新狀態,它是一個key-value資料庫,Fabric預設採用Level DB, 可以替換成其他的Key-value資料庫,如Couch DB。舉個例子。我們採用區塊鏈實現一個彈珠交易的系統。我們開發了一個Chaincode, 每個彈珠有以下幾個屬性:Name, owner, color, size. 可以定義一個JSON物件,用name做KEY, JSON物件做Value,儲存在Level DB或者CouchDB中。

Transactions

Fabric上的transction交易分兩種,部署交易和呼叫交易。

  • 部署交易

    把Chaincode部署到peer節點上並準備好被呼叫,當一個部署交易成功執行時,Chaincode就被部署到各個peer節點上。好比把一個web service或者EJB部署到應用伺服器上的不同例項上。

  • 呼叫交易

    客戶端應用程式通過Fabric提供的API呼叫先前已部署好的某個chaincode的某個函式執行交易,並相應地讀取和寫入K-V資料庫,返回是否成功或者失敗。

APIs,Events,SDKs

站在程式猿的角度Fabric開發主要包括客戶端和伺服器端應用程式的編寫

  • 伺服器端

Fabric提供API方便應用開發,對服務端的ChainCode,目前支援用Go、Java或者Node.js開發。

  • 客戶端

對客戶端應用,Fabric目前提供Node.js和Java SDK, Go SDK。未來計劃提供Python,Fabric還提供RESTAPI。

對於開發者,還可以通過CLI快速去測試chaincode,或者去查詢交易狀態。在區塊鏈網路裡,節點和chaincode會發送events來觸發一些監聽動作,方便與其他外部系統的整合。