Cosmos 與 Polkadot 的五大區別

Cosmos 與 Polkadot 的五大區別

Cosmos 與 Polkadot 的五大區別

Ajian | 17. Jun, 2019 | 2411 次閱讀

引介 Polkadot Cosmos 跨鏈

Cosmos 和 Polkadot 都是關注區塊鏈互操作性的項目,關於二者之間的差別已經有過很多討論。如果你還不熟悉這兩個項目,Linda Xie 發過一串推特介紹過這兩個項目,可以作為很好的入門材料。

雖然已經有很多帖子分析過這兩個項目的區別了,但是我認為其中大部分都存在一定的偏向性或者不夠詳細。通過這篇帖子,我會從架構權衡到哲學等方面更深入地探討這兩個項目。

為什麼要構建一條新的區塊鏈?

為什麼一些項目要選擇從頭開始構建一條專門承載應用程序的區塊鏈,而不是以智能合約的形式在現有的區塊鏈上編寫應用程序呢?主要有以下兩點原因。

首先,現有的智能合約平臺不一定能滿足應用程序所需的靈活性和可定製性。舉例來說,如果你想搭建的應用程序需要自定義的哈希函數,那麼把它編寫到以太坊上會消耗很多 gas ,因為這個函數每調用一次都需要在以太坊虛擬機內執行一次。一種解決方案是提議將這個函數作為預編譯合約添加至以太坊協議內。但是,除非這個函數也廣泛應用於其它應用程序,否則這項提議大概率是不會通過的。從頭開始編寫一條新的區塊鏈,你就可以自由靈活地設計區塊鏈的核心邏輯,以此滿足你的應用程序的需求。

其次是自治問題。在智能合約平臺上構建的應用程序必須接受平臺的治理並遵守其規則,從區塊時間和 gas 定價之類影響用戶體驗的規則,到回滾之類改變狀態的決策等等。

但相應的,具有自治能力的鏈失去了與其它應用程序進行無縫通信的能力,因為應用程序都是搭建在使用不同狀態機的區塊鏈上。Cosmos 和 Polkadot 都致力於解決這個問題——Cosmos 採用的是 Hub-and-Zone(中心-分區) 模型,Polkadot 則採用的是Relay Chain/Parachain(中繼鏈/平行鏈)模型。

讀者需要對這兩個項目有一定的瞭解,本文側重於梳理二者的不同點。

1.局部安全 vs 全局安全

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

Cosmos 與 Polkadot 的五大區別

- Polkadot 的網絡架構-

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

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

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

Cosmos 與 Polkadot 的五大區別

- 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,旨在連接主要運行於中國或其它亞洲國家的區塊鏈 。這種中心-分區模型提高了跨鏈通信的效率,因為分區鏈只需要連接到中心,無需連接到其他每條鏈上。

Cosmos 與 Polkadot 的五大區別

-中心-分區模型可以更高效地連接多條鏈-

由於參與規則不同,這兩個網絡在治理流程上也存在差異。在 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 分區。

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

Cosmos 與 Polkadot 的五大區別

-代幣分散於不同分區的 Cosmos 網絡-

假設上圖中的小紅點代表一種名為 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. 重點關注如何降低資產轉移的難度。目前已經有經過驗證的用例。

感謝每一位不厭其煩為我答疑解惑的朋友,尤其是來自 Cosmos 團隊的 Zaki Manian 和 Gautier Marin ,以及來自 Polkadot 團隊的 Alistair Stewart 。NEAR Protocol (Alex Skidanov) 發佈的 Whiteboard Series 系列視頻很棒,對我理解這兩個項目給予了很大幫助。Linda Xie 整理出來的關於 Polkadot 和 Cosmos 的鏈接幫助我縮小了文章的範圍,讓這篇文章更具有可讀性。特別感謝 Cheryl Yeoh 在我撰寫本文的過程中為我提供的靈感和思路,並且對本文進行了審校。


分享到:


相關文章: