Hyperledger Fabric是分佈式分類帳解決方案的平臺,採用模塊化架構,提供高度機密性,彈性,靈活性和可擴展性,它旨在支持不一樣組件的可插拔實現,並適應整個經濟生態系統中存在的錯綜複雜的事物和複雜性。數據庫
咱們建議首次使用的用戶首先閱讀下面的介紹,以便熟悉區塊鏈的工做方式以及Hyperledger Fabric的特定功能和組件。編程
一旦熟悉 - 或者若是你已經熟悉區塊鏈和Hyperledger Fabric - 請轉到「入門」,而後從那裏探索演示,技術規範,API等。segmentfault
區塊鏈網絡的核心是一個分佈式分類帳,記錄網絡上發生的全部交易。網絡
區塊鏈分類帳一般被描述爲分散的,由於它被許多網絡參與者複製,每一個參與者都在維護中進行協做,咱們將看到分散化和協做是反映現實世界中企業交換商品和服務方式的強大屬性。架構
除了分散和協做以外,記錄到區塊鏈的信息是僅附加的,使用加密技術保證一旦將交易添加到分類帳,就沒法修改,這種「不變性」屬性使得肯定信息的出處變得簡單,由於參與者能夠肯定信息在過後沒有改變,這就是爲何區塊鏈有時被描述爲證實系統的緣由。編程語言
爲了支持信息的一致更新 - 並啓用整個分類帳功能(交易,查詢等) - 區塊鏈網絡使用智能合約來提供對分類帳的訪問控制。分佈式
智能合約不只是封裝信息並在整個網絡中保持簡單的關鍵機制,還能夠編寫它們以容許參與者自動執行交易的某些方面。模塊化
例如,能夠編寫智能合約來規定運輸物品的成本,其中運費根據物品到達的速度而變化,根據雙方贊成的條款並寫入分類帳,當收到物品時適當的資金會自動轉手。學習
保持分類帳交易在網絡中同步的過程 - 確保分類帳僅在交易被相應參與者批准時更新,而且當分類帳更新時,它們以相同的順序更新相同的交易 - 稱爲共識。區塊鏈
稍後你將學習更多關於分類帳,智能合約和共識的知識,就目前而言,將區塊鏈視爲共享的複製交易系統就足夠了,該系統經過智能合約進行更新,並經過稱爲共識的協做流程保持一致。
現今的交易網絡只不過是自商業記錄保存以來一直存在的略微更新的網絡版本,業務網絡的成員彼此進行交易,但他們維護他們交易的單獨記錄,而且他們所交易的東西 - 不管是16世紀的Flemish掛毯仍是今天的證券 - 必須在每次出售時肯定其出處,以確保出售物品的企業擁有一個產權鏈,以驗證其全部權。
你剩下的是一個以下所示的商業網絡:
現代技術已經從石碑和紙質文件夾到硬盤驅動器和雲平臺,但底層結構是同樣的。用於管理網絡參與者身份的統一系統不存在,創建出處是如此費力,須要數天來清理證券交易(其世界交易量達到數萬億美圓),合約必須手動簽署和執行,而且系統中的每一個數據庫都包含惟一信息,所以表明單點故障。
利用當今分散的信息和流程共享方法來構建跨越業務網絡的記錄系統是不可能的,即便可見性和信任的需求是明確的。
若是業務網絡不是由「現代」交易系統表明效率低下的老鼠窩,而是在網絡上創建身份,執行交易和存儲數據的標準方法,那該怎麼辦?若是肯定資產的出處能夠經過查看一旦寫入、沒法更改、而且所以可被信任的交易列表來肯定,那該怎麼辦?
該業務網絡看起來更像是這樣的:
這是一個區塊鏈網絡,其中每一個參與者都有本身的分類帳副本。除了共享分類帳信息以外,更新分類賬的過程也是共享的。與現今的系統不一樣,在參與者的私人程序用於更新其私人分類賬的狀況下,區塊鏈系統具備共享程序來更新共享分類賬。
經過共享分類帳協調其業務網絡的能力,區塊鏈網絡能夠減小與私有信息和處理相關的時間,成本和風險,同時提升信任和可見性。
你如今知道了區塊鏈是什麼以及爲何它有用,還有許多重要的其餘細節,但它們都與信息和流程共享的這些基本思想有關。
Linux基金會於2015年建立了Hyperledger項目,以推動跨行業的區塊鏈技術,而不是聲明單個區塊鏈標準,它鼓勵經過社區流程採用協做方式開發區塊鏈技術,鼓勵開放式發展的知識產權,而且隨着時間的推移採用關鍵標準。
Hyperledger Fabric是Hyperledger中的區塊鏈項目之一,與其餘區塊鏈技術同樣,它有一個分類帳,使用智能合約,是參與者管理他們交易的系統。
Hyperledger Fabric與其餘區塊鏈系統不一樣的地方是私有和許可的,而不是容許未知身份參與網絡的開放式無權限系統(須要諸如「proof of work」之類的協議來驗證交易並保護網絡),Hyperledger Fabric網絡的成員經過可信賴的成員資格服務提供商(MSP)登記。
Hyperledger Fabric還提供多種可插拔選項,分類帳數據能夠以多種格式存儲,共識機制能夠互換,而且支持不一樣的MSP。
Hyperledger Fabric還提供建立通道的功能,容許一組參與者建立單獨的交易分類帳。對於網絡來講,這是一個特別重要的選擇,其中一些參與者多是競爭對手而不想要他們作的每筆交易 - 他們向一些參與者而不是其餘參與者提供的特殊價格,例如 - 每一個參與者都知道。若是兩個參與者組成一個通道,那麼這些參與者 - 而不是其餘參與者 - 擁有該通道的分類帳副本。
Hyperledger Fabric有一個包含兩個組件的分類帳子系統:世界狀態和交易日誌,每一個參與者都擁有他們所屬的每一個Hyperledger Fabric網絡的分類帳副本。
世界狀態組件描述了在給定時間點的分類帳的狀態,它是分類帳的數據庫。交易日誌組件記錄致使世界狀態的當前值的全部交易;這是世界狀態的更新歷史,而後,分類帳是世界狀態數據庫和交易日誌歷史記錄的組合。
分類賬具備可替換的世界狀態數據存儲,默認狀況下,這是LevelDB鍵值存儲數據庫,交易日誌不須要是可插拔的,它只記錄區塊鏈網絡使用的分類賬數據庫的先後值。
Hyperledger Fabric智能合約以鏈碼編寫,當該應用程序須要與分類賬交互時,由區塊鏈外部的應用程序調用。在大多數狀況下,鏈碼只與分類賬的數據庫組件,世界狀態(例如,查詢它)交互,而不與交易日誌交互。
鏈碼能夠用幾種編程語言實現,目前,支持Go和Node。
取決於網絡的需求,企業對企業(B2B)網絡的參與者可能對他們共享的信息量很是敏感,對於其餘網絡,隱私不是最受關注的問題。
Hyperledger Fabric支持隱私(使用通道)是關鍵操做要求的網絡以及相對開放的網絡。
交易必須按照發生的順序寫入分類帳,即便它們可能位於網絡中不一樣的參與者組之間。爲此,必須創建交易的順序,而且必須採用一種方法來拒絕錯誤(或惡意)插入到分類賬中的不良交易。
這是一個深刻研究的計算機科學領域,有不少方法能夠實現它,每種方法都有不一樣的權衡。例如,PBFT(Practical Byzantine Fault Tolerance)能夠爲文件副本提供一種機制,使其可以相互通訊以保持每一個副本的一致性,即便在發生損壞的狀況下也是如此。或者,在比特幣中,經過稱爲挖掘的過程進行排序,競爭計算機競相解決加密難題,定義隨後構建的全部進程的順序。
Hyperledger Fabric旨在容許網絡啓動者選擇最能表明參與者之間存在的關係的共識機制,與隱私同樣,存在一系列需求;從在他們的關係中高度結構化的網絡到更加點對點的網絡。
咱們將瞭解有關Hyperledger Fabric共識機制的更多信息,目前包括SOLO和Kafka。
一份概念文檔將引導你瞭解Fabric網絡中的關鍵角色身份(使用已創建的PKI結構和x.509證書)。
討論成員資格服務提供商(MSP)的角色,該服務提供商將身份轉換爲Fabric網絡中的角色。
由組織擁有的對等點 - 託管分類賬和智能合約,構成Fabric網絡的物理結構。
瞭解如何使用示例腳本下載Fabric二進制文件並引導你本身的示例網絡,而後分解網絡,瞭解它是如何一步一步構建的。
部署一個很是簡單的網絡 - 甚至比構建您的第一個網絡更簡單 - 與簡單的智能合約和應用程序一塊兒使用。
從高層次看一看示例交易流
高級別介紹本簡介中介紹的一些組件和概念以及其餘一些組件和概念,並介紹它們如何在示例交易流中一塊兒工做。