鏈圈的朋友們值得收藏!騰訊首席架構師教你兩種區塊鏈設計思路
歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~
本文由敖萌發表於雲+社區專欄
區塊鏈發展到了現在,產生了很多不同形式的區塊鏈技術。隨著技術的發展,目前比較公認的看法是區塊鏈已經走進了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是低耦合設計的一個平臺。
問答
區塊鏈是什麽?
相關閱讀
看清區塊鏈
區塊鏈入門教程
區塊鏈前世今生
【每日課程推薦】新加坡南洋理工大學博士,帶你深度學習NLP技術
此文已由作者授權騰訊雲+社區發布,更多原文請點擊
搜索關註公眾號「雲加社區」,第一時間獲取技術幹貨,關註後回復1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社區!
鏈圈的朋友們值得收藏!騰訊首席架構師教你兩種區塊鏈設計思路