Fabric 和以太坊具有截然不同的設計思路,充分體現了傳統企業信息系統思維設計模式和區塊鏈原教旨主義思維設計模式的區別。

區塊鏈發展到了現在,產生了很多不同形式的區塊鏈技術。隨着技術的發展,目前比較公認的看法是區塊鏈已經走進了 2.0 時代。區塊鏈 1.0 是以比特幣爲代表的去中心化數字貨幣區塊鏈系統,而 2.0 則是引入了智能合約的區塊鏈系統。

在支持智能合約的區塊鏈系統中,Linux 基金會所屬的 Hyperledger Fabric (由 IBM 貢獻)和 Vitalik Buterin 所領導的以太坊基金會所創造並管理的 Ethereum (以太坊)是兩個典型。這兩種區塊鏈系統具有截然不同的設計思路,充分體現了傳統企業信息系統思維設計模式(Fabric)和區塊鏈原教旨主義思維設計模式的區別。 首先看一下 Ethereum,Ethereum 是非常典型的受到 Bitcoin (比特幣)架構影響的一個區塊鏈系統。其最典型的特點是——鏈是基礎。所有的信任都來自與基於 Hash 密碼學安全的鏈式數據結構,在這個信任基礎上,架構所有的功能。

*而對於 Fabric 來說,系統一定要有一個漂亮的技術架構:可插拔的模塊化設計、高擴展性、高內聚低耦合。在一個漂亮的技術架構上,調用各個模塊,來構造一個功能——鏈,每增加一個功能,可以使用已有的鏈,也可以創建一個新鏈。*

*Ethereum 使用了虛擬機方式實現智能合約,Ethereum 中的虛擬機叫做 EVM,是一個輕量級的沙盒執行環境。爲了讓智能合約更加方便,以太坊開發者創造了新的語言來編寫智能合約,目前最流行的 EVM 編程語言是 Solidity。EVM 的一大特點就是隻能對鏈上的數據進行讀寫,非鏈上的數據只能在調用智能合約的時候,由調用者通過函數參數傳遞到智能合約中。(EVM 的這個特點確保了智能合約的結果是確定的,不會因不同的節點執行而導致不同的結果。)而智能合約本身和智能合約的調用過程(或者叫做使用智能合約的交易)都會記錄在鏈上。*

因此,我們可以看出,以太坊的架構中,「鏈」是信任的錨點,所有的信任都來自於鏈。

而 Fabric 使用了 Docker 機制實現智能合約。相比於 Ethereum 的 EVM,Docker 可以算是一個重量級的沙盒執行環境。由於 Docker 的特性,Fabric 可以使用很多語言開發智能合約,同時也可以使用很多庫函數和系統函數,因此,Fabric 的智能合約靈活性更高,(比如可以和物聯網設備通訊),但是這種靈活性也導致了可能不同的節點執行後產生不同的結果而無法達成共識的風險。

而 Channel 的引入,使得 Fabric 的智能合約是直接部署在某幾個節點上的。每個智能合約可以創建新的鏈,也可以和其他智能合約共用一個鏈。

「鏈」在 Fabric 的架構裏,相當於實現某個功能時,參與該功能的幾個節點所共用的一個存儲空間。 明白了這兩種智能合約的實現方式區別後,我們就會發現這兩種典型的區塊鏈的設計思路的區別了——「鏈」到底應該位於架構的哪一層?在區塊鏈原教旨主義中,由於大家都不可信,所以只能相信由 Hash 算法串起來的一個完整的數據系統。而在面向企業間應用的聯盟鏈中,由於節點都是需要身份認證才能加入的,因此可信程度高一些。所以,只要關鍵的一些數據達成共識實現可信就可以了。

正是由於這種設計思路上的區別,在 Ethereum 中,所有的智能合約都運行在同一個鏈上,大家共用一個可信的基礎設施;而在 Fabric 中,一個應用對應一個鏈,整個系統由很多子鏈構成,這些子鏈共用一套基本互信的基礎設施。

從系統架構角度看,Ethereum 是一個完整基礎設施,不會拆散了來用。雖然 Ethereum 內部的設計耦合性很高,各個模塊依賴性極強,甚至整個系統都依賴於某些基礎的智能合約(例如以太幣合約),但這可以看做是整個基礎設施的內聚性導致的。

而 Fabric 更像是一個區塊鏈雲服務平臺,能夠讓用戶方便的在基礎平臺上,使用各個模塊創建一個一個的鏈進而實現一個一個的應用。所以,Fabric 是低耦合設計的一個平臺。

鏈聞 ChainNews:提供每日不可或缺的區塊鏈新聞。


原文作者:Conor Maloney 騰訊雲金融業務中心區塊鏈首席架構師敖萌博士
文章來源:雷鋒網
版權聲明:文章爲作者獨立觀點,不代表 鏈聞 ChainNews 立場。

來源鏈接:www.leiphone.com