簡述
本節(jié)講述了 Hyperledger Fabric 的關鍵設計特性,實現(xiàn)了全方位、可定制的企業(yè)級區(qū)塊鏈解決方案:
資產(chǎn)?— 資產(chǎn)是可以通過網(wǎng)絡交換的幾乎所有具有價值的東西,從食品到古董車、貨幣期貨。
鏈碼 — 鏈碼執(zhí)行與交易排序分離,限制了跨節(jié)點類型所需的信任和驗證級別,并優(yōu)化了網(wǎng)絡可擴展性和性能。
賬本特性 — 不可變的共享賬本為每個通道編碼整個交易歷史記錄,并包括類似 SQL 的查詢功能,以便高效審計和解決爭議。
隱私— 通道和私有數(shù)據(jù)集合實現(xiàn)了隱私且機密的多邊交易,這些交易通常是在共同網(wǎng)絡上交換資產(chǎn)的競爭企業(yè)和受監(jiān)管行業(yè)所要求的。
安全和成員服務 — 許可成員資格提供可信的區(qū)塊鏈網(wǎng)絡,參與者知道所有交易都可以由授權的監(jiān)管機構和審計員檢測和跟蹤。
共識 — 達成共識的獨特方法可實現(xiàn)企業(yè)所需的靈活性和可擴展性。
在之后的文章中我們會詳細的介紹每個概念對應的內(nèi)容
資產(chǎn)
資產(chǎn)的范圍可以從有形(房地產(chǎn)和硬件)到無形資產(chǎn)(合同和知識產(chǎn)權)。Hyperledger Fabric 提供使用鏈碼交易來修改資產(chǎn)的功能。
資產(chǎn)在 Hyperledger Fabric 中表示為鍵值對的集合,狀態(tài)更改記錄為?Channel?賬本上的交易。資產(chǎn)可以用二進制或 JSON 格式表示。
鏈碼
鏈碼是定義單項或多項資產(chǎn)的軟件,和能修改資產(chǎn)的交易指令;換句話說,它是業(yè)務邏輯。鏈碼強制執(zhí)行讀取或更改鍵值對或其他狀態(tài)數(shù)據(jù)庫信息的規(guī)則。鏈碼函數(shù)針對賬本的當前狀態(tài)數(shù)據(jù)庫執(zhí)行,并通過交易提案啟動。鏈碼執(zhí)行會產(chǎn)生一組用于寫入的鍵值對(寫集),可以被提交到網(wǎng)絡并應用于所有節(jié)點的賬本。
賬本特性
賬本是 Fabirc 中所有狀態(tài)轉(zhuǎn)換的有序的防篡改的記錄。狀態(tài)轉(zhuǎn)換是參與方提交的鏈碼調(diào)用(“交易”)的結果。每個交易都會生成一組資產(chǎn)鍵值對,這些鍵值對以創(chuàng)建、更新或刪除形式提交到賬本。
賬本由區(qū)塊鏈(“鏈”)組成,用于以區(qū)塊的形式存儲不可變的順序記錄,以及用于維護當前 Fabirc 狀態(tài)的狀態(tài)數(shù)據(jù)庫。每個通道有一個賬本。每個節(jié)點為其所屬的每個通道維護一個賬本的副本。
Fabric 賬本的一些特點:
1.使用基于鍵的查找、范圍查詢和組合鍵查詢來查詢和更新賬本
2.使用富查詢語言進行只讀查詢(如果使用 CouchDB 作為狀態(tài)數(shù)據(jù)庫)
3.只讀歷史記錄查詢(查詢一個鍵的賬本歷史記錄)用于支持數(shù)據(jù)溯源場景
4.交易包括鏈碼讀取鍵/值(讀集)的版本以及鏈碼寫入鍵/值(寫集)的版本
5.交易包含每個背書節(jié)點的簽名,并被提交給排序服務
6.交易按順序打包到區(qū)塊,并被排序服務“分發(fā)”到通道上的節(jié)點
7.節(jié)點根據(jù)背書策略驗證交易并執(zhí)行策略
8.在附加一個區(qū)塊之前,會執(zhí)行一次版本檢查,以確保被讀取的資產(chǎn)的狀態(tài)自鏈碼執(zhí)行以來未發(fā)生更改
9.一旦交易被驗證并提交,就具有不變性
10.一個通道的賬本包含一個配置區(qū)塊,用于定義策略、訪問控制列表和其他相關信息
11.通道包含?Membership Service Provider?的實例,允許從不同的證書頒發(fā)機構(CA)生成加密材料
隱私
Hyperledger Fabric 在每個通道上使用不可變的賬本,以及可操縱和修改資產(chǎn)當前狀態(tài)(即更新鍵值對)的鏈碼。賬本存在于通道范圍內(nèi),它可以在整個網(wǎng)絡中共享(假設每個參與者都在同一個公共通道上),也可以被私有化,僅包括一組特定的參與者。
在后一種情況下,這些參與者將創(chuàng)建一個單獨的通道,從而隔離他們的交易和賬本。為了想在完全透明和隱私之間獲得平衡的場景,可以僅在需要訪問資產(chǎn)狀態(tài)以執(zhí)行讀取和寫入的節(jié)點上安裝鏈碼(換句話說,如果未在節(jié)點上安裝鏈碼,它將無法與賬本正確連接)。
當該通道上的組織子集需要對其交易數(shù)據(jù)保密時,私有數(shù)據(jù)集合用于將此數(shù)據(jù)隔離在私有數(shù)據(jù)庫中,在邏輯上與通道賬本分開,只有經(jīng)授權的組織子集才能訪問。
因此,通道在更廣泛的網(wǎng)絡上保持交易的私密性,而集合則在通道上的組織子集之間保持數(shù)據(jù)的私密性。
為了進一步模糊數(shù)據(jù),在將交易發(fā)送到排序服務并將區(qū)塊附加到賬本之前,可以使用諸如 AES 之類的通用加密算法對鏈碼內(nèi)的值進行加密(部分或全部)。一旦加密數(shù)據(jù)被寫入賬本,它就只能由擁有用于生成密文的相應密鑰的用戶解密。
安全和成員服務
Hyperledger Fabric 支持一個交易網(wǎng)絡,在這個網(wǎng)絡中,所有參與者都擁有已知的身份。公鑰基礎設施用于生成與組織、網(wǎng)絡組件以及終端用戶或客戶端應用程序相關聯(lián)的加密證書。因此,可以在更廣泛的網(wǎng)絡和通道級別上操縱和管理數(shù)據(jù)訪問控制。Hyperledger Fabric 的這種“許可”概念,加上通道的存在和功能,有助于解決隱私和機密性要求較高的場景。
共識
最近,在分布式賬本技術中,共識已成為單個函數(shù)內(nèi)特定算法的同義詞。然而,共識不僅包括簡單地就交易順序達成一致,Hyperledger Fabric 通過其在整個交易流程中的基本角色,從提案和背書到排序、驗證和提交,突出了這種區(qū)別。簡而言之,共識被定義為組成區(qū)塊的一組交易的正確性的閉環(huán)驗證。
當區(qū)塊中交易的順序和結果滿足明確的策略標準檢查時,最終會達成共識。這些制衡措施是在交易的生命周期內(nèi)進行的,包括使用背書策略來規(guī)定哪些特定成員必須背書某個交易類別,以及使用系統(tǒng)鏈碼來確保這些策略得到執(zhí)行和維護。在提交之前,節(jié)點將使用這些系統(tǒng)鏈碼來確保存在足夠的背書,并且它們來自適當?shù)膶嶓w。此外,在將包含交易的任何區(qū)塊附加到賬本之前,將進行版本檢查,以確保在此期間,賬本的當前狀態(tài)是能與交易中的信息達成共識的。該最終檢查可防止雙重花費操作和可能危及數(shù)據(jù)完整性的其他威脅,并允許針對非靜態(tài)變量執(zhí)行功能。
除了眾多的背書、驗證和版本檢查外,交易流的各個方向上還會發(fā)生持續(xù)的身份驗證。訪問控制列表是在網(wǎng)絡的分層上實現(xiàn)的(排序服務到通道),并且當一個交易提議通過不同的架構組件時,有效負載會被反復簽名、驗證和認證。總而言之,共識并不僅僅局限于一批交易的商定順序;相反,它的首要特征是交易從提案到提交的過程中不斷進行核查而附帶實現(xiàn)的。
轉(zhuǎn)載自https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2