1. 程式人生 > >Hyperledger Fabric 官方最新翻譯---介紹(Introduction)

Hyperledger Fabric 官方最新翻譯---介紹(Introduction)

  籠統來說,區塊鏈是一個不會改變的交易賬本,由一些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專案中最活躍的專案。該平臺的社群正在逐步壯大,隨著每個後續版本的釋出,它將遠遠超過了其他任何企業區塊鏈平臺。

致謝