為什麼IBM的Hyperledger不是真正的區塊鏈?它其實是一個Kafka的排序服務

banq發表於2019-05-06

國內很多上報國家區塊鏈名單的公司不少使用了IBM的Hyperledger,其實Hyperledger不是真正的區塊鏈。下面是在金融行業建立交易系統和交換主幹方面擁有15年的經驗的Stuart Popejoy的文章:

早在2016年,企業“私有區塊鏈”就是一個新的,不熟悉的想法。私人許可的區塊鏈空間中沒有多少主要參與者; 一個很有名的是IBM,他將Hyperledger Fabric帶入了沃爾瑪、雀巢和Aetna等許多企業。

您會認為IBM品牌的突出和歷史將導致其區塊鏈技術的廣泛採用,但相反,採用一直緩慢,大多數解決方案仍然處於新生概念驗證階段。這表明許多IBM的企業客戶並不滿意。

原因可能是從根本上講IBM的Hyperledger 並不是真正的“區塊鏈”,它所提供的功能難以使用且難以擴充套件

當我在2016年在摩根大通工作時,我領導了一個新興技術集團,該集團研究和審查了該銀行潛在用途和戰略投資的區塊鏈。當時,我們對Hyperledger,Axoni,Symbiont,Tendermint,Ripple的早期版本進行了深入分析和以太坊。

我的團隊發現,市場上的區塊鏈選項在技術上對於真實的企業用例來說是低於標準的。這些技術問題包括將程式碼編譯為計算機“位元組碼”,這使得業務邏輯難以理解 、難以檢查審計 , 執行得如此之慢以至於無法比傳統資料庫更好地執行有用的業務事務

因此,我們在檢視區塊鏈供應商時,提出了一系列問題。問題如下:

  • 這個區塊鏈使用什麼語言?
  • 語言是為安全而設計的嗎?
  • 系統能否輕鬆表達複雜的業務規則?
  • 您能否升級合同,即建立任何合同的治理制度?
  • 系統可以與外部區塊鏈互動嗎?
  • 系統是否可以新增參與者(節點)而不會顯著降低效能?

使用這些問題作為框架,我認為IBM區塊鏈系統從根本上缺乏一些架構元素。

什麼區塊鏈是和不是

為了真正瞭解IBM的區塊鏈無法滿足的地方,我們需要檢視區塊鏈本身的定義。 區塊鏈是一個分散的分散式資料庫,是一個不可變的事件或交易分類賬,其中真相由共識機制決定 - 例如參與者投票同意所寫的內容 - 以便沒有中央機構仲裁真實情況。

IBM 對區塊鏈定義擷取了 區塊鏈的分散式和不可變兩個元素,但省略了分散的共識 這是因為IBM Hyperledger Fabric 根本不需要真正的共識機制

相反,它建議使用名為Kafka的“排序服務”,但如果參與者之間沒有強制執行加密安全投票,則無法真正證明代理是否篡改了分類帳。實際上,IBM的“區塊鏈”只不過是一個美化時間戳的條目列表

IBM的架構暴露了因為需要極少量惡意協調而導致的潛在漏洞。例如,IBM 在“網路內部” 引入了帶有驗證器簽名的公鑰加密,這從根本上使比特幣和其他真正的區塊鏈的安全模型無效,網路永遠不要介入使用者外部提供的公鑰簽名。(banq注:因為人由好壞,壞人也會提供簽名)

在Hyperledger節點中,唯一重要的簽名是驗證器,而使用者簽名消失在通過網路複製的“RWSet”中的任意資料中(參見下圖)。

為什麼IBM的Hyperledger不是真正的區塊鏈?它其實是一個Kafka的排序服務

IBM由於其複雜的架構,它們的效能數字非常快速且鬆散。區塊鏈的架構或形態很重要,因為它控制資訊在數字分類帳上的移動方式。

IBM平臺架構很複雜,涉及非均勻節點,不可靠的智慧合約和許多故障點。在安全方面,其架構僅在系統內提供保證,這意味著總有可能讓人產生破壞使用者的意圖。

此外,IBM Hyperledger Fabric聲稱的效能資料具有誤導性。Hyperledger使用多鏈環境(他們稱之為“渠道”)作為其機密性/網路安全性的一部分。但是,它們的事務不能跨通道複製,這意味著應從效能的角度獨立評估每個通道。

在檢視各個渠道時,IBM的系統難以達到800 tps以上,但即使是16通道配置也幾乎不能超過1500 tps,延遲時間可以達到10-20秒的吞吐量。

因此,要實現IBM的最高效能,您必須部署多個需要額外配置的通道,以實現最大效能(仍然不能超過1800 tps),延遲時間飆升至10-30秒範圍。此外,現實生活中的多渠道網路部署起來也非常複雜,因此不太可能真正在商業中使用。

為什麼智慧合約很重要

最後的考慮因素包括用於在區塊鏈中程式設計命令的智慧合約語言。智慧合約不僅僅是一段程式碼; 它是業務邏輯的代表。

智慧合約可以確保區塊鏈上的房屋安全,確保數字身份,甚至只代表購買和銷售舊電視的人之間的託管交易。重要的是,智慧合約是可靠的,並始終按照它的意願行事。

在區塊鏈上構建任何東西時,您需要能夠通過智慧合約來表示您想要做的事情(購買,出售,打包資料等)。您的語言使用起來越簡單或越簡單,您構建所需內容的速度就越快,並且會在利益相關者面前展現出來。

IBM Hyperledger Fabric智慧合約(“chaincode”)可以用許多程式語言編寫,包括通用Javascript或Go。支援多種語言似乎是有益的,因為它允許人們在不必學習新語言的情況下獲取區塊鏈。

但是,在已經瞭解通用語言的程式設計師的便利性與特定於域的語言提供的安全性和安全性之間存在權衡。智慧合約語言必須是專門設計的,並且設計安全:如果程式碼有缺陷或不正確,因為它不是為區塊鏈設計的,那麼數百萬美元可能會丟失。

最後,如果程式語言是通過使用者友好性來衡量的,那麼Hyperledger的編碼並不是很簡單。為了說明經典的程式設計師編碼告訴計算機說“你好世界”,你需要150行程式碼。

為什麼IBM的Hyperledger不是真正的區塊鏈?它其實是一個Kafka的排序服務

 

相關文章