私有區塊鏈 — Hyperledger Fabric介紹

企業等級的許可式分佈帳本平台

我們都知道,一般公有區塊鏈會有著一些企業運作無法適應的特性。例如,公有區塊鏈的"匿名性",也就是不知道交易對手是誰。再來是"交易處理速度(交易擴充性)",公有區鏈的交易速度一秒最多只能幾十筆交易(比特幣每秒7筆,乙太幣每秒約30筆),這樣的速度無法應付一般消費大眾的交易量能(VISA可以處理每秒24000筆),而這些問題對一般正常的企業運作產生了很大的問題。例如企業的金融交易必須處理KYC(Know-Your-Customer),反洗錢(AML-Anti-Money Laundering)等監管需求。在考慮到企業使用區塊鏈技術時,我們必需考量到下面企業的日常運作中會產生的需求:

  • 企業必須知道跟"誰"在交易
  • 參與企業與企業之間的交易網路是要"被許可的"
  • "大能量"的交易效能
  • 交易的速度要夠"快"
  • 必須能保護企業交易間的交易資料的"隱私性與機密性"

而因為這些問題所以產生了私有且是許可式區塊鏈的平台。也就是本文所要介紹的Hyperledger Fabric。

什麼是Hyperledger Fabric

這是一個開源的企業等級許可式分佈帳本平台,專門設計給企業使用的。這是一個高度模組化與配置化的架構,而且是第一個可以用一般開發者常用的程式(如JAVA, Go與Node.js)進行智慧合約(在Hyperledger又稱chaincode)的開發。

這個平台重要的區別之一是它支援可插拔的共識協議(Pluggable consensus protocol),使平台能夠更有效的客製化以適應特定的場景和信任模型。 例如,當部署在單一企業中或由受信任的第三方有信用的機構運作時,fully byzantine fault tolerant consensus(完全的拜占庭容錯共識)可能會被認為是不需要的,因為這會過度拖累效能和交易量能。 在這種情況下,傳統的崩潰容錯 (CFT — crash fault-tolerant) 共識協議可能就足夠了,而在多個參與者、去中心化的場景中,可能需要更傳統的拜占庭容錯 (BFT) 共識協議。

模組化功能

Hyperledger Fabric 經過專門設計,具有模組化架構。 無論是Pluggable consensus protocol、可插拔的身份驗證(例如 LDAP 或 OpenID Connect)、key management protocols還是加密庫(cryptographic libraries),這個平台的核心設計都是為了滿足企業需求的多樣性。它的模組組件(components)有:

  • Ordering service — 這個組件負責在交易順序建立共識,然後廣播給所有這個網路中所有的參與節點(也就是伺服器)
  • Membership service provide — 負責將實體身份(也就是法定身份)與這個網路中的帳號身份關聯起來。這個功能跟公有區塊鏈的匿名性反其道而行。
  • 智慧合約Smart Contract(Hyperledger稱為chaincode,以下我們也會這樣稱呼) — 這是一個運行在容器化環境中。chaincode可以用我們上述提到的開法語言進行開發,但卻不會直接觸碰到帳本的狀態。
  • Peer-to-peer gossip service — 透過ordering service將區塊的結果傳送給其他節點。
  • 帳本可以支援多種的資料庫管理系統(DBMS)
  • 背書(endorsement)和驗證(validation)政策的實施,每個Application都可以有獨立的配置。

上面提及到Hyperledger是屬於許可式區塊鏈。關於甚麼是許可式區塊鏈可參閱本部落格 — 區塊鏈類型的文章,在此就不再贅述。

一般公有區塊鍊的智慧合約(Smart Contract)

它用做受信任的分佈式應用程序(Application),從區塊鍊和節點之間的底層共識取得信任(或是安全)。 它是區塊鏈應用程序的業務邏輯。

當我們在使用智慧合約時,它有三個關鍵點是需要注意的:

  • 在整個網路中,多個智慧合約是同時運作的
  • 它是動態被部署的(在許多狀況下可能是任何一個參與者)
  • Application code不應該被信任,甚至可能是有惡意的

智慧合約運作是Order-execute的結構,而達成交易共識方式是:

  • 驗證與執行交易,然後把它廣播到整體網路中
  • 然後每個節點也執行同樣這個區塊內的交易(重複運算一次進行確認)

這種運作方式很廣泛的被用在公開且非許可式的區塊練(如乙太網)與許可式的區塊鏈(如Tendermint, Quorum)。

在以Order-execute運作的區塊鏈中執行的智慧合約必須是決定性的(determinism); 否則,可能永遠無法達成交易共識。 為了解決非決定性問題,許多平台要求智慧合約以區塊鏈的特定開發語言(如 Solidity)編寫,以便去除非決定性作業。 不過這樣做會讓企業花上時間成本來進行,而且由於這一類的開發專家很少,讓原本的開發人員來進行可能會讓開發中產生很多Bug。

此外,由於所有交易都是由所有網路中的節點按順序執行的,因此效能和規模是有限的。 智慧合約代碼在系統中的每個節點上執行的事實要求採取複雜的措施來保護整個系統免受潛在惡意合約的影響,以確保整個系統的彈性。但這也很大的程度上保證了交易內容的高度信任。

Fabric

Fabric的智慧合約則採用了execute-order-validate的方式。它通過將交易流程分為三個步驟來解決訂order-execute模型所產生的彈性、靈活性、可擴展性、效能和機密性的問題:

  • 執行一筆交易並且確認正確性,之後為這筆交易背書
  • 通過(可插拔的)共識協議進行order transactions,以及
  • 在將交易寫入到帳本之前,根據特定應用程序的背書(application-specific endorsement policy)來驗證交易

這種設計從本質上背離了order-execute的結構,因為 Fabric 在Order還沒達成一致的共識之前就執行交易。

在 Fabric 中,特定應用程序的背書是會指定哪些對等節點(peer node)或其中需多少個節點需要保證特定chaincode的正確執行。 因此,每個交易只需要由整體網路中的一部分節點為其交易進行背書。 這樣的方式會讓整體網路的交易效能和規模變大。 第一階段(execute)還消除了任何不確定性,因為可以在Order之前過濾掉不一致的結果。

隱私與機密

在一個公有的、非許可制的區塊鏈網路中,它利用 PoW 作為其共識模型,交易在每個節點中執行。這意思是智慧合約本身及其處理的交易資料都不能保密。每筆交易以及運行它的代碼對網路中的每個節點都是看得一清二楚的。在這種情況下,我們用智慧合約和資料的機密性來換取 PoW 提供的拜占庭容錯共識。

但對於許多企業需求來說,這種缺乏保密性可能會成為問題。例如,在供應鏈合作夥伴網路中,企業不可能對每一個交易夥伴提供一樣的產品價格。如果每個參與夥伴都可以看到每個合約和交易,那麼在完全透明的網路中維持這樣的商業關係就變得不可能 — — 因為每個人都想要最低價!

作為第二個例子,如證券行業,建立一個部位的交易者不希望競爭對手知道其部位的資訊,否則對手就會參加這個遊戲,削弱交易者的策略。

為了解決企業需要有隱私和機密性的問題,區塊鏈平台採用了多種方法。都有自己的權衡與取捨。

加密其資料是提供機密性的一種方法;然而,在一個利用 PoW 達成共識的非許可網路中,加密資料是有多個副本在每個節點上。如果有足夠的時間和運算資源,加密可能會被破解(可能需要用到量子電腦,不然就是選擇的加密方式是很爛的)。對於許多企業場景來說,他們的資訊可能被外洩。

零知識證明 (ZKP-Zero knowledge proofs) 是正在探索解決這個問題的另一個研究領域,現行的權衡方式是運算 ZKP 需要大量時間和運算資源。因此,在這種情況下,權衡是保密性的效能。關於ZKP的解說可參閱"區塊鏈的進階安全機制"文章。

在一個是許可制的整體系統(一個其他型式的共識協議)中,企業可能會找尋只將機密資料發給有授權節點的方法。

Hyperledger Fabric 作為一個許可式平台,通過其特有的渠道架構(channel architecture)和private data功能實現資料的機密性。在渠道中,Fabric 網路上的參與者建立一個子網路(也就是一個渠道),該子網路中每個成員都可以看到一組特定的交易。因此,只有那些參與渠道的節點才能存取chaincode和交易資料,從而保護交易雙方的隱私和機密性。Private data允許在渠道上的成員之間進行資訊收集,從而提供與渠道相同的保護,而無需建立和維護單獨渠道的人力與時間。

可插拔的共識協議

交易的順序被交付給一個模組化組件來達成共識,這個組件在邏輯上與執行交易和維護帳本的對等節點脫鉤(decouple),這個組件稱為Ordering service。 由於共識協議是模組化的,因此可以根據特定部署或解決方案的信任假設對其實施進行量身定制。 這種模組化架構允許平台依賴成熟的工具組進行 CFT(崩潰容錯)或 BFT(拜占庭容錯)排序。

Fabric 目前提供了基於 Raft 協議的 etcd library的 CFT ordering service實現。 以上提及的這些不是相互排斥的。 Fabric 網路可以有多個Ordering service,支援不同的應用程式。

效能與擴充性

區塊鏈平台的效能會受到許多變量的影響,例如交易大小、區塊大小、整體網路大小以及硬體限制等。Hyperledger Fabric 效能和擴充性工作群目前致力於一個名為 Hyperledger Caliper 的基準測試框架。多篇研究論文,研究和測試 Hyperledger Fabric 的效能。 最新的 Fabric 擴展到每秒 20,000 筆交易。

結論

Fabric 的差異化功能使其成為許可制區塊鏈的高度可擴充系統,支持靈活的信任假設,使平台能夠支援從政府、金融、供應鏈物流、醫療保健等廣泛的行業場景。

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet