Hyperledger Fabric 學習
什麼是區塊鏈
- 什麼是區塊鏈在咱們沒有接觸的時候,只知道它是一個去中心化的存儲方式。當咱們發生交易,或者動做的時候咱們會將記錄通知給全部參與者共同維護,達到去中心化的進行存儲。而且咱們會將記錄使用加密技術保證記錄一旦添加到了帳本中就沒法修改(沒法修改的帳本就能夠追溯信息根源)這個也就是區塊鏈有時候被稱爲證實系統。
區塊鏈使用場景
- 多方參與
- 跨機構數據共享需求
- 可以除本增收
- 提升工做效率
智能合約
- 智能合約也就是咱們說的鏈碼,咱們能夠經過智能合約訪問咱們的帳本,還能夠在不一樣的場景下經過智能合約達到不一樣的變化,也比如如咱們寫的代碼。
共識
- 保證帳本在整個網絡中同步的過程就叫作共識,該過程確保帳本僅在交易被相應參與者批准時更新,而且當帳本更新時,它們以相同的順序更新相同的交易。
什麼是Hyperledger Fabric
Hyperledger Fabric 是 Hyperledger 中的區塊鏈項目之一。與其餘區塊鏈技術同樣,它有一個帳本,使用智能合約,是一個參與者管理交易的系統。算法
- Hyperledger Fabric與其餘區塊鏈不一樣的是私有、許可。與容許未知身份與網絡的開放式非許可系統(須要諸如「工做量證實」之類的協議來驗證交易並保護網絡)不一樣,Hyperledger Fabric 網絡的成員須要從可信賴的 成員服務提供者(MSP) 註冊。
Membership Services Provider (MSP)。 MSP是證書頒發機構,以管理用於認證成員身份和角色的證書。在Hyperledger Fabric網絡中,全部的節點必需要有認證過的身份才能進行交易。MSP管理用戶ID並驗證網絡上的全部參與者,從而使Hyperledger Fabric成爲一個私有的和准入的網絡。數據庫
- Hyperledger Fabric 還提供多種可插拔選項。帳本數據能夠以多種格式存儲,共識機制能夠交換替換,而且支持不一樣的MSP。
- Hyperledger Fabric 還提供建立管道功能,顯示管道通信隔離,沒有加入這個管道你就沒有這個管道通知信息。
- 針對交易 Fabric 引入了一種新的架構,咱們稱爲執行-排序-驗證。爲了解決順序執行模型面臨的彈性、靈活性、可伸縮性、性能和機密性問題,它將交易流分爲三個步驟:
- 執行一個交易並檢查其正確性,從而給它背書,
- 經過(可插拔的)共識協議將交易排序,
- 提交交易到帳本前先根據特定應用程序的背書策略驗證交易
共享帳本
Hyperledger Fabric 有一個帳本子系統,包含兩個組件:世界狀態和交易狀態,每一個參與者都擁有他們所屬的Hyperledger Fabric 網絡的帳本副本網絡
- 世界狀態組件:描述在給定時間點帳本的狀態,它是帳本的數據庫。數據存儲方式能夠替換,默認是LevelDB鍵值存儲數據庫(簡稱:數據庫)
- 交易日誌組件:記錄產生世界狀態中當前值得全部交易,是世界狀態的更新歷史,它只記錄區塊鏈網絡使用的帳本數據庫先後的值(簡稱:日誌)
智能合約
- Hyperledger Fabric 智能合約用鏈碼進行編寫,當應用程序須要與帳本發生交互,由區塊鏈外部的應用程序調用。通常鏈碼只與帳本的世界狀態(數據庫)交互、不與交易日誌發生交互
隱私
- 當咱們的數據須要注意隱私問題,Hyperledger Fabric 提供支持私有網絡,也就是咱們說的通道進行隔離產生一個私有網絡
共識
- 咱們的交易必須按照發生的順序寫入咱們的帳本中,即便它們在網絡中不一樣參與者不一樣的集合中,爲保證順序、合法性、帳本狀態 一致。 Hyperledger Fabric 提供了一些容錯機制好比:PBFT(拜占庭容錯算法)
身份
- 區塊鏈網絡中不一樣的參與者包括Peer節點、排序節點、客戶端應用程序、管理員等,都具備一個封裝在X.509數字證書。這個身份表明着你能訪問到的資源。
成員
- 就至關於合法的公民,這裏的話就要配合成員服務者(MSP)驗證成員的有效身份信息。(如影隨行,一般結合使用)
策略
- 好比咱們要作一個時間有什麼前提條件,智能合約背書策略 鏈碼包中的每個智能合約都有一個背書策略,該策略指明瞭須要通道中多少不一樣組織的成員根據指定智能合約執行和驗證交易才能使一筆交易有效。所以,背書策略定義了必須「背書」(批准)提案執行的組織(的 Peer 節點)。
Peer節點
- 區塊鏈網絡主要是由Peer節點組成,Peer是網絡的基本元素,由於他們存儲了帳本和智能合約。一個成員能夠有多個Peer節點,可是主要分爲主節點、背書節點、記帳節點、排序節點
- 當發生通信時只會有一個節點進行確認,而後經過主節點進行通知組織中其餘Peer
排序節點和交易流程(執行、排序、驗證)
- 提案
- 客戶端應用程序將交易發送給一組節點,這些節點會調用智能合約生成帳本更新提案,而後進行背書審覈。
- 將交易排序並打包到區塊中
- 但咱們背書成功以後,咱們會交易提交到排序服務節點,排序服務建立交易區塊,最終這些交易區塊將分發給管道全部的Peer節點
- 驗證和提交
- 每一個節點將獨立地以肯定的方式驗證區塊,以確保帳本保持一致。
排序服務實現
- Raft (推薦) 、 Kafka (在 v2.0 中被廢棄) 、 Solo (在 v2.0 中被廢棄)