Fabric簡介


1. Fabric

1.1 背景

比特幣->以太坊->超級賬本

1.2 區塊鏈是什么

  • 鏈表的數據結構,相鏈接的是區塊
  • 分布式賬本

一個區塊鏈網絡的核心是一個分布式賬本,在這個賬本中記錄了網絡中發生的所有交易信息。

區塊鏈賬本通常被定義為去中心化,這是因為在整個網絡中,每個參與者都保存着一個區塊鏈賬本的副本,所有參與者通過協作共同維護着賬本。接下來我們會看到,去中心化與協作這兩個特點在現實世界的商業貨物交易和商務服務中展現出的顯著優點。

1.3 區塊鏈特點:

  • 去中心化
  • 不可篡改
  • 匿名
  • 可追溯

1.4 Hyperledger Fabric特點

  • 極佳的保密性
  • 可伸縮性
  • 靈活性
  • 可擴展性

Hyperledger Fabric被設計成(模塊直接插拔,適用多種場景)

支持不同的模塊組件直接拔插啟用,並能適應在經濟生態系統中錯綜復雜的各種場景

1.5 Fabric中的組件/術語:

Channel:是一種數據隔離機制,保證交易信息只有交易參與方可見,每個channel是一個獨立的區塊鏈,這使得多個用戶可以共用同一個區塊鏈系統而不用擔心信息泄露問題。
Chaincode:也叫智能合約,將資產定義和資產處理邏輯封裝成接口,當其被用戶調用的時候,改變賬本的狀態。

Ledger:區塊鏈賬本,保存交易信息和智能合約代碼。

Network:交易處理節點之間的P2P網絡,用於維持區塊鏈賬本的一致性。

Ordering service:利用kafka、SBTF等共識算法對所有交易信息進行排序並打包成區塊,發給committing peers節點,寫入區塊鏈中。

World state:顯示當前資產數據的狀態,底層通過LevelDB和CouchDB數據庫將區塊鏈中的資產信息組織起來,提供高效的數據訪問接口。

Membership service provider(MSP):管理認證信息,為client和peers提供授權服務。

1.6 Hyperledger Fabric Network中的角色

在Hyperledger中,由三種類型的角色:

  • Client:應用客戶端,用於將終端用戶的交易請求發送到區塊鏈網絡;

  • Peers:負責維護區塊鏈賬本,分為endoring peers和committing peers,其中,endorser為交易做背書(驗證交易並對交易簽名),committer接收打包好的區塊,然后寫入區塊鏈中。Peers節點是一個邏輯的概念,endorser和committer可以同時部署在一台物理機上。

  • Ordering Service:接收交易信息,並將其排序后打包成區塊,放入區塊鏈,最后將結果返回給committer peers。

1.7 Hyperledger交易流程

  • 1、客戶端通過SDK接口,向endorsing peer節點發送交易信息:

  • 2、每個endorsing peer節點模擬處理交易,此時並不會將交易信息寫入賬本。然后,endorser peer會驗證交易信息的合法性,並對交易信息簽名后,返回給client。此時的交易信息只是在client和單個endorser peer之間達成共識,並沒有完成全網共識,各個client的交易順序沒有確定,可能存在雙花問題,所以還不能算是一個“有效的交易”。同時,client需要收到“大多數”endorser peer的驗證回復后,才算驗證成功,具體的背書策略由智能合約代碼控制,可以由開發者自由配置。

  • 3、client將簽名后的交易信息發送給order service集群進行交易排序和打包。Order service集群通過共識算法,對所有交易信息進行排序,然后打包成區塊。Order service的共識算法是以組件化形態插入Hyperledger系統的,也就是說開發者可以自由選擇合適的共識算法。

  • 4、ordering service將排序打包后的區塊廣播發送給committing peers,由其做最后的交易驗證,並寫入區塊鏈。ordering service只是決定交易處理的順序,並不對交易的合法性進行校驗,也不負責維護賬本信息。只有committing peers才有賬本寫入權限。

1.8 Hyperledger Fabric Network的共識算法

在所有peers中,交易信息必須按照一致的順序寫入賬本(區塊鏈的基本原則)。例如,比特幣通過POW機制,由最先完成數學難題的節點決定本次區塊中的信息順序,並廣播給全網所有節點,以此來達成賬本的共識。而Hyperledger Fabric采用了更加靈活、高效的共識算法,以適應企業場景下,對高TPS的要求。目前,Hyperledger Fabric有三種交易排序算法可以選擇。

  • SOLO:只有一個order服務節點負責接收交易信息並排序,這是最簡單的一種排序算法,一般用在實驗室測試環境中。Sole屬於中心化的處理方式。

  • Kafka:是Apache的一個開源項目,主要提供分布式的消息處理/分發服務,每個kafka集群由多個服務節點組成。Hyperledger Fabric利用kafka對交易信息進行排序處理,提供高吞吐、低延時的處理能力,並且在集群內部支持節點故障容錯。

  • SBFT:簡單拜占庭算法,相比於kafka,提供更加可靠的排序算法,包括容忍節點故障以及一定數量的惡意節點。目前,Hyperledger Fabric社區正在開發該算法。

1.9 交易流程總結

區塊鏈的賬本由peer節點維護,並不是由ordering service集群維護,所以,只有peer節點上可以找到完整的區塊鏈信息,而order service集群只負責對交易進行排序,只保留處理過程中的一部分區塊鏈信息。Hyperledger Fabric系統中的節點是一個邏輯的概念,並不一定是一個台物理設備,但是對於生產環境的設計者來說,peer節點不能和order節點部署在一台機器上,而enduring peers和committing peers可以部署在同一台機器上,這種設計主要是為了系統架構的解耦,提高擴展性,以及通過主機隔離提高安全性。 Endorsing peer校驗客戶端的簽名,然后執行智能合約代碼模擬交易。交易處理完成后,對交易信息簽名,返回給客戶端。客戶端收到簽名后的交易信息后,發給order節點排序。Order節點將交易信息排序打包成區塊后,廣播發給committing peers,寫入區塊鏈中。一個完整的交易處理流程如下圖所示:

1.9 Channel的概念

Channels能夠讓上層不同的用戶業務共享同一個區塊鏈系統資源,主要包括網絡、計算、存儲資源。從本質上來說,channels是通過不同的區塊鏈賬本來為上層業務服務,而且,這些區塊鏈統一部署在peers節點上,統一通過ordering service進行交易排序和打包區塊。Channels之間通過權限隔離控制,不同channel內的成員,無法訪問對方的交易信息,只能訪問所屬channel的交易信息。

channel可以理解為系統資源的邏輯單元,每個channel都包含peers資源、order資源、網絡資源等等,而且這些資源有可能是和其它channel所共享。

1.10 State Database

狀態數據庫保存了賬本所有資產的最新狀態(例如,賬戶A擁有某種資產的總量),同時,為智能合約提供了豐富的資產查詢語義。所有的資產信息最終以文件形式記錄在區塊鏈賬本中,而數據庫是區塊鏈賬本的視圖表現形式,能夠讓智能合約更加高效的和賬本信息進行交互。數據庫自動從底層區塊鏈賬本中更新或者恢復數據,默認的狀態數據庫是LevelDB,也可以替換為CouchDB。
LevelDB:Hyperledger Fabric的默認數據庫,簡單的存儲鍵值對信息;

CouchDB:提供更加豐富的查詢語義,可以保存JSON對象,以及范圍key的查詢。

1.11 Smart Contract

智能合約就是一段部署在區塊鏈賬本中的計算機程序,用於執行交易以及修改資產的狀態。在Hyperledger Fabric中,智能合約被稱作chaincode,使用Go語言編寫。

1.12 Membership Service Provider(MSP)

Hyperledger Fabric是一種permissioned blockchain,所有的節點都是必須經過授權后才能訪問區塊鏈網絡(比特幣屬於permissionless blockchain)。MSP是Hyperledger Fabric中的身份認證模塊,用於對用戶身份的校驗、授權以及網絡訪問權限控制。默認的MSP接口是Fabric-CA API,同時,開發者可以根據自身的業務需要,實現自己的身份認證接口,對接MSP。Hyperledger Fabric網絡可以被多個MSP控制,用以滿足各個組織的需要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM