點此檢視最新,fabric官方文檔中文翻譯目錄
籠統來說,區塊鍊是一個不會改變的交易賬本,由一些peer節點組成的分布式網絡維護。基于一些一緻性協定确認過的交易,這些節點都會維護一份賬本的副本,分組為包含哈希的塊,這些哈希散列将每個區塊與之前的區塊串聯起來。
第一個也是最廣泛認知的區塊鍊應用就是比特币加密數字應用,其他追随它的步伐有,以太币,另一種加密數字貨币,采用了另一種不同的方式,綜合了以太币很多一樣的特性但是增加了智能合約用來建立一個分布式應用程式平台。我們将比特币和以太币歸類為公開的不需要許可的區塊鍊技術(public permissionless)。基本上,這裡是公開網絡,向所有人開放,參與者都是匿名互動。
随着比特币的普及,以太坊和其他一些衍生的技術也在成長。将區塊鍊底層技術,分布式賬本和分布式應用程式平台應用于更具創新性的企業使用者的興趣也在增長。但是,需要企業使用者需要的平台特性,permissionless區塊鍊技術是無法滿足的,例如,金融類交易中的KYC和反洗錢(AML)規則就必須遵守。
企業的使用,我們必須考慮如下的需求
- 參與者必須被識别/可識别
- 網絡必須是需要準入的
- 高吞吐性能處理交易
- 交易響應低延遲
-
與業務交易相關交易和資料的隐私和機密性
相比需要早期的區塊鍊平台正在适應企業使用,Hyperledger Fabric從開始就是為企業使用而設計的。下面幾段描述了Fabric與其他區塊鍊平台的不同,同時描述了它如此架構設計的動機。
Hyperledger Fabric
Fabric是一個開源的企業級許可分布式賬本技術平台,為企業環境使用而設計。與其他流行的分布式賬本區塊鍊平台相比,它提供了一些重要的差異化能力。
差異化的一個關鍵點是Hyperledger是在Linux基金會的基礎上建立的,該基金會在開放式治理下培養開源項目的曆史悠久而且非常成功,這些項目開發了強大的可持續社群和蓬勃發展的生态系統。Hyperledger由不同的技術指導委員會管理,Fabric項目由多個組織的不同維護人員負責管理。 它有一個開發社群,自從它最早的送出以來已經發展到超過35個組織和近200個開發者。
fabric擁有一個高度子產品化和可配置的架構,可以為各行各業使用者包括銀行、保險、金融、健康保險、人力資源,供應鍊甚至數字音樂産業提供創新、多功能性和優化。
Fabric是第一個支援多語言編寫智能合約的分布式賬本平台,比如java、go、Node,相比限制于領域特殊語言(DSL),這意味着大部分企業已經具備了開發智能合約的技能,不需要額外去學習一門新語言或者DSL。
Fabric平台是許可準入的,意味着不像一個piblic permissionless網絡,參與者彼此是知道的,而不是匿名導緻的充分不信任。這意味着可能參與者不是充分信任的情況下,網絡可以根據參與者之間存在的信任而建構的治理模型下進行操作,例如 處理糾紛的法律協定或架構。(這一段的了解:在互相信任的基礎上建立的治理模式,可以保證互相不信任的雙方也可以進行交易)
一個更加重要的平台不同就是它支援可插拔的一緻性協定幫助平台能更加有效的個性化适應特别的使用者場景和信任模式。例如,當部署在一個企業或者由信任的權威機構營運,全部的拜占庭容錯共識可能是沒有必要同時還對性能和吞吐量上有極大的拖累,在這種情況下,CFT共識算法也許更适當,然後再一個多方分散的用例中,更加傳統的拜占庭容錯機制(BFT)可能是需要的。
fabric能利用共識機制,不需要原生數字貨币來進行昂貴的挖礦和為智能合約執行提供燃料。避免了加密數字貨币減少了重要的風險/攻擊媒介,沒有數字貨币挖礦該平台的運作成本與其他類型的分布式系統大緻相同。
這些差異化特征的設計組合讓Fabric稱為目前性能較好的平台之一,無論是交易處理和交易的延遲傳回,s而卻他可以保證交易的隐私和機密性以及智能合約(fabric稱為為鍊碼)來實作它們。
讓我們更詳細的讨論這些差異化的細節。
子產品性
Fabric被專門設計成了子產品化的架構。無論他的可插拔一緻性機制、可插拔身份管理協定例如LDAP或者OpenID連接配接,秘鑰管理協定或者密碼庫,這個平台的設計核心就是可配置來滿足企業多樣化的需求。
在較高層次,Fabric有一下子產品化元件組成
- 一個可插拔ordering服務讓交易排序達成共識然後廣播區塊到peer節點。
- 可插入成員管理服務提供者是負責配置設定網絡實體與加密身份相關聯
- 一個可選點對點gossip服務将區塊傳播出,從ordering服務到其他peer節點
- 智能合約隔離的運作在容器環境(Docker)。他們可以被标準的程式設計語言編寫但是不能直接通路賬本中的資料狀态
- 賬本能被配置為支援多種資料庫管理系統(DBMS)
-
一個可插拔的背書和驗證政策。每一個應用程式的背書政策可以被單獨配置
業内人士普遍認為“沒有一個區塊鍊能滿足所有的規則”。fabric能被配置為多重方式來滿足多樣化的使用者用例的多樣化解決方案需求。
有權限和無權限控制區塊鍊對比
在一個無權限區塊鍊,實際每個人都可以參與,每個參與者都是匿名的。在這樣的背景下,在達到一定的深度,不可改變前,區塊鍊的深度是不可信任的。為了緩和這種信任缺失,無權限區塊鍊通常使用挖掘本地加密數字貨币和交易費來提供經濟激勵,以抵消參與基于“工作量證明”(pow)的拜占庭容錯模式的高額成本。
另一方面,有權限區塊鍊,在一些已知的,身份已認證的以及經常審查的參與者之間運作區塊鍊,這些參與者在一種産生一定程度信任的治理模式下營運。有權限區塊鍊提供了一個方式保證有相同目标但是還不是完全信任的實體間可以互相作用。依靠參與者的身份,一個有權限工作連能使用更加傳統的CFT(無惡意節點共識)或者是BFT(有惡意節點共識),而不需要挖礦。
另外,在一個有權限的背景下,一個參與者通過智能合約引入惡意代碼的風險被降低了,首先,參與者了解彼此,所有的行動都是已知的。當一個關于網絡或者相關交易類型的背書政策被認可後,無論送出應用程式交易,修改網絡配置或者釋出智能合約都是記錄在區塊鍊。相對于完全的匿名,惡意參與方會被簡單的識别,這一事件按照治理模式的條款處理。
智能合約
智能合約,fabric稱之為鍊碼,作為一個可信任的分布式應用程式來運作,并且通過區塊鍊以及peer節點之間的基本共識來保證它的安全/信任。它是一個區塊鍊應用程式的業務邏輯。
有三個關鍵點适用于智能合約,特别是在應用于平台時
- 許多智能合約在網絡中是并發的
- 他們可能會被任意一個人動态部署
- 應用程式代碼應該被視為不可信任的甚至的惡意的
大多數現在具備智能合約的區塊鍊平台都遵循基于共識機制的順序執行的架構。
- 驗證和排序好交易然後将他們傳播到所有的peer節點
- 每個peer節點繼續按照順序執行交易
順序執行的體系結構事實上在所有存在的區塊鍊系統中都有發現。從公開/無權限平台例如以太币到有權限平台例如Tendermint, Chain, 和Quorum.
智能合約在區塊鍊中順序執行必須是确定的,否則如果完成一緻性。為了解決非确定性問題,許多平台都需要用非标準或者領域特定語言(例如Solidity),這樣的話非确定性操作會被除去。這個妨礙了廣泛應用因為它需要開發者為了寫智能合約需要學習一門新的語言同時可能導緻了變成錯誤。
此外,由于所有的交易都猶所有的節點順序執行,性能和可擴充性被限制了。智能合約代碼執行在每個節點上的執行的事實,要求有一個複雜的措施來保護整個系統免收潛在的惡意合約,以保證整個系統的彈性。
一種新的途徑
fabric介紹一種新的事務體系結構,我們稱之為excute-order-validate。它通過将交易流分為三步來解決彈性、靈活性、可擴充性、性能和機密性挑戰。
- 執行一個交易,檢查它的正确性,并且給它背書
- 通過一個可插拔的一緻性協定給交易排序
-
在送出它們到賬本前,通過一個應用程式特定的背書政策來驗證交易
在fabric中,一個應用程式特定的背書政策側指定了哪些peer節點或者多少數量,需要來保證一個智能會越的正确執行。是以,每個事務隻需要由滿足事務的認可政策所需的對等節點的子集來執行(背書)。這樣就允許了并發執行增加了系統性能和可擴充性。第一階段也是消除任何不确定性,因為在排序前需要消除所有不一緻的結果。
因為我們已經消除了不信任。fabric是第一個可以使用标準程式設計語言的區塊鍊技術。在1.1.0release版本中,智能合約可以通過Go或者Node,還有計劃在後續的釋出版本中支援其他流行語言包括java。
隐私和機密性
就像我們讨論的那樣,在一個公共的無權限的區塊鍊網絡将pow用于它的一緻性模式,以及交易被執行在每一個節點上。這意味着合約本身及他們要保護的交易資料都不是機密的。每一個交易和實作它的代碼,在網絡中網絡中每一個節點都是可見的。我們隻能通過Pow提供為拜占庭容錯機制提供智能合約和資料的機密性保證。
這種機制性的缺乏對很多商業/企業使用者是有問題的。例如,在一個供應鍊網絡中,可能會通過優惠的價格來鞏固和一些使用者的關系或者增加額外的銷售。如果每一個參與者都可以看到每一個合同和交易,那麼在整個透明的網絡中是不可能維護這種商業關系的-因為每一個人都想要更好的價格。
比如第二個例子,考慮到證券業,一個交易員建立一個倉位(或者處理一個)不希望他的競争對手知道這個,否則他們會試圖進入遊戲,削減交易者的賭注。
為了滿足企業使用者需求解決隐私和機密性的缺陷,區塊鍊平台采用了一系列的機制。所有的都有他們的折中方案。
加密資料是保護機密性的一個機制,但是在利用pow達成共識的無權限的網絡,加密資料是在每個節點上都存在的。隻有給到足夠的時間和計算資源,加密是可能被破解的。對于很多企業使用者案例,他們的資訊洩露風險是不可接受的。
零知識證明(ZKP)是另一個研究領域來解決這個問題,這個折中性在于,目前計算一個ZKP需要相當可觀的時間和計算資源。是以,在這個案例裡面折中性是性能和保密性。
在有權限環境下,可以使用另一種形式的一緻性,一個可能的擴充就是限制機密資訊的分布式範圍,隻能存在授權節點。
fabric是一個有權限的平台,通過它的channel機制來保證機密性。基本上,fabric網絡的參與者能夠在參與者的子集之間建立channel用來保證一組特定交易的可見度。把它想象成一個網絡覆寫。是以,隻有參與到一個channel鐘的極端能夠通路智能合約和資料處理,保護了兩者的隐私和機密性。
fabric同樣緻力于兩個特征用來提高它們的隐私和機密性,分别是:私有資料-一個我們稱之為SideDB的特性和零知識證明(ZKP)。
可插拔的一緻性
排序交易被委托給子產品化元件來實作共識與peer節點執行交易和維護賬本已經是一種邏輯上的解耦了。具體的說,排序服務,猶豫共識是子產品化的,它是實作可以根據特定部署或解決方案的信任假設來定制。子產品機制允許平台依靠成熟的CFT或者BFT排序工具包。
在目前的釋出版本中,fabric基于Kafka和zk來提供了CFT排序服務。在後續的版本。fabric提供一個用etcd / Raft實作的Raft一緻性訂購服務和一個完全分散的BFT訂購服務。
注意這些不是互相排斥的,fabric網絡可以擁有多個排序服務來支援不同的應用程式和應用程式需求。
性能和伸縮性
一個區塊鍊的平台性能會被很多因素影響,例如交易大小、塊大小、網絡帶寬,硬體限制等。Hyperledger社群正在為性能和可擴充性工作組制定一套草案,以及還有一套稱之為Hyperledger Caliper的基準測試架構。
随着這個工作發展,他會被視為區塊鍊平台性能和可擴充性特性的的明确衡量名額,IBM的一個研究團隊已經釋出了一篇peer節點評估評價了fabirc的性能機制。這篇評估對fabiec的機制進行了較深的評論,他們的性能研究平台用的是fabric v1.1的早期釋出版本。研究團隊的基準測試工作對fabric-v1.1.0版本帶來了顯著的性能提高,整體性能大概是v1.0.0的一倍。
結論
任何對區塊鍊平台的嚴肅評價短名單内都應該有fabric。
總的來說,fabric的差異化功能使它是一個高度可擴充的有權限區塊鍊,它支援了靈活的信任機制,使得平台可以支援從政府到金融、供應鍊物流、醫療保險等等廣泛的工業使用者場景。
更重要的是fabirc是目前十個Hyperledger項目中最活躍的項目。該平台的社群正在逐漸壯大,随着每個後續版本的釋出,它将遠遠超過了其他任何企業區塊鍊平台。
緻謝
前面的都是來自于一個同行的評審“Hyperledger Fabric:一個有權限區塊鍊的分布式作業系統”。。。。(N個人名)。