一文看懂Cosmos和Polkadot五大差異

買賣虛擬貨幣
Polkadot和Cosmos是目前最受大家關注的兩個明星專案,這兩個專案都以跨鏈而為大家所知,目前也有不少文章從某些角度對這兩個專案進行比較。其中,來自康奈爾大學計算機系的Julian Koh對這兩個專案的分析尤為條理清晰,相信這篇文章能夠幫助大家對這兩個專案有更加深入的瞭解和思考。

加密社羣關於Cosmos和Polkadot之間的差異有過大量討論,這兩個專案都側重於區塊鏈的互操作性。如果你對這兩個專案還不太熟悉,不妨可以先訪問一下Linda Xie(@ljxie)的推特,上面有一個“推特頭腦風暴”較好地解釋了這兩個專案,還提供了一些學習資源。

儘管有很多帖子解釋並強調了兩者之間的差異,但老實說,我覺得社羣裡很多人其實沒有徹底理解“Cosmos vs Polkadot”之間的差異,有的存在偏見,有的忽略了細節。所以,我希望透過這篇文章對這兩個專案進行更深入的探討,包括架構性權衡、哲學差異等。

那麼,為什麼要構建一個新區塊鏈?

坦率地說,人們之所以更願意從頭開始構建特定應用的區塊鏈而不是基於現有平臺編寫一個智慧合約應用程式,主要有兩個原因:

首先,如果你基於現有智慧合約平臺可能無法為你的應用程式提供所需的靈活性和定製化功能。舉個例子,如果你的應用程式需要自定義雜湊函式,那麼在以太坊區塊鏈上寫入的話可能需要支付很多gas費用,因為每次在以太坊虛擬機器(EVM)上執行的時候都需要呼叫一次函式。不僅如此,除非這個函式能夠在其他應用程式中被廣泛使用,否則你的提案很可能不會被批准。相比之下,從頭開始編寫自己的區塊鏈,你可以自由靈活地設計區塊鏈核心邏輯,充分滿足自己的應用需求。

第二個原因是“自主權”。在智慧合約平臺上構建應用程式的時候,會迫使你必須遵循協議的規則和治理方案。在這種情況下,很多因素會影響到使用者體驗,比如阻塞時間、Gas定價、以及狀態變化決策(比如區塊鏈回滾)等。

如果使用具有自主權的獨立區塊鏈能夠為應用程式提供無縫通訊能力,因為這些應用程式可以在獨立區塊鏈上的獨立狀態機(state machines)執行。 Cosmos和Polkadot都試圖解決這個問題,因此Cosmos帶來了“中樞-和-區域”(Hub-and-Zone)模型,Polkadot推出了“中繼鏈/平行鏈”(Relay Chain / Parachain)模型。

本文會介紹這兩個專案的大致情況,並會重點梳理這兩個專案之間的差異。

差異#1:本地化安全 vs. 全域性化安全

Cosmos和Polkadot在兩種截然不同的安全模型下執行。簡單地說,Polkadot的工作原理如下:


平行鏈(Parachains)是Polkadot網路中的區塊鏈,這些鏈有自己的狀態機、自己的規則、以及自己的本地區塊生成器(校對者)。各個平行鏈本質上是一個獨立的狀態機,可以使用任何型別的獨立功能,一致性演算法,交易成本結構等。在Polkadot網路中,所有平行鏈都是母鏈——也就是中繼鏈(Relay Chain)的子節點,而中繼鏈中包含了所有平行鏈中組合的“全域性狀態”部分表示。中繼鏈有自己的共識演算法:GRANDPA共識,該演算法可以快速確定鏈中的區塊。透過這個模型,Polkadot網路中的區塊鏈可以在“共享安全”模式下執行——如果中繼鏈具有1000個驗證器能夠保證高度安全,那麼任何連線到中繼鏈的平行鏈都能受益於這種強大的安全性,同時子鏈對自己狀態機和其他本地規則的“自主權”不會受到任何影響,還能與數百個其他區塊鏈共享安全保護。

不過,這種模型的缺點是中繼鏈中的驗證器對任何鏈中的狀態變化都有最終決定權。舉個例子,中繼鏈的驗證者可以處於某些原因,不斷拒絕來自某個特定平行鏈的區塊,甚至可以永久地阻止該平行鏈被納入到全域性狀態之中。為了避免出現這種情況,Polkadot網路試圖透過改組驗證者來確保他們可以驗證隨機的平行鏈,大幅減少驗證某個特定平行鏈的可能性。此外,Polkadot網路還設立了一類叫做“漁民”(Fishermen)的特殊驗證人,他們會不斷檢查驗證人是否存在惡意行為。

Cosmos 網路的架構則完全不同。


Cosmos 網路不是使用本地/全域性模型來確保安全性的,而是讓每個區塊鏈都相對獨立,並且可以進行自我保護。每個區塊鏈都有自己的共識演算法,每個區塊鏈的驗證人也會單獨負責保護區塊鏈。Cosmos 網路使用“中樞-和-區域”模型實現互操作性,其中區域(獨立區塊鏈)可以透過中樞(也是獨立的區塊鏈)路由“將代幣”“傳送”到其他區域。該協議稱為IBC(區塊間通訊),它是用於在區塊鏈之間傳送訊息以表示代幣傳輸的協議。 IBC協議正在不斷完善,他們希望從代幣傳輸開始,最終可以支援區塊鏈之間傳遞任何型別的訊息。

如果將此模型與Polkadot進行比較的話,會發現這裡最大的區別就是每個區域的狀態都是由其驗證人單獨維護和保護的。如果某個區域想要具有比其他區域強大的安全性,則需要引入、或招募更多驗證人,這對於較小的應用程式來說可能會比較困難。然而,對於某些需要更多控制的應用來說,這絕對是一個很強大的賣點。以幣安為例,幣安透過將自己的節點作為幣安鏈(Binance Chain)的驗證人起點,然後自建了去中心化交易所(DEX)透過這種方式,幣安可以完全控制自己的區塊鏈,測試去中心化交易所,然後推出更多新功能。就目前來說,很難想象幣安鏈會放棄 “自主權”,他們可能更希望自己來決定哪些交易進入哪些區塊。如果建立在以太坊或Polkadot上,這種“自主權”肯定沒有那麼強。出於同樣的原因,相信未來會有類似的一批公司,比如Telegram、Facebook和Kakao等,都會選擇自己構建區塊鏈並保持完全的控制權,未來再把其他區塊連結入其中。

差異#2:治理 & 會員

Polkadot和Cosmos之間的第二個主要區別在於治理和會員資格。

在Polkadot網路裡,有一個獨立的中繼鏈和一些子鏈,子鏈是靠中繼鏈的驗證人提供支援。按照目前估計的資料,中繼鏈可以接入大約100個子鏈,單證數字未來會進一步擴大(當然也可能縮小)。中繼鏈會透過拍賣機制給接入的子鏈分配“插槽”(slot),在一定時間段內出價最高的人可以在權益證明系統中鎖定DOT(Polkadot的原生加密貨幣)來確保自己鎖定了一條平行鏈插槽。這意味著,如果你想要成為Polkadot網路中的一條平行鏈,就需要購買大量的DOT代幣並鎖定它們,否則你就無法持續使用這個平行鏈——這種模式更像是一種“會員制”,你需要付費入會(鎖定DOT代幣),才能享受會員利益(鎖定平行鏈)。

相比之下,Cosmos網路並沒有固定的會員規則。任何人都可以建立一個“中樞”或“區域”。中樞本身就是一個主權區塊鏈,旨在連線其他區塊鏈。最典型的兩個例子分別是Tendermint團隊推出的Cosmos Hub,以及計劃連線主要在中國和亞洲其他地區運營的區塊鏈的中樞Iris Hub。這種“中樞-和-區域”模式讓鏈間通訊變得更加高效,因為每個區塊鏈都不需要與其他區塊鏈連線,只需要連線到中樞即可。


與“會員”相關的另一個差異,是這兩個網路的治理流程。在Polkadot網路中,治理決策取決於選民持有的DOT代幣數量,他們正在建立一個正式的鏈上投票機制,但這個機制目前還沒有最終確定。除了常規的基於權益投票之外,Polkadot還設立了一個委員會來代表被動權益持有人(passive stakeholders),該委員會最初共有六個人,之後每兩週增加一人,直到24人。每個委員會委員都是透過批准投票選出的,雖然這種治理流程的具體細節還沒有最終確定,但目前他們會按照這種治理方式來處理中繼鏈中引數更改,比如調整區塊時間、區塊獎勵、以及平行鏈會員規則等。舉個例子,Polkadot治理流程能夠改變平行鏈拍賣機制所需的DOT代幣數量。不過,人們常常對這種治理機制有一種誤解,認為DOT代幣持有人可以透過投票把平行鏈“隨意”踢出去,但實際上DOT持幣人只能改變平行鏈的會員資質,而平行鏈在網路裡存在的時間其實取決於他們抵押在Polkadot網路裡的代幣時間長短。

另一方面,Cosmos網路則沒有一個單一的“治理”流程,這意味著每個“中樞”和“區域”內都有自己的治理流程,並沒有適用於整個區塊鏈網路的“中心化治理”規則。當人們談論“Cosmos治理”時,其實所指的是由Tendermint團隊發起的區塊鏈Cosmos Hub治理。Cosmos Hub有一套治理治理規則,允許任何人傳送文字提案,並允許Atom代幣之持有人對該提案進行投票,投票權取決於他們擁有的Atom代幣數量。Chorus One曾專門在其部落格上發文解釋了Cosmos Hub的治理規則,感興趣的可以去閱讀一下。

差異#3:鏈內通訊

Polkadot和Cosmos之間的另一個區別,是他們區塊鏈之間通訊協議的體系結構及其設計目標。Polkadot的目標是能夠在平行鏈之間任意傳遞訊息,這意味著平行鏈 A可以呼叫平行鏈B的智慧合約,繼而在區塊鏈之間傳輸代幣,或任何其他型別的通訊。另一方面,Cosmos專注於區塊鏈之間的資產轉移,這是一種更簡單的協議。目前,由於這兩種通訊協議都沒有完成構建,因此也沒有明確鏈內通訊規定,尚未構建。關於這兩個規範的更多細節可以在這裡找到:IBC(區塊鏈間通訊)和ICMP(平行鏈的鏈內訊息傳遞)。

然而,區塊鏈鏈內通訊的最大挑戰並不是如何在一個區塊鏈鏈上表示另一個區塊鏈鏈上的資料,而是如何處理來自其他分叉鏈的資料來源並重新組織、並排除其他區塊鏈的交易。從架構設計角度來看,這也是Cosmos和Polkadot兩者差異最大的地方。

Polkadot使用兩種不同的機制來保護區塊鏈的鏈間通訊。首先,Polkadot網路希望獲得共享安全性,並基於此來更輕鬆地交換訊息。不過共享安全性的“副作用”是所有平行鏈中必須要有統一的安全級別,這樣才能確保每個平行鏈可以相互信任。為了更好地去理解這一點,讓我們舉個在Verge區塊鏈(低安全性)和以太坊區塊鏈(高安全性)進行互操作的例子。如果我們想在Verge上“表示”以太坊,我們可以鎖定一部分以太坊(ETH)並在Verge區塊鏈上注入一些ETH-XVG代幣。但是,由於Verge區塊鏈的安全性較低,攻擊者可以對Verge區塊鏈實施51%攻擊並向以太坊區塊鏈傳送雙重支付,這樣駭客就能提取比他實際擁有的更多的以太坊。因此,高安全性的區塊鏈鏈在傳送鏈間資訊的時候很難信任低安全性的區塊鏈。不僅如此,如果訊息(或交易)在不同安全級別的多個區塊鏈之間傳遞的時候,情況將會變得更加複雜。

理論上,擁有統一的共享安全性是確保區塊鏈之間安全通訊的好方法。但是為了實現這一點,安全協議不得不經常隨機調整(shuffle)分配給每個平行鏈的驗證人,結果“資料可用性問題”也會隨之而來,即每個驗證人必須不斷下載、分配給自己的每個平行鏈狀態。事實上,這也是目前行業裡最難以解決的問題之一,我們還不清楚Polkadot網路會如何解決它。

其次,Polkadot使用了“漁民”驗證人的概念,這些漁民在Polkadot網路上扮演著“賞金獵人”的角色,他們的主要工作就是觀察平行鏈上的惡意活動。從某種意義上說,這是針對惡意活動的“第二道防線”。如果某個平行鏈的驗證人最終確定了無效區塊,“漁民”可以向中繼鏈提交證據並有效地回滾Polkadot網路的整個狀態以及其中的所有平行鏈。在鏈間通訊期間,我們最擔心的情況是一個區塊鏈正在重組,而另一個區塊鏈卻在正常進行,不過即便有這種情況,一旦發現了無效區塊,Polkadot會確保所有區塊都回滾。

另一方面,Cosmos網路採用了完全不同的方法來進行鏈間通訊。由於每個區塊鏈都有自己的驗證人,因此完全有可能出現這樣一種情況:即幾個驗證人勾結在一起創造了一個“邪惡”區域。這意味著當一個區域想要與另一個區域通訊時,區域A需要信任區域B中的Cosmos Hub(為了路由)和驗證人。理論上,這種方式聽起來效率低,因為區域A中的人員必須在向區域B傳送訊息之前查詢區域B裡的驗證人,但是在實際操作中應該不會那麼糟糕。一些知名驗證人(比如Polychain Labs、Zaki Manian的iqlusion)很可能會驗證許多不同的區塊鏈,而且已經在網路內建立了“良好驗證人”的聲譽。此時,當區域A看到區域B已經被Polychain Labs和iqlusion驗證過了,那麼就可以快速信任它。

然而,即使人們信任一個區塊鏈,它仍然可能被惡意行為者接管並導致出現問題。請參考下面這個例子:


在上圖中,我們假設每個小紅點代表一個叫做“ETM”的代幣,這個代幣是Ethermint區域內的原生貨幣。區域A、B和C裡額度使用者希望在自己區域內的某些應用程式中使用ETM代幣,並且他們也信任Ethermint區域,因此他們會執行IBC訊息,將ETM傳輸到這些區域。現在,我們假設Ethermint驗證人串通並開始雙重支出、任意移動代幣等惡意行為。顯然,這將對網路的其餘部分產生影響,因為ETM代幣也存在於不同的區域。然而,唯一受此影響的人是在Ethermint或其他區域內持有ETM代幣的人。需要注意的是,Ethermint區域中的惡意驗證人不可能任意破壞除自身以外的其他區域,而這也是Cosmos架構的安全目的——確保惡意行為不會影響整個網路。

相比之下,在Polkadot網路裡如果在中繼鏈(全域性狀態)下傳送無效狀態轉換、而且“漁民”也沒有發現這種情況,那麼就會影響整個網路內的所有區塊鏈。我們不能單純地假設每個平行鏈本質上是不同的區塊鏈,因為他們最終都會與網路內的其他區塊鏈共享一個全域性狀態。

差異#4:共識演算法

Polkadot網路中繼鏈使用的是GRANDPA團隊開發的共識演算法,該演算法允許中繼鏈快速完成處理來自全部平行鏈的許多區塊,而且還可以支援容納更多驗證人(超過1000個)。簡單來說,由於Polkadot網路內並非每個驗證人都需要對每個區塊進行投票,導致驗證人其實可以對自己認為有效的單個最高區塊進行投票,而且這個演算法可以把投票結果傳遞給該區塊的所有前繼區塊(ancestor)。在這種狀況下,Polkadot演算法會找到獲得“絕對多數”投票的區塊集合。現階段,GRANDPA仍處於開發階段,我們還不知道它在現實世界中的表現會如何。

平行鏈可以使用各種共識演算法最終形成一個區域性共識,Polkadot提供了一個軟體開發工具包(Substrate),它帶有3種開箱即用的共識演算法:GRANDPA,Rhododendron和Aurand。當然,未來可能會有更多共識演算法新增到Substrate中,並且支援在Polkadot網路中使用。

另一方面,Cosmos網路中的每個區塊鏈都可以使用任何共識演算法,但這些共識演算法必須符合一種被叫做ABCIspec的規範。建立這個規範的目的,是為了標準化區塊鏈之間的通訊。目前,只有Tendermint演算法符合此規範,但其他專案同樣可以建立符合此規範的其他共識演算法。如果站在一個較高階別的角度來看,Tendermint演算法的工作原理是讓每個驗證人相互通訊,確定是否批准/拒絕單個區塊,從而在每個區塊級別上達成一致性的最終結果。該演算法速度很快,並且在200個驗證人和6秒區塊時間的實時環境中進行了壓力測試。 Cosmos團隊也提供了一個軟體開發工具包,可以直接使用Tendermint演算法。這裡有一篇博文是對共識演算法的一個很好的入門,你也可以透過這篇文章瞭解其他有用的Tendermint特性。

不過,Tendermint最大的缺點是驗證人之間的通訊成本很高。這意味著當驗證人數量在200個左右的時候可以相當快地工作,但當驗證人數量達到2000之後就會慢得多。當然,魚和熊掌不可兼得,雖然處理速度會有所下降,但安全性可能會更好。這意味著在一個網路分割槽中,如果把兩個不同的交易歷史合併成一個,並且其中另一個會被丟棄的話,會導致網路暫停。這點非常重要,因為如果當你看到一筆“已完成”交易,意味著這筆交易永遠不會被撤銷,即便在最糟糕的網路條件下也不會。

對此,筆者個人的看法是,現在比較這兩個網路的共識演算法似乎並不是特別有用,你需要等待更長時間才能看到他們之間的優劣,因為目前絕大多數應用程式無論使用Tendermint還是使用Polkadot的共識演算法都應該可以正常工作。

差異#5:Substrate vs Cosmos 軟體開發包

Polkadot和Cosmos都提供了軟體開發工具包,一個叫“Substrate”,一個叫“Cosmos SDK”,它們都可以幫助開發人員更輕鬆地構建自己的區塊鏈。不僅如此,這兩個軟體開發工具包還包含了許多“開箱即用”的模組,比如治理模組(投票系統)、權益分配模組(staking modules)、身份驗證模組等。這兩個軟體開發工具包之間的主要區別在於Cosmos SDK支援Go,而Substrate支援任何編譯為WASM(Web Assembly)的語言,也為開發人員提供了更大的靈活性。

這兩個軟體開發工具包都可以構建全新的區塊鏈框架,而且會在未來幾年新增更多新功能。

總結

雖然這篇文章寫了很多東西,但其實並沒有把Cosmos和Polkadot之間的差異充分說明,因為很多細微差別其實是很難掌握、也很容易錯過的。所以,一般而言我們很難全面瞭解這兩個專案,畢竟他們現在都處於起步階段,預計明年可能會有較大發展,一些目前遇到的問題屆時也會得到充分解決。

總體而言,Polkadot對Cosmos的主要優勢有以下五點:

1、應用程式開發人員不需要自己考慮安全性;
2、如果可以解決資料可用性問題,則共享安全下的鏈內訊息傳遞會變得更容易;
3、Polkadot對Substrate(WASM,更多的共識演算法和開箱即用模組)很有信心;
4、專注於平行鏈之間智慧合同呼叫之間更好地進行訊息傳遞。(目前還不確定用例)
5、1.0版本的開發人員更多

Cosmos對Polkadot的主要優勢有以下六點,分別是:

1、Cosmos是實時的,Polkadot不是;
2、Polkadot有一個限制性的,成本也更昂貴的平行鏈會員流程;
3、對於某些特定專案(例如幣安),能夠提供更好的定製化支援;
4、Polkadot網路平行鏈內的惡意驗證人可以在整個網路中傳播腐敗,而Cosmos僅將腐敗限制在區域和相應的資產內;
5、Cosmos SDK已經被很多專案使用過了;
6、專注於更簡單、更輕鬆、更準確的資產轉移,而且已經有驗證過的用例了。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;