超級帳本組成模型git
本文主要講述Hyperledger Fabric的關鍵設計特性,並細述如何實現了一個全面的、可定製的企業級區塊鏈解決方案:github
資產定義——資產這裏理解爲任何具備貨幣價值的東西,它們均可以經過網絡進行交易,不管是超市商品到古董車再到貨幣期貨都屬於資產。算法
智能合約——鏈碼(chaincode)即Fabric的智能合約,分爲系統鏈碼和用戶鏈碼。鏈碼的執行由事務排序劃分,限制了節點類型間的信任和驗證級別,並優化了網絡的可伸縮性和性能。sql
帳本特徵——帳本不可變的、共享的而且爲每一個通道(channel)編碼了整個事務歷史,還包含了相似sql的查詢功能,用於高效的審計和解決爭議。數據庫
隱私通道——多通道(channel)交易的設計方案能夠確保競爭的企業和受監管的行業在一個公共網絡上交換資產時的高度隱私及保密性。安全
成員安全——Hyperledger Fabric只容許被受權加盟的成員參與數據維護,且成員間相互承認全部的交易都會被彼此發現和跟蹤。這種方式提供了一個可信的區塊鏈網絡。網絡
共識機制——共識策略的設定是爲了達成一致的一種獨特的方法,它能夠實現企業間所需的靈活性和可伸縮性。composer
資產分佈式
資產能夠從有形資產(如房地產和硬件)到無形資產(如合同和知識產權)。Hyperledger Fabric提供了使用智能合約交易修改資產的能力。工具
資產在Hyperledger Fabric中以鍵-值對集合的形態存在,在通道(channel)中各本地帳本能夠對其狀態提交變動事務。資產能夠用二進制和/或JSON形式表示。
咱們能夠經過Hyperledger Fabric的Composer工具很容易地定義和使用Hyperledger Fabric應用程序中的資產。
智能合約
智能合約是定義資產而且能夠用於修改資產的事務指令的軟件。換句話說,它就是一個通道(channel)全部的業務邏輯。智能合約制定了執行讀取或修改鍵值對以及其它狀態數據庫信息操做的規則。智能合約經過一個事務請求來執行對帳本的當前狀態數據庫操做。智能合約執行會生成一組讀寫集,這組讀寫集能夠經過網絡提交給排序服務節點,並由排序服務節點廣播且應用到全部的對等節點上。
帳本特徵
在Fabric中產生的全部針對數據狀態變動的請求都會生成有序且不可篡改的記錄存於帳本中。數據狀態的變動是由全部參與方承認的智能合約調用事務的結果。每一個事務都將產生一組資產鍵-值對,這些鍵值對做爲建立、更新或刪除等操做而同步到全部帳本。
帳本由區塊鏈(區塊根據hash等算法組成的鏈條)組成,而每個區塊中都存儲有一條或一組有序的且不可篡改的記錄,也就是一個狀態數據庫來維護當前的Fabric的狀態。每一個通道(channel)都有且僅有一個帳本,在該通道(channel)中的每一個加盟成員的對等點都維護同一份帳本。
隱私通道
Hyperledger Fabric在每一個通道(channel)中都有一個不可篡改的帳本,以及一個能夠操縱和修改當前資產狀態的智能合約(例如,更新鍵值對)。一個帳本限制在一個通道(channel)的範圍內——它能夠在整個網絡中共享(假設每一個參與者都在一個公共通道(channel)上運行)——或者它也能夠被私有化,只包含一組特定的參與者。
在上述中的後一種狀況下,這些參與者將建立一個單獨的通道(channel),從而使他們的事務和帳本隔離出來。爲了知足即公開透明又能保護隱私的場景,智能合約只能在須要訪問資產狀態來執行讀和寫操做的對等節點上安裝(換句話說,若是一個智能合約沒有安裝在對等節點上,它將沒法調用帳本暴露出去的接口)。
爲了進一步混淆數據,智能合約中的值可使用諸如AES之類的通用加密算法進行加密(在必定程度上或所有使用),而後將事務發送到排序服務,並將生成的區塊追加到帳本上。一旦加密的數據被寫入到帳本,它只能被擁有相應的密鑰用戶解密。
成員安全
Hyperledger Fabric是一個支持全部參與者都有本身的身份的交易網絡。公鑰的底層方案用於生成與組織、網絡組件和最終用戶或客戶端應用程序綁定的加密證書。所以,能夠在更普遍的網絡和通道(channel)層次上對數據訪問控制進行操做和治理。隱私和保密是最重要和最關鍵的問題,Hyperledger Fabric這種「被許可」的概念,再加上通道(channel)的存在和功能,有助於解決該問題。
共識機制
在分佈式帳本技術中,共識做爲單一功能最近成爲了一種特定算法的同義詞。然而,共識不只僅是簡單地就事務的順序達成一致,並且在Hyperledger Fabric中這種經過它在整個事務流中的基本做用,包括從提交請求、背書驗證,到事務排序、確認和廣播,這種區別顯得尤其突出。簡單地說,共識被定義爲一個完整的循環,它是由一個通過驗證覈實的區塊所包含的一組事務。
當一個區塊中的事務集合的順序和結果通過全部的檢查而符合策略標準時,將最終達成一致。這些檢查和平衡發生在一個個請求事務的生命週期中,包括使用背書策略來規定哪些特定的成員必須支持某個事務類,以及系統智能合約,以確保這些策略獲得執行和維護。在提交排序服務節點以前,這些執行驗證的對等節點將使用這些系統智能合約來確保足夠的背書支持,並從適當的實體中得到。此外,在任何包含事務的區塊被添加進帳本以前,將進行版本控制,在此期間,將對帳本的當前狀態進行商定或贊成。最後的檢查提供了對雙重開銷操做(處理相同事務)和其餘可能危害數據完整性的威脅的保護,並容許被執行的方法依賴非靜態變量。
除了大量的背書承認、有效性和版本控制檢查以外,在事務流的各個方向上也有正在進行的身份驗證。訪問控制列表是在經過網絡實現的(排序服務下發到全部通道),而且由於一條事務請求將會經過不一樣的體系結構組件,因此payloads會被反覆地簽名、複覈及驗證。總之,達成共識並不只僅侷限於一組交易的達成一致,而是一種一應俱全的特性,它是在交易從提案到最終廣播過程當中進行的持續驗證的副產品。