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

介紹html

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

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

首次接觸HyperLedger Fabric的用戶能夠從下文的具體介紹開始,以瞭解區塊鏈的工做原理和HyperLedger Fabric特定的特性及組件。編程

若是經過後續文章熟悉了區塊鏈及HyperLedger Fabric的結構原理,那麼就能夠開始正式使用HyperLedger Fabric搭建屬於你本身的平臺,能夠參考官網的Getting Started,而且從官網提供的示例中學習技術規範和api等。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來操做一個區塊鏈網絡。

相關文章
相關標籤/搜索