8. Hyperledger Fabric 專題 - Hyperledger Fabric Model

Hyperledger Fabric 專題 - Hyperledger Fabric Model

本專題文檔概述了 Hyperledger Fabric 的關(guān)鍵設(shè)計特征,這些特征可以實現(xiàn) Fabric 對全面但可自定義的企業(yè)區(qū)塊鏈解決方案的承諾:

  • 資產(chǎn) (Asset) - 資產(chǎn)定義允許通過網(wǎng)絡(luò)交換幾乎所有具有貨幣價值的東西,從完整食品到古董車再到貨幣期貨。
  • 鏈碼 (Chaincode) - 鏈碼執(zhí)行從交易排序中劃分出來,限制了節(jié)點類型之間的信任和驗證級別,并優(yōu)化了網(wǎng)絡(luò)可伸縮性和性能。
  • 帳本特征 - 不變的共享帳本對每個通道的整個交易歷史進行編碼,并包括類似 SQL 的查詢功能,以進行有效的審計和爭議解決。
  • 隱私 (Privacy) - 通道和私人數(shù)據(jù)集可實現(xiàn)私有和機密的多方交易,這通常是競爭企業(yè)和受管制的行業(yè)在同一網(wǎng)絡(luò)上交換資產(chǎn)時需要的。
  • 安全和 MSP (Security & Membership Services) - 會員許可制提供了一個受信任的區(qū)塊鏈網(wǎng)絡(luò),參與者知道所有交易都可以由授權(quán)的監(jiān)管機構(gòu)和審計員檢測和追蹤。
  • 共識 (Consensus) - 達(dá)成共識的獨特方法可實現(xiàn)企業(yè)所需的靈活性和可擴展性。

1. 資產(chǎn)

資產(chǎn)的范圍從有形的 (房地產(chǎn)和硬件) 到無形的 (合同和知識產(chǎn)權(quán))。 Hyperledger Fabric 提供了使用鏈碼交易修改資產(chǎn)的功能。

資產(chǎn)在 Hyperledger Fabric 中表示為鍵值對的集合,狀態(tài)更改記錄為通道賬本中的交易。資產(chǎn)可以二進制和/或 JSON 形式表示。

2. 鏈碼

鏈碼是定義一項或多項資產(chǎn)的軟件,以及用于修改資產(chǎn)的交易指令。換句話說,這就是業(yè)務(wù)邏輯。鏈碼定義了用于讀取或更改鍵值對或其他狀態(tài)數(shù)據(jù)庫信息的規(guī)則。鏈碼函數(shù)針對帳本的當(dāng)前狀態(tài)數(shù)據(jù)庫執(zhí)行,并通過交易提案啟動。鏈碼執(zhí)行會產(chǎn)生一組鍵值寫操作 (寫集),這些鍵值寫操作可以提交給網(wǎng)絡(luò),并應(yīng)用于所有對端節(jié)點的帳本中。

3. 賬本功能

賬本是 Fabric 中所有狀態(tài)轉(zhuǎn)換的有序和防篡改的記錄。狀態(tài)轉(zhuǎn)換是參與方提交的鏈碼調(diào)用 (“交易”) 的結(jié)果。每筆交易都會產(chǎn)生一組資產(chǎn)鍵值對,這些鍵值對在創(chuàng)建,更新或刪除時將被提交到賬本。

帳本由一個區(qū)塊鏈 (“鏈”) 和一個狀態(tài)數(shù)據(jù)庫組成,該區(qū)塊鏈將不可變的順序記錄存儲在區(qū)塊中,并維護一個狀態(tài)數(shù)據(jù)庫。每個通道有一個帳本。每個對端節(jié)點都為其所屬的每個通道維護一個帳本的副本。

Fabric 帳本的一些功能:

  • 使用基于鍵的查詢,范圍查詢和組合鍵查詢來查詢和更新帳本。
  • 使用富查詢語言的只讀查詢 (如果使用 CouchDB 作為狀態(tài)數(shù)據(jù)庫)。
  • 只讀歷史記錄查詢 — 查詢鍵的帳本歷史記錄,從而啟用數(shù)據(jù)起源場景。
  • 交易版本包括鏈碼讀取的鍵/值 (讀集) 和鏈碼寫入的鍵/值 (寫集)。
  • 交易包含每個背書對端節(jié)點的簽名,并提交給交易排序服務(wù)。
  • 交易被分為幾大塊,并從交易排序服務(wù)分發(fā)到通道上的對端節(jié)點。
  • 對端節(jié)點根據(jù)背書策略驗證交易并執(zhí)行。
  • 在添加區(qū)塊之前,執(zhí)行版本檢查,以確保自鏈碼執(zhí)行以來,已讀取資產(chǎn)的狀態(tài)未更改。
  • 一旦交易被驗證并被提交,就不可改變。
  • 通道的帳本包含一個配置塊,用于定義策略,訪問控制列表和其他相關(guān)信息。
  • 通道包含成員資格服務(wù)提供者實例,允許從不同的證書頒發(fā)機構(gòu)派生加密材料。

有關(guān)數(shù)據(jù)庫,存儲結(jié)構(gòu)和“查詢能力”的更深入了解,請參閱 帳本 專題文檔。

4. 隱私

Hyperledger Fabric 在每個通道的基礎(chǔ)上使用不變的帳本,以及可以操縱和修改資產(chǎn)當(dāng)前狀態(tài) (即更新鍵值對) 的鏈碼。賬本存在于通道范圍內(nèi) - 可以在整個網(wǎng)絡(luò)中共享 (假設(shè)每個參與者都在一個公共通道上工作) - 或可以將其私有化以僅包括一組特定的參與者。

在后一種情況下,這些參與者將創(chuàng)建一個單獨的通道,從而隔離他們的交易和帳本。為了解決想要彌合總體透明度和隱私之間的差距的方案,只能在需要訪問資產(chǎn)狀態(tài)以執(zhí)行讀寫的對端節(jié)點上安裝鏈碼 (換句話說,如果未在對端節(jié)點上安裝鏈碼, 它將無法與帳本正確連接)。

當(dāng)該通道上的組織子集需要對其交易數(shù)據(jù)保密時,可以使用私有數(shù)據(jù)集合將這些數(shù)據(jù)隔離在邏輯上與通道帳本分離的私有數(shù)據(jù)庫中,該數(shù)據(jù)庫只能由組織的授權(quán)子集訪問。

因此,通道使交易對于更廣泛的網(wǎng)絡(luò)而言是不公開的,而集合則對通道上的組織子集之間的數(shù)據(jù)保持不公開。

為了進一步模糊數(shù)據(jù),可以在將交易發(fā)送到交易排序服務(wù)并將區(qū)塊添加到賬本之前,使用 AES 等通用加密算法對鏈碼中的值進行加密 (部分或全部)。一旦加密數(shù)據(jù)已寫入帳本,則只有擁有用于生成密文的相應(yīng)密鑰的用戶才能對其解密。有關(guān)鏈碼加密的更多詳細(xì)信息,請參閱 鏈碼開發(fā)人員 主題。

有關(guān)如何在區(qū)塊鏈網(wǎng)絡(luò)上實現(xiàn)隱私的更多詳細(xì)信息,請參見 私有數(shù)據(jù) 主題。

5. 安全和 MSP

Hyperledger Fabric 支持所有參與者都具有已知身份的交易網(wǎng)絡(luò)。公鑰基礎(chǔ)結(jié)構(gòu) (Public Key Infrastructure, PKI) 用于生成與組織,網(wǎng)絡(luò)組件以及最終用戶或客戶端應(yīng)用程序綁定的加密證書。結(jié)果,可以在更廣泛的網(wǎng)絡(luò)和通道級別上操縱和控制數(shù)據(jù)訪問控制。Hyperledger Fabrc 的這種“許可制”的概念,再加上通道的存在和能力,幫助解決那些需要隱私和保密性要求非常高的情況。

查看 會員服務(wù)提供商 ( Membership Service Providers , MSP) 主題,以更好地了解加密實現(xiàn),并簽名,驗證,在 Hyperledger Fabric 用于身份驗證的方法。

6. 共識

在分布式帳本技術(shù)中,共識最近已成為單一功能內(nèi)特定算法的同義詞。但是,共識不僅包括簡單地同意交易順序,而且這種差異在 Hyperledger Fabric 中得到了體現(xiàn),它在整個交易流程 (從提案和背書到交易排序,驗證和承諾) 中的基本作用得到了強調(diào)。簡而言之,共識被定義為對包含一個區(qū)塊的一組交易的正確性的全面驗證。

區(qū)塊交易的順序和結(jié)果滿足明確的政策標(biāo)準(zhǔn)檢查后,才能最終達(dá)成共識。這些檢查發(fā)生在交易的生命周期中,包括使用背書策略來指示哪些特定成員必須背書某個交易類,以及系統(tǒng)鏈碼以確保這些策略得到執(zhí)行和維護。在作出承諾之前,對端節(jié)點將使用這些系統(tǒng)鏈碼來確保存在足夠的背書,并且它們是從適當(dāng)?shù)膶嶓w派生的。此外,在將包含交易的任何區(qū)塊追加到賬本之前,將進行版本控制檢查,在此期間將對賬本的當(dāng)前狀態(tài)達(dá)成一致。最終檢查可以防止重復(fù)使用操作和其他可能危害數(shù)據(jù)完整性的威脅,并可以針對非靜態(tài)變量執(zhí)行功能。

除了進行大量的背書,有效性和版本檢查外,還在交易流程的所有方向上進行持續(xù)的身份驗證。訪問控制列表是在網(wǎng)絡(luò)的分層層上實現(xiàn)的 (將交易排序服務(wù)分布到各個通道),有效載荷在交易提案通過不同的體系結(jié)構(gòu)組件時被重復(fù)簽名,驗證和認(rèn)證??偠灾?,共識不僅限于一批交易的商定順序。相反,它是一項總體特征,它是交易從提案到承諾過程中不斷進行的驗證的副產(chǎn)品。

查看 交易流程圖 以直觀表示共識。

Reference

項目源代碼

項目源代碼會逐步上傳到 Github,地址為 https://github.com/windstamp

Contributor

  1. Windstamp, https://github.com/windstamp
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容