Hyperledger Fabric概述
綜述
Hyperledger Fabric是一個模塊化的分布式賬本解決方案支撐平臺,提供高度的保密性、彈性、靈活性與可擴展性。它的目的是支持不同組件的可插入實現,並適應經濟系統中存在的復雜性。Hyperledger Fabric提出了一個獨特的高彈性且可擴展的體系結構,此結構使Fabric區別於其他區塊鏈解決方案。在Fabric對企業級區塊鏈的未來規劃中,它的架構允許被全面審查且開源。
我們建議新手用戶首先閱讀接下來的內容以熟悉區塊鏈如何工作,並熟悉Hyperledger Fabric的組成與功能。
區塊鏈是什麽
分布式賬本
區塊鏈網絡的核心是分布式賬本,一個記錄網絡中發生的所有交易的分布式賬本。區塊鏈賬本經常被描述成“去中心化”,這是因為它被網絡中的多個參與者復制,且由所有參與者共同維護,我們將見證去中心化與協作將如何成為反映現實世界中企業交換商品與服務的強大屬性。
除了去中心化與協作外,記錄到區塊鏈中的數據只能被添加,區塊鏈使用加密技術來保證一旦交易被添加到賬本便不能被修改。這一特性使參與者能夠很容易的確定數據來源,因為參與者可以確定數據在寫入後沒有被更改過,這也是為什麽區塊鏈有時會被描述為系統的證明。
智能合約
為了支持數據更新的一致性,也為了整體的啟用賬本功能(交易、查詢等)——區塊鏈網絡使用智能合約來提供對賬本的訪問控制。
智能合約不僅僅作為封裝並簡化信息的核心機制,還可以允許參與者自行編寫從而處理某些自動執行的事務。比如說,智能合約可以記錄一個物品的運輸成本,當雙方同意後將交易寫入賬本,交易資金在收到物品時自動易手。
共識
共識過程是保持網絡中賬本交易同步的過程,用以保證賬本只有當交易被參與者批準後才會更新,且更新對所有參與者同步進行。
我們後續會學到更多關於賬本、智能合約與共識相關的知識。從此刻起,可以把區塊鏈想象成一個共享復制的、通過智能合約來更新的、通過共識來保持一致性的交易系統。
區塊鏈能做什麽
如今的交易系統
當前的交易網絡,相對於商業交易誕生之初便存在的交易網絡來說,只有小小的進步。業務網絡的成員彼此進行交易,且分別維護各自的交易記錄。交易的物品必須註明來源——業務出售的物品需擁有一串標題以供驗證其所有權。雖然現代技術已經將這一過程從石器與紙質時代拖入了硬盤與雲平臺,但是底層結構是一樣的。建立協同管理身份與交易流程的系統這一構想的來源可以想象成如下場景:對證券交易的清算是費時且費力的(處理世界體積的數萬億美元的編號),合同的簽署和執行必須手動,且系統中每個數據庫各自存儲信息,隱含了單點失效的風險。
即使需求的可見度與信任度都非常清晰,使用當前的零碎的技術手段建立一個跨越業務網絡的系統以實現信息和流程共享也是非常困難的。
區塊鏈的不同之處
如果商業網絡中有標準的方法來在網絡上建立身份,執行交易並存儲數據,來替代以“現代”交易系統所代表的效率低下的“老鼠窩”,效果會怎樣呢?如果建立一個資產來源僅僅通過查看一個一旦寫入無法更改,可以信任的交易列表便可以認證的系統,效果會怎樣呢?
這就是區塊鏈網絡。網絡中的每個參與者都保持了自己的賬本副本。除了賬本信息共享之外,更新賬本的過程也會共享。不像如今的系統,某一個參與者的私人程序用於更新自己的私賬,區塊鏈系統則使用共享程序來更新共享賬本。通過共享賬本進行業務協作,區塊鏈網絡可以降低時間、成本與個人隱私風險,且在流程中提升可見度與信任度。
現在你知道為什麽區塊鏈有如此巨大的作用了吧,還有很多重要的細節,他們都與這些共享信息與流程的基本思想有關。
什麽是Hyperledger Fabric
Linux基金會於2015年成立超級賬本,以推進跨行業的區塊鏈技術。相對於申報一個區塊鏈標準,它鼓勵通過社區合作的方式來發展區塊鏈技術,帶著知識產權,鼓勵開源,且隨著時間的推移來采用不同的標準。
Fabric是超級賬本區塊鏈中的一個項目,與其他的區塊鏈技術一樣,它具有一個賬本,使用智能合約,且是一個參與者可以分別管理自身交易的系統。
Fabric與其他區塊鏈系統最大的不同在於它是隱私的、許可的網絡。相對於像其他區塊鏈那樣通過“工作量證明”來驗證身份(允許任何人加入網絡),Fabric的成員通過會員註冊服務提供商來加入網絡。
Fabric提供了多種可插拔的選擇,賬本數據可以以多種形式存儲,共識機制可切換,且支持不同的會員服務。Fabric還提供了創建通道的能力,允許一組參與者創建一個單獨的賬本交易。這對於一些不想讓其競爭對手(同為參與者)知道其每一筆交易的參與者來說尤其重要,如果兩個參與者間創建了一個通道,那麽其他參與者不會拿到此通道的數據。
共享賬本
超級賬本的總賬子系統包括兩部分:世界狀態與交易日誌。Fabric的每個參與者都持有一份賬本副本。世界狀態部分描述了賬本在某個時間點的狀態。它是賬本的數據庫。交易日誌部分則記錄了導致當前世界狀態的所有交易,是世界狀態的歷史記錄。賬本是世界狀態與交易日誌的結合。
賬本的世界狀態有可替換的數據存儲區,默認是Level-DB鍵值數據庫。交易日誌不需要可插拔,它只是簡單的記錄了賬本交易前後的數據。
智能合約
Fabric智能合約寫在鏈碼中,且當外部應用與賬本互動時被調用。大多數情況中,鏈碼只與賬本的數據庫部分互動(查詢等),即世界狀態,而不是交易日誌。鏈碼可以被多種語言編寫,當前支持Go與Java,未來會發布更多語言的支持。
私密性
私密性依賴於網絡的需求,對於一個B2B網絡的參與者來說,對共享的信息量尤其敏感。相對於其他開放網絡,Fabric網絡支持私密性的關鍵業務需求。
共識
交易必須按照它們發生的順序寫入賬本,即使它們可能發生在網絡中不同的參與者身上。為了做到這一點,必須建立交易的排序服務,且有一套抵制錯誤交易(惡意)寫入賬本的方法。
這是一個已經在計算機科學中被研究的比較徹底的領域,有許多方法可以實現它,且每種方法都有不同的取舍。比如PBFT(實際拜占庭容錯)提供了一個機制使得文件副本互相交流來保持一致,哪怕出現一定數量的背叛。再比如在比特幣中,排序發生在一個叫做采礦的過程中,在這個過程中,競爭的計算機競相解決一個密碼難題,它定義了所有交易處理隨後建立的順序。
Hyperledger Fabric已經被設計成允許網絡建立者選擇一個共識機制最能代表參與者之間存在的關系。與私密性一樣,有各種各樣的需求:在關系上是更高度結構化的網絡,還是更為對等的網絡。
我們將會學習到更多的Fabric共識機制,目前包括SOLO,Kafka,未來很快會應用SBFT(簡易拜占庭容錯)。
Hyperledger Fabric功能
Hyperledger Fabric是一種獨特的分布式賬本實現技術(DLT),提供企業級的網絡安全性、可擴展性、保密性與性能,是一個模塊化的區塊鏈架構。Hyperledger Fabric提供了如下的區塊鏈功能:
身份管理
為了實現許可網絡,Fabric提供了會員身份服務,在網絡中管理用戶ID與參與者的身份。訪問控制列表可以通過授權特定的網絡操作來提供額外的權限層。例如,一個特定的用戶ID可以允許調用鏈碼的應用程序,但禁止部署新的鏈碼。關於Fabric網絡的一個真理是,成員彼此認識(身份),但他們不知道對方在做什麽(隱私保密)。
隱私保密
Fabric允許商業利益的角逐,允許要求私密交易的任何團體在同一許可網絡共存。私有通道限制了消息傳遞路徑,可用於為網絡中特定子集的參與者提供交易的隱私性和機密性。通道上的所有數據(包括交易、成員和通道信息)對於未顯式地授予對該通道訪問權限的任何網絡成員來說都是不可訪問的。
高效處理
Hyperledger Fabric通過節點類型來分配網絡角色。為了為網絡提供並發性和並行性,交易處理與交易排序分開執行。在排序之前處理交易使每個對等節點能夠同時處理多個交易。這種並發執行提高了每個對等節點的處理效率,加快了交易向排序服務的交付。
除了實現並行處理外,勞動力的分工使得排序節點免於大量的交易處理與賬本維持工作,而對等節點則從排序共識工作負擔中解脫出來。角色的這種分叉也降低了授權和驗證所需的處理要求;所有對等節點不必信任所有的排序節點,反之亦然,因此對其中一個節點的處理可以獨立於另外一個節點進行驗證。
智能合約
鏈碼應用的編碼邏輯會被通道中具體類型的交易調用。鏈碼定義了資產所有權轉移的參數,例如,保證所有所有權轉移交易依照相同的規則與要求。系統級鏈碼區別於鏈碼,它定義了整個通道的操作參數。生命周期與配置系統鏈碼定義了通道規則,簽署與驗證系統鏈碼定義了簽署與驗證交易的要求。
模塊設計
Fabric實現了一個模塊化的架構,為網絡設計師提供功能選擇。模塊化還包括身份認證,共識算法以及加密算法。其結果是一個通用的區塊鏈架構,在任何行業和公共領域都可以采用,以確保其網絡可以在跨市場、監管以及地理邊界時能夠協同操作。
Hyperledger Fabric模型
本節概述了關鍵的設計特點以使得Fabric履行承諾成為一個全面的、可定制的、企業級的區塊鏈解決方案:
- 資產:資產定義可以在網絡中交易幾乎所有具有貨幣價值的東西,從食品到古董汽車再到貨幣期貨。
- 鏈碼:鏈碼的執行可以劃分為交易排序、限制信任等級要求、跨界點類型認證與優化網絡性能與可擴展性幾個部分。
- 賬本特點:不可改變的共享賬本記錄了每個通道的整個交易歷史,並包含了用於高效審計與解決爭議的類SQL查詢功能。
- 通道私密性:對於要求在公用網絡上交換資產的相互競爭的企業與受管制的行業,通道機制使多層次的交易具有高度的隱私性和機密性。
- 安全性與會員服務:會員服務提供可信的區塊鏈網絡,參與者了解所有交易可以被監管者與審計者檢測與跟蹤。
- 共識:獨特的共識機制滿足企業級的靈活性與可擴展性的需求。
資產
資產範圍涵蓋了從有形資產(房地產和硬件)到無形資產(合同和知識產權)全部內容。Hyperledger Fabric提供了使用鏈碼交易修改資產的能力。資產在Fabric中可以表示為一個鍵值對的集合,隨著狀態記錄變更作為交易寫入通道的賬本中。資產可以用二進制或JSON形式表示。
你可以很輕松的在Fabric應用中定義並使用資產,通過使用工具:Hyperledger Composer。
鏈碼
鏈碼是定義資產與修改資產的指令。換句話說,它是業務邏輯。鏈碼通過執行自身邏輯來查詢或修改鍵值對或者其他數據庫信息。鏈碼函數通過數據庫當前狀態執行,且通過交易提案初始化。鏈碼執行的結果是一系列鍵值寫(寫集),該寫集將會被提交至網絡並應用於所有節點中。
賬本特點
賬本是Fabric中所有的有序的、防篡改記錄。狀態轉換是參與者進行鏈碼調用後提交的結果。資產鍵值對集合的每筆交易結果都會以創建、更新、刪除的形式提交。
總賬有區塊鏈以區塊的形式來存儲不可改變的、有序的記錄,且有一個狀態數據庫來存儲當前Fabric狀態。每個通道有一個賬本,通道中每個成員節點維護一個賬本副本。
- 使用基於Key的查詢、範圍查詢、復合鍵查詢來查詢或更新賬本。
- 只讀查詢支持豐富的查詢語句(CouchDB)。
- 只讀的歷史查詢——實現數據追溯場景。
- 交易包含讀取鏈碼鍵值對(讀集),以及寫入鏈碼鍵值對(寫集)的版本。
- 交易包含所有簽署節點提交至排序服務的簽名。
- 交易被打包排序成區塊,並通過通道從共識節點傳至對等節點。
- 對等節點通過簽署政策標準來驗證交易。
- 在增加區塊前,需要執行版本檢查以確保數據在鏈碼執行時間段沒有被篡改。
- 當交易被驗證並承諾後,便不可改變。
- 每個通道的賬本都包含配置區塊,它定義了政策標準、訪問控制列表與其他相關信息。
- 通道包含了會員服務提供商實例,因此加密證書能傳遞到不同的證書頒發機構。
通道私密性
Hyperledger Fabric在每個通道的基礎上雇傭了不可改變的賬本與鏈碼,它可以操縱與修改當前資產狀態(比如更新鍵值對)。賬本在通道區域內存在——可以在整個網絡中共享(假設所有參與者在同一個通道操作)——或者它可以私有化,只包含一組特定的參與者。
在後一種場景中,這些參與者將創建一個單獨的通道,從而隔離他們的交易和賬本。為了解決需要彌合總透明性和隱私之間的差距的場景,鏈碼只能安裝在需要訪問資產狀態進行讀取和寫入的節點(也就是說,如果一個鏈碼沒有被安裝在節點上,它將無法與賬本對接)。為了進一步混淆數據,鏈碼內部數據可以在寫入到賬本之前加密,這可以使用常見的加密算法如AES等。
安全性與會員服務
Hyperledger Fabric支撐了一個所有參與者已知身份的交易網絡。公鑰基礎設施在這裏被用來生成綁定到網絡中不同組織與應用客戶端的加密證書。因此,它可以更廣泛地在通道級別上操縱和控制數據訪問控制。正是Fabric這種“許可”的概念,與通道的存在和功能,形成了隱私性與保密性這個關鍵問題的解決方案。
共識
在分布式賬本技術中,一致性最近成為單個函數中特定算法的同義詞。然而,共識不僅僅包含同意交易秩序,還包括在Fabric在整個交易流程的扮演基本角色,包括從提案和簽署,再到排序,驗證和承諾。簡言之,一致性被定義為包含在一個塊中的一組交易的正確性的一系列驗證。
當打包後的交易的順序以及結果通過標準檢查後,才達成共識。這些驗證發生在交易執行的整個生命周期中,這些標準包括:判定何種成員須支持何種交易類的使用,通過系統鏈碼來保證這些標準的實施與維護等。對於最終承諾的確認,節點將雇傭這些系統鏈碼來確保通過了足夠多的驗證。此外,在將任何包含交易的區塊添加到賬本之前,都會進行版本檢查,最後的檢查提供了對雙花操作和其他可能危及數據完整性的威脅的保護措施。
除了大量的簽署、驗證與版本檢查之外,還有一些不斷進行的身份認證發生在交易流程的各個方面。例如:訪問控制列表在分層的網絡層中實現(從排序到通道),消息體被各種組件多次簽名,檢查並認證為一個交易提案。總的來說,共識不僅僅局限於某一批交易的順序,而是一個總體特征,是一個交易從提案到承諾的過程中不斷驗證的副作用。
Hyperledger Fabric概述