歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
區塊鏈發展到了現在,產生了很多不同形式的區塊鏈技術。隨著技術的發展,目前比較公認的看法是區塊鏈已經走進了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是低耦合設計的一個平臺。
問答
相關閱讀
此文已由作者授權騰訊雲+社群釋出,更多原文請點選
搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社群!