Cosmos 與 Polkadot 的五大區別

買賣虛擬貨幣
Cosmos 和 Polkadot 都是關注區塊鏈互操作性的專案,關於二者之間的差別已經有過很多討論。如果你還不熟悉這兩個專案,Linda Xie 發過一串推特介紹過這兩個專案,可以作為很好的入門材料。雖然已經有很多帖子分析過這兩個專案的區別了,但是我認為其中大部分都存在一定的偏向性或者不夠詳細。透過這篇帖子,我會從架構權衡到哲學等方面更深入地探討這兩個專案。為什麼要構建一條新的區塊鏈?為什麼一些專案要選擇從頭開始構建一條專門承載應用程式的區塊鏈,而不是以智慧合約的形式在現有的區塊鏈上編寫應用程式呢?主要有以下兩點原因。首先,現有的智慧合約平臺不一定能滿足應用程式所需的靈活性和可定製性。舉例來說,如果你想搭建的應用程式需要自定義的雜湊函式,那麼把它編寫到以太坊上會消耗很多 gas ,因為這個函式每呼叫一次都需要在以太坊虛擬機器內執行一次。一種解決方案是提議將這個函式作為預編譯合約新增至以太坊協議內。但是,除非這個函式也廣泛應用於其它應用程式,否則這項提議大概率是不會透過的。從頭開始編寫一條新的區塊鏈,你就可以自由靈活地設計區塊鏈的核心邏輯,以此滿足你的應用程式的需求。其次是自治問題。在智慧合約平臺上構建的應用程式必須接受平臺的治理並遵守其規則,從區塊時間和 gas 定價之類影響使用者體驗的規則,到回滾之類改變狀態的決策等等。
但相應的,具有自治能力的鏈失去了與其它應用程式進行無縫通訊的能力,因為應用程式都是搭建在使用不同狀態機的區塊鏈上。Cosmos 和 Polkadot 都致力於解決這個問題——Cosmos 採用的是 Hub-and-Zone(中心-分割槽) 模型,Polkadot 則採用的是Relay Chain/Parachain(中繼鏈/平行鏈)模型。讀者需要對這兩個專案有一定的瞭解,本文側重於梳理二者的不同點。1.區域性安全 vs 全域性安全

Cosmos 和 Polkadot 採用的安全模型差別極大。簡單來說,Polkadot 的工作流程如下:

平行鏈是 Polkadot 網路中的區塊鏈。這些鏈有自己的狀態機、自己的規則和自己的區塊生產者,即核驗人(collators)。每條平行鏈本質上都是一個獨立的狀態機,而且可以使用任何型別的特殊功能、共識演算法、交易手續費結構等等。在 Polkadot 網路中,所有平行鏈都有同一條母鏈,叫做中繼鏈,裡面包含了由所有平行鏈組成的 “全域性狀態”。中繼鏈擁有自己的共識演算法,叫做 GRANDPA 共識(祖父共識),可以迅速將平行鏈上的區塊確定下來。透過這個模型,Polkadot 的平行鏈實現了 “安全性共享”——如果中繼鏈上有 1000 名驗證者,具有極高的安全性,凡是連線到這條中繼鏈的平行鏈都會受益。這樣一來,平行鏈即能擁有自己的狀態機並自定義規則,又能與成百上千條平行鏈一起共享母鏈的安全性。

這種模型的罩門在於由中繼鏈上的驗證者來驗證平行鏈上的狀態改變。例如,驗證者可能會出於某種原因一直拒絕某條鏈上的核驗人提議的區塊,而且這條中繼鏈上的區塊永遠無法被新增進全域性狀態。為了儘量避免這種情況,Polkadot 對驗證者進行混洗,讓他們隨機驗證平行鏈,降低同一位驗證者始終驗證同一條平行鏈的概率。Polkadot 還另設有一類被稱為 Fishermen (漁夫)的驗證者,他們會不斷查驗驗證者是否存在惡意行為。

Cosmos 採用了完全不同的網路架構。

在 Cosmos 網路中,每條鏈都是獨立執行的,並設有自己的安全機制,而非像 Polkadot 那樣採用 區域性/全域性 的安全性模型。每條鏈都有自己的共識機制,而且由單獨的驗證者來負責保護這條鏈的安全性。Cosmos 網路使用中心-分割槽模型來實現互操作性,每個分割槽(獨立的鏈)都可以透過中心(同樣是一條獨立的鏈)向其它分割槽 “傳送代幣”。這個協議被稱為 IBC (跨鏈通訊),是鏈與鏈之間透過傳送訊息實現代幣轉賬的協議。IBC 協議尚在開發之中,最開始先支援代幣轉賬,最終會支援各類訊息的跨鏈傳遞。

相比於 Polkadot 的架構而言,Cosmos 的架構最大的不同之處在於,每個分割槽的狀態僅由各自的驗證者保護。一個分割槽想要獲得很強的安全性,就需要建立自己的驗證者集,這對於小型應用程式來說會比較困難。不過,對於那些想要獲得更多控制權的應用程式來說,這是個很大的亮點。例如,幣安最開始就是用自己的節點來充當幣安鏈的驗證者,來促進去中心化交易所的持續執行。這樣一來,幣安在測試幣安鏈並增加新功能的時候就有了充分的控制權。我覺得幣安不太可能放棄決定哪些交易可以上鍊的權力,但若要在以太坊或 Polkadot 平臺上開發,就不能不放棄這樣的權力。正因如此,我認為 Telegram、Facebook 和 Kakao 這類公司會選擇構建自己的區塊鏈並掌握其控制權,未來也不太可能與別的鏈通訊。

2. 治理和參與

Polkadot 和 Cosmos 之間的第二個主要差別在於治理和參與。在 Polkadot 網路中,只有一條中繼鏈和一些與這條中繼鏈共享驗證者的平行鏈。根據目前的估算,平行鏈的數量上限為 100 條,不過未來有可能減少或增加。Polkadot 網路透過拍賣機制來競拍平行鏈的使用權——出價最高的人需要在 PoS 系統中鎖定一定數量的 DOT (Polkadot 上的原生貨幣),才可以在一定時間段內擁有所拍得平行鏈的使用權。這意味著要想使用 Polkadot 上的平行鏈,需要購買並鎖定大量 DOT ,直到不想再使用這條平行鏈為止。

Cosmos 網路沒有設定固定的參與規則——任何人都可以建立中心或分割槽。中心就是具有自治能力的區塊鏈,專門用來連線其它區塊鏈。這裡有兩個例子,一個是 Cosmos Hub,最近已由 Tendermint 團隊上線;另一個是 Iris Hub,旨在連線主要執行於中國或其它亞洲國家的區塊鏈 。這種中心-分割槽模型提高了跨鏈通訊的效率,因為分割槽鏈只需要連線到中心,無需連線到其他每條鏈上。

由於參與規則不同,這兩個網路在治理流程上也存在差異。在 Polkadot 網路中,治理決策取決於投票者所質押的 DOT 數量。關於鏈上投票會有一套正式機制,不過尚未最終確定下來,點選此處可瞭解最新進展。除了採取以質押量決定投票權重的機制之外,Polkadot 還組建了一個委員會來代表不活躍的權益持有者。委員會最開始由 6 人組成,每兩週增加 1 人,直到滿 24 人為止。每位委員會成員均透過贊成投票的方式選出。治理流程的具體細節尚未敲定,也就是說有很多方法可以改變中繼鏈的引數,如出塊時間、區塊獎勵等,以及平行鏈的參與規則。例如,Polkadot 的治理流程可以改變平行鏈使用權的競拍機制或所需的 DOT 數量。有一種常見的誤解是 DOT 持有者可以透過投票隨意棄用某條平行鏈。實際上,DOT 持有者只能改變參與流程。也就是說一旦競拍下了某條平行鏈,在整個租期之內都享有這條鏈的使用權。

另一方面,Cosmos 網路不存在單一的 “治理”流程。每個中心和分割槽都有自己的治理流程,因此沒有一套應用於整個系統內所有鏈的核心規則。我們所說的“Cosmos 治理”指的都是 Cosmos Hub 的治理,即由 Tendermint 團隊上線的那條鏈。Cosmos Hub 的規則是,任何人都可以傳送一個文字提議,由 ATOM 持有者進行投票表決,ATOM 的質押量決定了投票權重。想知道提議長什麼樣子,這裡有個例子。如果你想深入瞭解治理流程的話,可以閱讀一下 Chorus One 釋出的這篇帖子,是瞭解 Cosmos Hub 治理機制的入門材料。

3.跨鏈通訊

Polkadot 和 Cosmos 之間的另一個差別是跨鏈通訊協議及其設計目標。Polkadot 旨在實現平行鏈之間任意的訊息傳遞。也就是說,平行鏈 A 可以呼叫平行鏈 B 中的智慧合約,實現與平行鏈 B 之間的代幣轉賬或是其他型別的通訊。Cosmos 則聚焦於跨鏈資產轉移,其協議較為簡單。目前,這兩種通訊協議仍待完善細則,而且尚未構建完成。可以檢視 IBC(跨鏈通訊)和 ICMP (平行鏈之間的跨鏈通訊)這兩種協議的細則。

跨鏈通訊所面臨的最大挑戰不是如何將一條鏈上的資料在另一條鏈上表示出來,而是如何處理鏈分叉和鏈重組這樣的情況。這是 Cosmos 和 Polkadot 在構架設計上最大的差異。

為了確保跨鏈通訊的安全性,Polkadot 採用了兩種不同的機制。首先是安全性共享機制,降低了資訊交換的難度。 共享安全性的另一個好處是所有平行鏈都位於同一個安全層級,因此每條鏈可以彼此信任。為便於理解,我們以以太坊(安全性較高)和 Verge(安全性較低)的互動操作為例。若想在 Verge 鏈上表示以太坊,我們可以鎖定一些以太坊,然後在 Verge 鏈上生成 ETH-XVG 代幣。然而,由於 Verge 鏈的安全性較低,攻擊者可能會向 Verge 鏈發動 51% 攻擊,並向以太坊區塊鏈傳送雙花交易,就可以取回比實際擁有數量更多的以太幣。因此,在互相傳送訊息的時候,安全性較高的鏈很難信任安全性較低的鏈。如果是在安全層級各不相同的鏈之間互傳訊息,情況就會變得更加複雜。

從理論上來說,共享安全性是一種保障跨鏈通訊的良好方式。前提是,這種協議要確保能夠經常對驗證者進行混洗,再隨機分配到各條平行鏈上。這就會造成經典的 “資料可用性問題”,即每次驗證者被分配到新的平行鏈上,就需要下載新鏈的狀態。這是目前區塊鏈領域最大的難題之一,Polkadot 能否解決尚未可知。

其次,Polkadot 引入了 Fisherman(漁夫)的概念,也就是 Polkadot 網路上的 “賞金獵人”,專門監視平行鏈上的惡意行為。從某種意義上來說,這是抵禦惡意行為的“第二道防線”。如果某條平行鏈的驗證者將一個無效塊上鍊,Fisherman 發現後可以向中繼鏈提交證明,將包括所有平行鏈在內的整個 Polkadot 網路的狀態進行回滾。在跨鏈通訊期間,最令我們擔心的莫過於一條鏈在重組,另一條鏈卻執行如常。Polkadot 就避免了這個問題,一旦發現無效塊上鍊,整個網路都會回滾。

Cosmos 採用了完全不同的跨鏈通訊方式。因為每條鏈上都有自己的驗證者,所以很有可能會出現分割槽中的驗證者串謀的情況。也就是說,如果有兩個分割槽需要通訊,A 分割槽需要必須信任 Cosmos Hub(通訊樞紐)以及 B 分割槽中的驗證者。從理論上來說,A 分割槽的人在決定向 B 分割槽傳送資訊之前,需要調查一下 B 分割槽的驗證者。不過我覺得實際情況沒那麼糟糕。 Polychain Labs 或 Zaki Manian 的 iqlusion 等知名驗證者節點可能會驗證多條鏈,逐漸建立起良好的聲譽。也就是說,當 A 分割槽的人看到 B 分割槽是由 Polychain Labs 和 iqlusion 驗證的,可能會因此決定信任 B 分割槽。

然而,即使一條鏈得到了人們的信任,也有可能被懷有惡意的攻擊者控制,出現各種問題。有一段對話中提到了一個很好的例子:

假設上圖中的小紅點代表一種名為 ETM 的代幣,即 Ethermint 分割槽的原生代幣。A、B、C 三個分割槽的使用者想要使用 ETM 來執行各自分割槽內的一些應用程式,而且他們都信任 Ethermint 分割槽,因此透過跨鏈通訊在各自的分割槽內接受了一些 ETM 。現在假設 Ethermint 分割槽的驗證者串謀發動雙花攻擊,任意轉移 ETM 代幣。這也會對剩餘網路造成影響,因為 ETM 代幣也存在於其他分割槽中。不過受波及的只有 Ethermint 或其他分割槽中的 ETM 代幣持有者。Ethermint 分割槽中的惡意驗證者只能毀掉自己的分割槽,破壞不了其他分割槽。這就是 Cosmos 架構的目標——確保惡意行為無法影響整個網路。

Polkadot 則不同。如果中繼鏈(全域性狀態)上發生了無效狀態更新,又沒被 Fisherman 發現的話,Polkadot 網路中的每條平行鏈都會受到影響。平行鏈不能被看作是完全不同的東西,畢竟它們都共享同一個全域性狀態。

4.共識演算法

Polkadot 中繼鏈採用的是 GRANDPA 共識演算法。這個演算法能讓中繼鏈迅速確定來自所有平行鏈的區塊,並且容納大量驗證者(1000 名以上)。簡單來說,這是因為並非所有驗證者都需要對每一個區塊進行投票——他們可以只需為自己認為有效的某個區塊投票,相當於這個區塊之前的所有區塊也都得到了認可。透過這種方式,GRANDPA 演算法可以找出一組得票數最多的區塊,並將這組區塊確定了下來。該演算法仍處於開發之中,尚不知實際會如何執行。

平行鏈可以採用不同的共識演算法達成區域性共識。Polkadot 提供一個軟體開發工具包(Substrate),其中包括 GRANDPA、Rhododendron 和 Aurand 三種開箱即用的共識演算法。今後可能會有更多演算法被加入 Substrate ,皆可應用於 Polkadot 網路。

在 Cosmos 網路中,每條鏈可以選用的共識演算法有很多,只要是符合 ABCI 規範的共識演算法即可。 ABCI 規範旨在實現跨鏈通訊的標準化。目前只有 Tendermint 演算法符合這個規範,還有另一些團隊也在努力開發符合該規範的其他共識演算法。從更抽象的層面上來看,Tendermint 演算法的原理是讓每位驗證者都能互相通訊,共同決定一個區塊能否上鍊,這樣就能實現單一區塊層面上的確定性。該演算法的速度很快,而且透過了 200 名驗證者的壓力測試,在 Game of Stakes(權益爭奪賽)中的出塊時間為 6 秒。Cosmos 團隊也提供了一個軟體開發工具包,裡面包含了開箱即用的 Tendermint 演算法。這篇文章很好地介紹了共識演算法,以及 Tendermint 演算法的功能。

Tendermint 演算法最大的缺點是驗證者之間的通訊成本高很高。也就是說,雖然驗證者人數在 200 左右的時候,演算法的執行速度很快,一旦人數漲到了 2000 ,速度就會慢得多。另一方面需要權衡的是非同步環境中的安全性。也就是說,在出現網路分割槽之時,不會出現兩個不同的交易歷史最終合併成一個(而另一個交易歷史被拋棄)的情況,而是整個網路都將停止執行。這點非常重要,一旦一筆交易得到了“最終確認”,即使是在最差的網路環境下也不會被撤銷。

我的個人觀點是,基於共識演算法來比較這兩個專案沒什麼長遠意義。這兩個專案的構架未來都將接受不同的共識演算法。如今的絕大多數應用不管使用的是 Tendermint 演算法還是 Polkadot 的某個共識演算法都可以良好執行。

5.Substrate vs Cosmos SDK

Polkadot 和 Cosmos 都提供軟體開發工具包,分別叫作 Substrate 和 Cosmos SDK 。二者的目的都是為了便於開發者搭建自己的區塊鏈,其中包括各種開箱即用的模組,例如治理模組(投票系統)、質押模組和認證模組等。這兩個工具包最主要的區別在於,Cosmos SDK 僅支援 Go 語言,而 Substrate 支援任何可編譯為 WASM (Web Assembly) 的語言,給予了開發者更多靈活性。

這兩個工具包都是構建區塊鏈的全新框架,未來幾年還將新增更多功能。關於這兩個工具包的深度剖析以及使用這兩個工具包開發應用程式的詳細體驗需要另外寫一篇文章了。如果你感興趣的話,請在推特上給我 @juliankoh 留言。

結論

雖然這篇文章篇幅很長,寫的也很詳細,但是依然有所疏漏。Cosmos 和 Polkadot 之間的不同點很難把握,可能還有很多細節我沒有捕捉到。要全方位瞭解這兩個專案絕非易事,畢竟專案檔案隨時都可能改動。這兩個專案尚在起步階段,未來一年將得到極大的發展——我在上文中提到的幾個點可能很快就不成立了。總而言之,我認為 Polkadot 相比 Cosmos 主要有以下幾個優勢:

1. 應用程式開發者不需要自己維護安全性
2. 共享安全性模型下的跨鏈通訊更容易解決資料可用性問題
3. Substrate(在 WASM、更多共識演算法和開箱即用模組方面)表現出很大的野心
4. 相比跨平行鏈的合約呼叫更側重於不限型別的資訊傳遞(這一用例目前尚不明確)
5. 1.0 版本的開發者似乎多一些

反過來,Cosmos 相比 Polkadot 主要有以下幾個優勢:

1. Cosmos 已經上線了,Polkadot 還沒上線
2. Polkadot 的平行鏈參與流程限制性更強,而且成本更高
3. 更能滿足特定專案(如幣安)對自定義的需求
4. 平行鏈上驗證者的惡意行為會波及整個網路。在 Cosmos 網路中,惡意行為只能破壞個別分割槽和資產
5. 已經有很多專案在使用 Cosmos SDK 了
6. 重點關注如何降低資產轉移的難度。目前已經有經過驗證的用例。

免責聲明:

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

推荐阅读

;