Hyperledger Fabric 專題 - Hyperledger Fabric Model
本專題文檔概述了 Hyperledger Fabric 的關(guān)鍵設(shè)計(jì)特征剥扣,這些特征可以實(shí)現(xiàn) Fabric 對全面但可自定義的企業(yè)區(qū)塊鏈解決方案的承諾:
- 資產(chǎn) (Asset) - 資產(chǎn)定義允許通過網(wǎng)絡(luò)交換幾乎所有具有貨幣價值的東西峻贮,從完整食品到古董車再到貨幣期貨。
- 鏈碼 (Chaincode) - 鏈碼執(zhí)行從交易排序中劃分出來掺栅,限制了節(jié)點(diǎn)類型之間的信任和驗(yàn)證級別,并優(yōu)化了網(wǎng)絡(luò)可伸縮性和性能呜叫。
- 帳本特征 - 不變的共享帳本對每個通道的整個交易歷史進(jìn)行編碼宅楞,并包括類似 SQL 的查詢功能脖卖,以進(jìn)行有效的審計(jì)和爭議解決。
- 隱私 (Privacy) - 通道和私人數(shù)據(jù)集可實(shí)現(xiàn)私有和機(jī)密的多方交易蘑拯,這通常是競爭企業(yè)和受管制的行業(yè)在同一網(wǎng)絡(luò)上交換資產(chǎn)時需要的钝满。
- 安全和 MSP (Security & Membership Services) - 會員許可制提供了一個受信任的區(qū)塊鏈網(wǎng)絡(luò),參與者知道所有交易都可以由授權(quán)的監(jiān)管機(jī)構(gòu)和審計(jì)員檢測和追蹤申窘。
- 共識 (Consensus) - 達(dá)成共識的獨(dú)特方法可實(shí)現(xiàn)企業(yè)所需的靈活性和可擴(kuò)展性弯蚜。
1. 資產(chǎn)
資產(chǎn)的范圍從有形的 (房地產(chǎn)和硬件) 到無形的 (合同和知識產(chǎn)權(quán))。 Hyperledger Fabric 提供了使用鏈碼交易修改資產(chǎn)的功能剃法。
資產(chǎn)在 Hyperledger Fabric 中表示為鍵值對的集合碎捺,狀態(tài)更改記錄為通道賬本中的交易。資產(chǎn)可以二進(jìn)制和/或 JSON 形式表示贷洲。
2. 鏈碼
鏈碼是定義一項(xiàng)或多項(xiàng)資產(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é)點(diǎn)的帳本中势腮。
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ū)塊中祸泪,并維護(hù)一個狀態(tài)數(shù)據(jù)庫。每個通道有一個帳本建芙。每個對端節(jié)點(diǎn)都為其所屬的每個通道維護(hù)一個帳本的副本没隘。
Fabric 帳本的一些功能:
- 使用基于鍵的查詢,范圍查詢和組合鍵查詢來查詢和更新帳本禁荸。
- 使用富查詢語言的只讀查詢 (如果使用 CouchDB 作為狀態(tài)數(shù)據(jù)庫)右蒲。
- 只讀歷史記錄查詢 — 查詢鍵的帳本歷史記錄,從而啟用數(shù)據(jù)起源場景赶熟。
- 交易版本包括鏈碼讀取的鍵/值 (讀集) 和鏈碼寫入的鍵/值 (寫集)瑰妄。
- 交易包含每個背書對端節(jié)點(diǎn)的簽名,并提交給交易排序服務(wù)映砖。
- 交易被分為幾大塊间坐,并從交易排序服務(wù)分發(fā)到通道上的對端節(jié)點(diǎn)。
- 對端節(jié)點(diǎn)根據(jù)背書策略驗(yàn)證交易并執(zhí)行邑退。
- 在添加區(qū)塊之前眶诈,執(zhí)行版本檢查,以確保自鏈碼執(zhí)行以來瓜饥,已讀取資產(chǎn)的狀態(tài)未更改。
- 一旦交易被驗(yàn)證并被提交浴骂,就不可改變乓土。
- 通道的帳本包含一個配置塊,用于定義策略溯警,訪問控制列表和其他相關(guān)信息趣苏。
- 通道包含成員資格服務(wù)提供者實(shí)例,允許從不同的證書頒發(fā)機(jī)構(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)建一個單獨(dú)的通道,從而隔離他們的交易和帳本曹宴。為了解決想要彌合總體透明度和隱私之間的差距的方案搂橙,只能在需要訪問資產(chǎn)狀態(tài)以執(zhí)行讀寫的對端節(jié)點(diǎn)上安裝鏈碼 (換句話說,如果未在對端節(jié)點(diǎn)上安裝鏈碼, 它將無法與帳本正確連接)笛坦。
當(dāng)該通道上的組織子集需要對其交易數(shù)據(jù)保密時区转,可以使用私有數(shù)據(jù)集合將這些數(shù)據(jù)隔離在邏輯上與通道帳本分離的私有數(shù)據(jù)庫中苔巨,該數(shù)據(jù)庫只能由組織的授權(quán)子集訪問。
因此废离,通道使交易對于更廣泛的網(wǎng)絡(luò)而言是不公開的侄泽,而集合則對通道上的組織子集之間的數(shù)據(jù)保持不公開。
為了進(jìn)一步模糊數(shù)據(jù)厅缺,可以在將交易發(fā)送到交易排序服務(wù)并將區(qū)塊添加到賬本之前蔬顾,使用 AES 等通用加密算法對鏈碼中的值進(jìn)行加密 (部分或全部)。一旦加密數(shù)據(jù)已寫入帳本湘捎,則只有擁有用于生成密文的相應(yīng)密鑰的用戶才能對其解密诀豁。有關(guān)鏈碼加密的更多詳細(xì)信息,請參閱 鏈碼開發(fā)人員 主題窥妇。
有關(guān)如何在區(qū)塊鏈網(wǎng)絡(luò)上實(shí)現(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) 主題,以更好地了解加密實(shí)現(xiàn)旦事,并簽名魁巩,驗(yàn)證,在 Hyperledger Fabric 用于身份驗(yàn)證的方法姐浮。
6. 共識
在分布式帳本技術(shù)中谷遂,共識最近已成為單一功能內(nèi)特定算法的同義詞。但是卖鲤,共識不僅包括簡單地同意交易順序肾扰,而且這種差異在 Hyperledger Fabric 中得到了體現(xiàn),它在整個交易流程 (從提案和背書到交易排序蛋逾,驗(yàn)證和承諾) 中的基本作用得到了強(qiáng)調(diào)白对。簡而言之,共識被定義為對包含一個區(qū)塊的一組交易的正確性的全面驗(yàn)證换怖。
區(qū)塊交易的順序和結(jié)果滿足明確的政策標(biāo)準(zhǔn)檢查后甩恼,才能最終達(dá)成共識。這些檢查發(fā)生在交易的生命周期中,包括使用背書策略來指示哪些特定成員必須背書某個交易類条摸,以及系統(tǒng)鏈碼以確保這些策略得到執(zhí)行和維護(hù)悦污。在作出承諾之前,對端節(jié)點(diǎn)將使用這些系統(tǒng)鏈碼來確保存在足夠的背書钉蒲,并且它們是從適當(dāng)?shù)膶?shí)體派生的切端。此外,在將包含交易的任何區(qū)塊追加到賬本之前顷啼,將進(jìn)行版本控制檢查踏枣,在此期間將對賬本的當(dāng)前狀態(tài)達(dá)成一致。最終檢查可以防止重復(fù)使用操作和其他可能危害數(shù)據(jù)完整性的威脅钙蒙,并可以針對非靜態(tài)變量執(zhí)行功能茵瀑。
除了進(jìn)行大量的背書,有效性和版本檢查外躬厌,還在交易流程的所有方向上進(jìn)行持續(xù)的身份驗(yàn)證马昨。訪問控制列表是在網(wǎng)絡(luò)的分層層上實(shí)現(xiàn)的 (將交易排序服務(wù)分布到各個通道),有效載荷在交易提案通過不同的體系結(jié)構(gòu)組件時被重復(fù)簽名扛施,驗(yàn)證和認(rèn)證鸿捧。總而言之疙渣,共識不僅限于一批交易的商定順序匙奴。相反,它是一項(xiàng)總體特征妄荔,它是交易從提案到承諾過程中不斷進(jìn)行的驗(yàn)證的副產(chǎn)品泼菌。
查看 交易流程圖 以直觀表示共識。
Reference
- Docs ? Key Concepts ? Hyperledger Fabric Model, https://hyperledger-fabric.readthedocs.io/en/release-1.4/fabric_model.html
- Docs ? Ledger, https://hyperledger-fabric.readthedocs.io/en/release-1.4/ledger.html
- Docs ? Tutorials ? Chaincode for Developers, https://hyperledger-fabric.readthedocs.io/en/release-1.4/chaincode4ade.html
- Docs ? Architecture Reference ? Private Data, https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html
- Docs ? Operations Guides ? Membership Service Providers (MSP), https://hyperledger-fabric.readthedocs.io/en/release-1.4/msp.html
- Docs ? Architecture Reference ? Transaction Flow, https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html
項(xiàng)目源代碼
項(xiàng)目源代碼會逐步上傳到 Github懦冰,地址為 https://github.com/windstamp。
Contributor
- Windstamp, https://github.com/windstamp