1. 程式人生 > >Hyperledger Fabric 入門基本原理概述

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在整個交易流程的扮演基本角色,包括從提案和背書,再到排序,驗證和承諾。簡言之,一致性被定義為包含在一個塊中的一組交易的正確性的一系列驗證。

當打包後的交易的順序以及結果通過標準檢查後,才達成共識。這些驗證發生在交易執行的整個生命週期中,這些標準包括:判定何種成員須支援何種交易類的使用,通過系統鏈碼來保證這些標準的實施與維護等。對於最終承諾的確認,節點將僱傭這些系統鏈碼來確保通過了足夠多的驗證。此外,在將任何包含交易的區塊新增到賬本之前,都會進行版本檢查,最後的檢查提供了對雙花操作和其他可能危及資料完整性的威脅的保護措施。

除了大量的背書、驗證與版本檢查之外,還有一些不斷進行的身份認證發生在交易流程的各個方面。例如:訪問控制列表在分層的網路層中實現(從排序到通道),訊息體被各種元件多次簽名,檢查並認證為一個交易提案。總的來說,共識不僅僅侷限於某一批交易的順序,而是一個總體特徵,是一個交易從提案到承諾的過程中不斷驗證的副作用。




歡迎大家一起加入討論!!!