解決了並行問題,區塊鏈專案才有新開始。
撰文:li
加密貨幣網路發展的這幾年,以擴容為特點的專案有很多,不過能作為“標誌性解決方案”的並不多,例如以太坊2.0的同構分片,波卡構建的異構分片,plasma的側鏈,zksync、optimistic、starkware等的layer2,cosmos的跨鏈結構(用跨鏈擴容)。
這些專案都在不斷尋找基於以太坊、比特幣的區塊鏈結構最適合的擴容方法。以太坊2.0的關注度是最高的,主打pow切換pos,然後壓縮交易資料(rollup),塑造分片結構(sharding,非資料分片),這種方式極為漫長,屬於是加密貨幣網路的終極思路,但不能否認這是極為必要的長久之路。
而從本質上來看,區塊鏈結構優勢明顯,天花板也極為明顯。如果想創新,如果不打破區塊鏈結構帶來的天花板,業內似乎很難走向下一步,筆者認為業內的創新需要從很多成熟產業和成熟技術體系裡借鑑思路。
關於打破效能天花板,就可以借鑑雲端計算平臺的設計。
區塊鏈的瓶頸過於明顯
區塊鏈的瓶頸來源於其最優勢的地方:共識。
共識的執行過程是多方(節點裝置)對同一資料(區塊)進行計算的過程,例如比特幣,是某一節點打包區塊後廣播給所有節點逐一儲存。
即使以太坊2.0從pow切換到pos後,只是會加快整個共識過程,減少單次共識完成的時間,以增加單位時間內的處理數量。而在海量計算需求面前,pos依舊是天花板過於明顯。
這樣,每一個區塊鏈結構裡,就會出現上圖中的模型,所有的計算任務,是在搶佔一個計算節點的計算資源,若干個任務都在搶佔一個狹窄的通道。
如果在一些應用場景裡要求併發量沒有那麼高,可以透過提高單個節點的計算能力,更換更快的共識演算法,以及對拼搶資源的任務做一下“透過”時間分配,可以順利疏通整個確認過程。
不過,可惜的是,對於很多高併發場景(區塊鏈不能止步於金融和單一場景),一定會堵塞、慢、甚至於完全不能進行,亦或者因為堵塞引發其他問題(例如安全)。
解決這個問題,需要在任務處理時實現足夠多的並行處理量,才能增加網路單位時間內任務處理的上限值。
如果借鑑雲端計算的擴容和並行思路,加密貨幣網路該如何實現呢?
雲端計算提供的思路,最基礎的要求,是接入系統的網路資源,不是多臺計算裝置接入,對外輸出的資源上限只是一個計算裝置的上限,而是n臺計算裝置接入後,網路的處理能力,是n倍提升的。
這恰恰是加密貨幣網路需要的,每個加密貨幣網路都有若干個計算裝置的接入,而最終的效能侷限在了共識層的結構部分。
我們具體來看,傳統雲端計算平臺存在水平擴容和垂直擴容,水平擴容即並行,將任務分流分割槽處理。垂直擴容即增加單臺裝置的處理能力,這就很像:解決擴容問題的一個思路是加大區塊。
雲端計算中並行的舉例,資料生成適合並行的結構,繼而利用gpu的效能快速處理
但加密貨幣網路中區塊鏈結構無法改變的時候,實現並行的思路已經演化為2種。
本文中,白計劃團隊將以oasis、phala、platon、dfinity、filecoin、iota 6個加密貨幣專案為例闡述兩種主要實現並行的思路。
(白計劃注:排列順序是根據依靠安全硬體並行和依靠改善演算法並行區分的)
當這些加密貨幣網路在具備雲化並行的能力後,將承擔未來很多網際網路遺留問題的解決預期。
主流的2種並行思路拆分
以上的專案可以分為兩種思路解決擴容和並行問題。
其一是以oasis、phala、platon為代表,透過將可信計算硬體作為計算裝置接入網路,硬體裝置具備很高的計算能力和安全能力,可以將計算過程、儲存過程賦予安全性。而這些單個裝置(或叢集)又可以獨立承擔獨立的處理工作,這樣在共識層外實現並行和安全計算,總結為獨立的可信計算。
其二是以dfinity、iota、filecoin為代表,透過研發新的演算法在共識層,改變區塊交易確認的過程,實現並行驗證,以提高鏈上的任務處理能力,然後再透過可伸縮性的塑造,增加單個計算裝置的算力和空間,也就是雲端計算的垂直擴容。
具體拆分如下:
以可信硬體硬體實現並行的網路設計
1.先搭建一個優質的共識層。
首先,加密貨幣需要一個總帳本,總帳本存在於共識層,oasis、phala、platon都將共識層和計算層做了切割,在計算裝置之上有獨立的共識層,即一條透過計算裝置(或雲)搭建的執行高速共識演算法區塊鏈網路。
不過值得注意的是,其中oasis、platon有較為明顯的分層概念,而phala的分層概念不明顯,其設計細節在於對鏈下計算裝置有獨立的規則。
為了保證共識層的穩定性,oasis的這一層選擇透過具備行業信任度較高的組織和企業搭建節點,節點間透過tendermint演算法通訊,快速形成總帳本。
platon的節點同樣是透過合作方搭建,並且其使用類bft演算法cbft演算法,最佳化了普通bft演算法的效率。
phala則是把具備tee的計算節點(被稱為gatekeeper)接入網路,gatekeeper的tee計算區可以維護總帳本,其共識為與波卡一致的npos共識,可以快速出塊。
共識層外,他們把計算和儲存引入鏈下或layer2。平行計算就在這裡實現。
2.讓計算層實現平行計算。
這裡要先說oasis,其計算層稱為paratime,可以看作是一個個獨立的鏈,或者看作一個runtime叢集,不過,在oasis網路的建立初期,paratime大多還部署在雲裡,並沒有全面替換具備tee的裝置作為網路基礎裝置。隨著進度推進,paratime的節點會全部具備tee能力,保證其安全性。
phala的計算是在接入節點的tee中完成的,每個tee中會部署phala的pruntime,pruntime與“共識層”(理論上)的通訊是獨立的,所以pruntime裡相互處理的交易並不衝突,這便是可以實現的並行,因為每個tee的pruntime就像一個個“分片”。這樣的接入節點越多,網路效能越強。
platon的計算,是在被標註為layer2的計算層完成的,platon的layer2具備大量的計算裝置,其中包含定製的可信計算裝置,例如完成多方計算的可程式設計電路,此外,還會透過密碼學以及零知識證明等技術完成隱私計算等,platon也是實現隱私計算的,不過其運用技術是多方計算或零知識證明、同態加密等。
將計算層設計為可信計算硬體的網路,是利用計算層的並行去擴容以及實現可伸縮性。我們可能認為將計算遷移到共識層外,並不是真正意義實現了平行計算。
但具備可信計算的硬體與共識層因為具有安全緊密的聯絡,所以與共識層是“一體的”,理論上如果為了鏈下計算的安全性,會需要鏈下有一個總帳本概念或其他控制安全性的方式。但有可信計算硬體的幫助,就不需要這個總帳本提供鏈下的安全性保護。
引以對比的可以是以太坊2.0,信標鏈是總帳本,如果已經部署了分片,每個分片間可以獨立處理任務,只是在oasis、phala、platon裡,是用可信硬體替代了分片的計算部分。
拆分完計算層的並行後,我們來看拆分利用演算法實現並行的方式。
透過演算法實現並行處理的設計
1.研發新演算法。
以dfinity、iota、filecoin為代表,研發演算法後,可以在不更改區塊確認過程的情況下讓任務開始並行處理,加快確認速度。
這裡我們要先提及,如果在演算法層面實現並行,主要實施會是改變演算法計算的規則,也就改變了演算法表現的功能邏輯,例如pow演算法如果改變,會改變pow演算法中計算隨機數、打包、廣播的邏輯。
dfinity對演算法的更改部分是共識演算法上,將傳統的共識節點全部參與共識計算修改為透過計算隨機數選取部分節點完成共識計算,這是加快共識驗證的一個步驟。而更核心的是選中的共識節點是透過非互動式的bsl演算法(節點確認資料簽名反饋是獨立進行的,不是組合進行的)確認交易,意味著不會經歷bft類共識的節點間反覆互動的過程,而達到類似“並行”加速的效果。
iota對演算法的修改比較徹底,對比區塊鏈,iota使用tangle資料結構形成總帳本tangle特點是每個事務都附加到兩個先前的事務裡,所以要完全消除了原有區塊鏈鏈式結構對確認時間的依賴。這就形成了交易的無限關聯確認結構,可以達到並行效果。
filecoin在並行上的修訂,是在對儲存任務的並行處理,因為filecoin的儲存部分,會對儲存資料完全進行計算,這個過程極為漫長(對比來說)。所以並行和提速非常之重要,目前,其採用的是更新後的nse演算法。
拆分nse演算法可以看到的是,當處理資料時,會對資料進行分window(可以理解為一個單元)和分layer層的處理,處理完成後才會進行下一步資料儲存以及後續的post證明打包。採用nse後,在layer的處理部分,layer間沒有過多依賴,所以可以形成並行處理效果,可以總結為並行提速的調整。
2.配置其他部分
在演算法上解決了並行問題,那接下來需要一些輔助功能。
iota的tangle沒有普通區塊結構裡的時間限制,那為了達成共識,就需要交易驗證器的幫助,來確認哪些交易形成共識。
dfinity改善了演算法,與之匹配的還有子網、資料中心和容器,子網是類似一個個“分片”,而資料中心是dfinity網路的底層網路部署,其要求資料中心參與,意味著網路的基礎處理能力很強。在子網上,容器是建立的獨立操作單元,可以類比區塊鏈的智慧合約,容器的組合互動可以實現複雜性。
filecoin在nse演算法對資料並行處理後,進行的是儲存複製和時空證明的打包儲存。這些部分保證了filecoin總賬本的一致性。而其他開發部分,是依賴官方團隊和生態中提供的工具。
雲化並行之後怎麼辦?
以上的6個加密貨幣專案,理論上以並行突破了區塊鏈的效能限制,那留給專案接下來的是什麼?
筆者認為,是如何透過對網路工具的開發讓這些效能為開發者所用。加密貨幣網路的使用目標,最重要的是可以開發dapp,可以開發廣義的去中心化業務。
即使基礎設施效能很高,沒有開發者做出應用時間,基礎設施也會是徒勞,開發者決定了鏈的應用產生量,應用產生量決定了鏈創造的和包含的價值。
正如傳統網際網路開發者,從篳路藍縷的基礎開發進入雲化開發時代,雲端計算平臺已經為開發者提供了極為優質的體驗,後來的創業者,已經不像當年,還要為擴容擔憂。
敢問如今的加密貨幣網路,是否可以以雲端計算平臺“面向服務的架構”為榜樣,形成開發浪潮。雲化並行之後,加密貨幣只是突破了井口,你是否能繼續升向天空呢?