HyperLedger Fabric Introduction——區塊鏈超級賬本介紹


介紹

HyperLedger Fabric是一個基於模塊化架構的分布式賬本解決方案平台,它擁有深度加密、便捷擴展、部署靈活及可插拔等特性。它設計之初的目的是支持不同組件的可插拔實現,並適應整個經濟生態系統中存在的復雜性和高精度性。

HyperLedger Fabric與其它的區塊鏈平台解決方案相比,提供了一種獨特的擴展便捷和靈活部署的架構。它更多的適用於聯盟鏈形式,即適合企業級之間的區塊鏈聯盟方向,建立在可信任的基礎上。如果是企業級區塊鏈部署的話,建議可以采用HyperLedger Fabric提供的方案。

首次接觸HyperLedger Fabric的用戶可以從下文的具體介紹開始,以了解區塊鏈的工作原理和HyperLedger Fabric特定的特性及組件。

如果通過后續文章熟悉了區塊鏈及HyperLedger Fabric的結構原理,那么就可以開始正式使用HyperLedger Fabric搭建屬於你自己的平台,可以參考官網的Getting Started,並且從官網提供的示例中學習技術規范和api等。

 

什么是區塊鏈?

一個分布式賬本

區塊鏈網絡的核心是一個分布式賬本,記錄所有在網絡上發生的交易。

區塊鏈中賬本會被所有網絡中的參與者復制到本地,且每一個參與者都在對賬本進行維護協作,因此它是完全去中心化的。

除了去中心化外,還使用了加密技術,每一個區塊都有唯一的hash,即便是通過網絡將賬本復制到本地應用服務器中也無法篡改其中的內容。這種不可篡改的特性使得信息具備可追溯的能力,因為所有的參與者在提交信息后都無法改變,都會在區塊中留存記錄,這也是區塊鏈有時被稱作證明系統的原因。

智能合約

為了支持信息更新的一致性,並支持完整的賬本功能(包括但不限於交易、查詢等),區塊鏈網絡通過使用智能合約來約束和規范對賬本的訪問及變更。

在智能合約中封裝了信息處理的完整方案,以此來盡量簡化整個網絡的信息交易。智能合約通過編寫可以被升級,通過升級來豐富其功能並增強其對事務的處理能力。所有的參與者都可以按照智能合約中的約定自動執行相關事務處理操作。

例如,一份智能合約可以規定貨物運輸的成本,成本根據貨物到達的時間而變化。在雙方同意的條件下,當收到貨物時,根據智能合約中約定的資金會自動地轉手。

共識

保持賬本中發生的交易在整個網絡中同步的過程,並確保只有當交易得到擁有決策權力的參與者(背書方或符合背書條件)批准時才會更新,並且當所有網絡賬本進行更新時,它們以相同的順序更新相同的事務,這稱為共識。

通過對區塊鏈的了解更加深入,以后會學到更多關於賬本、智能合約和共識的知識。就目前而言,將區塊鏈視為一個共享的、復制的交易系統就足夠了,它通過智能合約進行更新,並通過一個叫做共識的協作過程保持一致。

 

區塊鏈有什么用?

當前系統記錄

當今的交易網絡只是稍微更新的網絡版本,即本地存儲記錄變更為由第三方中介的多賬本記錄方案(但各家賬本內容僅與自身相關),該記錄方式自從商業記錄被保存以來就已經存在了。業務網絡的成員彼此之間進行交易,但他們保持各自的交易記錄。而他們所做的事情——無論是16世紀的佛蘭德還是今天的證券——都必須在每次出售的時候確定他們的出處,以確保出售某件物品的企業擁有一串頭銜(合法記錄)來證明他們的所有權。

如下圖所示,即當前系統記錄方案:

 

現代科技已經將這一過程從石片、紙質文件升級到硬盤和雲平台,但底層結構是一樣的。並不存在統一的系統來管理網絡參與者的身份,因此對參與者的交易信息建立可靠的來源是一件非常費力且痛苦的事情,就好比證券交易的清理就需要耗費數日的時間來操作(世界上的證券交易量高達數萬億美元)。合同必須手動簽署和執行,系統中的每個數據庫都包含唯一的信息,因此代表了會出現的一個單點故障。

在當今信息共享的過程中,構建一個跨越商業網絡的記錄系統是不可能的,盡管可見性和信任的需求是清晰的。

區塊鏈的區別

如果由“現代”交易系統替代哪些的無效率的方式,那么商業網絡就有了在網絡上建立身份、執行事務和存儲數據的標准方法嗎?如果想要建立一個資產的來源,並且可以通過查看曾經寫過的事務列表,還不允許更改,那么這個來源就是可以被信任的,那該怎么實現呢?

設想中的商業網絡如下圖所示:

這就是一個區塊鏈網絡。每一個參與者都有自己本地復制的賬本。除了賬本信息被共享之外,更新賬本的過程也被共享。不同於今天的系統,一個參與者的私人程序被用來更新他們的私人賬本,一個區塊鏈系統已經共享程序來更新共享的賬本。

由於能夠通過共享的賬本來協調業務網絡,區塊鏈網絡可以減少與私人信息和處理相關的時間、成本和風險,同時還能提高信任度和可見度。

通過上文介紹,現在應該大致了解區塊鏈是什么,以及它為什么有用。還有很多其它重要的細節,但是它們都與信息和過程共享的基本思想有關。

 

HyperLedger Fabric是什么?

Linux基金會在2015年創立了HyperLedger Fabric,以推進跨行業的區塊鏈技術。它沒有宣布單一的區塊鏈標准,而是鼓勵一種合作的方式,通過社區進程開發區塊鏈技術,知識產權鼓勵開放開發,並隨着時間的推移采用關鍵標准。

HyperLedger Fabric是HyperLedger上的區塊鏈項目之一,就如同其它區塊鏈技術一樣,它有一個賬本,使用智能合約,並且是一個由參與者管理他們的交易的系統。

與其它區塊鏈系統最大的不同點在於HyperLedger Fabric是私有的,而且是被許可的。不是一個允許未知身份參與網絡的開放的無許可的系統(要求協議驗證事務並確保網絡的安全),HyperLedger Fabric組織的成員可以通過一個Membership Service Provider(成員服務提供者即MSP)來注冊。

HyperLedger Fabric還提供了幾個可插拔的組件。賬本數據可以以多種格式存儲,一致的機制可以被轉換和輸出,並且支持不同的MSPs。

HyperLedger Fabric也提供了創建通道(channel)的能力,允許一組參與者創建一個單獨的共同維護的交易賬本。對於有些參與者可能是競爭對手的網絡來說,這是一個特別重要的選擇,他們不希望自己的每筆交易都能獲得——例如,他們向一些參與者提供了一個特別的價格,而不是其他參與者。如果兩個參與者形成一個通道(channel),那么這些參與者——以及其他參與者——都有該渠道的分類賬本。

共享賬本

HyperLedger Fabric有一個分類子系統,包括兩個組成部分:世界狀態(world state)和事務日志(transaction log)。每個參與者都有一份賬本的副本到他們所屬的每一個HyperLedger Fabric的網絡上。

在給定的時間點上,世界狀態(world state)組件描述了總賬的狀態。它是賬本的數據庫。事務日志(transaction log)組件記錄所有導致當前世界狀態值的事務。這是世界狀態(world state)的更新歷史。那么,賬本是世界狀態(world state)數據庫和事務日志(transaction log)歷史的組合。

該賬本為世界狀態(world state)提供了可替換的數據存儲方案。默認情況下,這是一個LevelDB鍵值存儲數據庫。事務日志(transaction log)不需要是可插拔的,它只是記錄了區塊鏈網絡使用的賬本數據庫之前和之后的值。

智能合約

HyperLedger Fabric的智能契約是用Chaincode編寫的,並且當應用程序需要與賬本進行交互時,被應用程序外部的應用程序調用。在大多數情況下, Chaincode只與總賬的數據庫組件交互,例如世界狀態(例如,查詢它),而不是事務日志。

Chaincode可以用幾種編程語言實現,目前支持的chaincode編寫的是GO語言,在今后的發行版中將會逐步新增Java和其它語言的支持。

隱私

根據網絡的需要,企業對企業(B2B)網絡的參與者可能對他們所共享的信息非常敏感。對其他網絡來說,隱私不會成為首要關注的問題。

HyperLedger Fabric支持需要將隱私(使用通道)作為關鍵操作需求的網絡,同時也是相對開放的網絡。

共識

事務必須按照它們發生的順序寫在賬本上,即使它們可能是網絡中不同的參與者生成的。要做到這一點,必須建立事務的順序,並且必須在賬本中建立一種拒絕錯誤事務(或惡意的)的方法。

這是一個經過徹底研究的計算機科學領域,有很多方法可以實現它,每一個都有不同的權衡。例如,PBFT(拜占庭式容錯)可以為文件副本提供一種機制,使其能夠相互通信,從而保持每個副本的一致性,即使是在出現腐化的情況下。或者,在比特幣中,排序是通過一個名為“挖礦”的過程來實現的,在這個過程中,競爭的計算機競相解決一個加密難題,該難題定義了所有流程隨后構建的順序。

HyperLedger Fabric的設計使得網絡啟動者可以選擇一種最能代表參與者之間關系的共識機制。就像隱私一樣,需要有一系列的需求;從人際關系高度結構化的網絡到更加對等的網絡。

關於HyperLedger Fabric共識機制,它目前包括SOLO和Kafka,並將很快擴展到SBFT(簡化的拜占庭式容錯)。

 

如何學習HyperLedger Fabric

可以參考Hyperledger Fabric 1.0 從零開始,英文閱讀能力好的可以直接通過官網的教程Getting Started

官網中提供了大量的教程,可以幫助了解一個區塊鏈網絡中的大多數關鍵組件,了解它們如何相互作用,還能在官網中得到代碼等干貨,並針對運行的區塊鏈網絡運行一些簡單的事務。官網還為提供了一些教程,幫助可以考慮使用HyperLedger Fabric來操作一個區塊鏈網絡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM