Cosmos和Polkadot是跨鏈兩大天王級項目,備受矚目,但其本身具有一定的理解難度,本文從五個角度對比Cosmos與Polkadot,為你詳解兩者本質區別,更好理解其特性。
關于Cosmos和Polkadot之間的差異一直有很多討論,這兩個項目側重于跨鏈。如果你不熟悉這兩個項目,那么這個推特風暴非常好地對它們進行了解釋,并提供了學習它們的一些資源。
盡管有很多文章解釋并強調兩者之間的差異,但是我相信今天大多數“Cosmos vs. Polkadot”的文章要么存有偏見,要么缺乏細微差別。這篇文章試圖對這兩個項目進行更深入的討論,從設計上的權衡到方法上的差異。
為什么要開發一個新的區塊鏈?
有兩個主要原因可以解釋為什么人們更愿意從頭開始開發特定應用的區塊鏈,而不是在現有的平臺上將應用以智能合約的形式存在。
首先,現有智能合約平臺可能無法提供你的應用程序所需的靈活性和可定制性。例如,如果你的應用程序需要自定義哈希函數,那么將其寫在以太坊上會花費很多的gas,因為每次調用它時都需要在EVM(以太坊虛擬機)上執行該函數。
一個選擇是建議以太坊協議將這個哈希函數作為預編譯合約納入其中,但是除非這個函數也在許多其他應用程序中被廣泛使用,要不然這一提議可能不會被批準。從頭開始編寫自己的區塊鏈讓您可以自由靈活地設計區塊鏈的核心邏輯,來滿足您的應用的特定需求。
第二個原因是自治。在一個智能合約平臺上開發應用程序會強迫您的應用程序遵守它的規則和管理。這可能包括影響用戶體驗的因素,比如出塊時間和gas價格,還有比如鏈上操作回滾這樣的狀態改變決策。
當然,獨立、自治的區塊鏈放棄了與其他應用程序無縫通信的能力,因為它們存在于具有不同狀態機的單獨的區塊鏈上。 Cosmos和Polkadot試圖解決這個問題;前者使用Hub-and-Zone模型,后者采用Relay Chain / Parachain模型。
這篇文章將介紹這兩個項目的大致知識,并將重點弄清楚它們之間的差異。
差異1:本地安全 vs. 全局安全
Cosmos和Polkadot在兩種截然不同的安全模型下運行。簡單地說,Polkadot的工作原理如下:
Parachains是Polkadot網絡中的區塊鏈。這些鏈有自己的狀態機,自己的規則,以及自己的本地區塊生產者(collators)。每個parachain本質上都是一個獨立的狀態機,可以使用任何類型的特有功能,共識算法,交易成本結構等。
在Polkadot網絡中,所有的parachain都是中繼鏈(Relay Chain)這個母鏈的子鏈,它包含所有parachain組合的“全局狀態”的某種表示。
中繼鏈有自己的共識算法GRANDPA,由它來快速地確定parachain鏈上的區塊。通過這個模型,Polkadot中的parachain運行在“共享安全”模式下 - 如果中繼鏈有1000個驗證者來提供高度的安全性,那么任一個parachain只要連接到中繼鏈就能獲得強大的安全保障。這可以讓子鏈對其狀態機和本地規則擁有自治權,以及與數百個其他鏈共享的強大安全保障。
這個模型的缺點是,中繼鏈中的驗證者對任一條parachain鏈中的狀態更改都有最終決定權。例如,驗證者可以出于某種原因一直拒絕來自某條鏈的collator的出塊,并永久地阻止這條鏈的進展被包括在全局狀態中。
Polkadot試圖通過打亂驗證者來減少這種情況的發生,以便于他們驗證隨機的parachain,這降低了特定的驗證者審查特定的鏈的可能性。 Polkadot還有另一類稱為Fishermen的驗證者,他們不斷檢查驗證者是否有惡意行為。
Cosmos Network的設計完全不一樣。
在Cosmos網絡中,不再使用本地/全局模型來保障安全,每個區塊鏈都是獨立的并且可以自我保護。每個區塊鏈都運行自己的共識算法,并且每個區塊鏈的驗證者獨自負責區塊鏈的安全。
Cosmos網絡使用hub-and-zone模型來實現互操作性,其中zone(獨立區塊鏈)可以通過hub(也是獨立的區塊鏈)“發送代幣”到其它的zone。這個協議稱為IBC(鏈間通信),它是在鏈之間發送消息來表示代幣傳遞的協議。 IBC協議還在開發中,首先解決的是代幣傳遞,最終可以在區塊鏈之間傳遞任何類型的消息。
將這個模型與Polkadot相比較,這里最大的差別是每個zone的狀態只由其驗證者來保障安全。如果zone想要具有強大的安全性,那么它需要自行完成并招募自己的驗證者,這對于小的應用程序可能比較困難。不過,對于某些需要更多控制權的應用來說,這是一個強大的賣點。
例如,Binance通過將自己的節點作為Binance Chain的驗證者作為起點來自行建立他們的DEX。通過這種方式,他們可以在測試DEX并推出新功能時對這個鏈有完全的控制權。
在我看來,很難想象Binance Chain會放棄對哪些交易進入哪個區塊的自治權,如果選擇在以太坊或Polkadot上開發,他們就將不得不這樣做。同樣,我相信這樣做的公司會不少,比如Telegram,Facebook,Kakao。
差異2:治理與會員
Polkadot和Cosmos之間的第二個主要區別是關于治理和成員資格。在Polkadot網絡中,有一個單獨的中繼鏈和一些中繼鏈的驗證者能夠支持的parachain。目前的估計是,將有100個parachain,但這個數字以后可以減少或增加。
Polkadot網絡通過拍賣機制為成為parachain分配時間 - 最高出價者能夠通過在PoS系統中鎖定DOT(Polkadot的原生加密貨幣)來保證一段固定時間內parachain的存在。這意味著要成為Polkadot網絡中的一個parachain,只要你想繼續作為parachain,你需要購買大量的DOT并鎖定。
另一方面,Cosmos 網絡沒有固定的成員規則 - 任何人都可以建立一個hub或zone。Hub本身就是自治的區塊鏈,其中設計了連接其他區塊鏈的功能。兩個例子是Cosmos Hub和Iris Hub,前者是最近由Tendermint團隊推出的,后者是一個計劃連接主要在中國和亞洲其他地區運行的區塊鏈的Hub。這種hub-and-zone模型使鏈間通信更加高效,因為不再是與每個其它區塊鏈相連接,而是只要與hub相連即可。
與成員資格密切相關的是兩個網絡的治理流程的不同。在Polkadot網絡中,治理決策由投票者持有的DOT數量決定。將有一個正式的鏈上投票機制,但還沒有最終確定。除了正常的權重投票,Polkadot還采用委員會作為被動利益相關者的代表。該委員會由一群人組成,開始時6個人,每兩周增加1人直到24人。
每個成員都經過投票同意選出來。盡管這個治理流程的具體細節還沒有最終確定,但其可能的結果是有多種方法來更改中繼鏈中的參數,例如出塊時間,出塊獎勵等,還有多種方法來改變parachain的成員資格。例如,Polkadot治理流程可能會改變所需的DOT數量或成為parachain的拍賣機制。
一個常見的誤解是,DOT持有者可以投票隨意踢出某些parachain,但實際上DOT持有者只能改變成為會員的過程。這意味著成為了parachain就可以在指定時間里保留這樣的資格。
另一方面,Cosmos 網絡并沒有唯一的“治理”過程。每個hub和zone都有自己的治理流程,并且沒有適用于整個區塊鏈網絡的最高規則。當人們談論“Cosmos的治理”時,他們指的是由Tendermint團隊推出的Cosmos Hub的治理。
Cosmos Hub有一套規則來讓任何人可以發送文本提案,并且Atom持有者被允許在其上進行投票,其中,投票的權重由他們擁有的Atom數量決定。
差異3:鏈間通信
Polkadot和Cosmos之間的另一個不同是它們的鏈間通信協議的結構及其設計目標。 Polkadot的目標是在并行鏈(parachains)之間傳遞任意消息。這意味著Parachain A可以調用Parachain B中的智能合約,可以在鏈之間發送代幣,或者進行其他類型的通信。
另一方面,Cosmos專注于不同鏈之間的資產轉移,這種協議更簡單。目前,這兩種通信協議都沒有完全確定,也都還沒有開發好。這方面的細節可以參考IBC(鏈間通信)和ICMP(parachain中的鏈間消息傳遞)。
鏈間通信的最大挑戰不是怎么樣在一個鏈上表示另一個鏈上的數據,而是如何處理鏈上出現數據來自分叉并且又重新組織來將交易排除在外的情況。這是由于結構設計上Cosmos和Polkadot最不同的地方。
Polkadot使用兩種不同的機制來保護鏈間通信。首先,共享安全模式的存在使得交換消息更容易。共享安全的附帶結果是所有的并行鏈都有統一的安全級別,因此每個鏈可以彼此信任。
為了理解這一點,我們來用Ethereum(高安全性)和Verge(低安全性)的互操作來舉例。如果我們想在Verge上表示 Ethereum,我們可以鎖定ETH并在Verge區塊鏈上挖一些ETH-XVG代幣。
不過,由于安全性較低,攻擊者可以對Verge鏈實施51%攻擊,并對以太坊區塊鏈發送雙花交易,這讓攻擊者可以取走比他實際擁有的更多的ETH。因此,在彼此發送消息時安全性高的鏈很難信任安全性低的鏈。當消息被傳送給到不同安全級別的多個不同鏈時,這就變得更加復雜。
理論上,統一的共享安全是一種保護鏈間通信的好方法。不過,為了實現這個目標,這個協議必須能夠經常并隨機地打亂分配給每個鏈的驗證者。這導致了經典的“數據可用性問題”,即每個驗證者必須不斷地下載分配給它的每個parachain的狀態。這是今天這一領域最困難的問題之一,目前還不清楚Polkadot能夠解決這個問題。
其次,Polkadot使用了Fishermen的概念,這些Fishermen是Polkadot網絡上的“賞金獵人”,他們觀察Parachains上的惡意行為。從某種意義上說,這是針對惡意行為的“第二道防線”。
在負責某個特定parachain的驗證者讓一個無效區塊不可逆轉的情況下,Fishermen可以向中繼鏈提交證據并有效地回滾Polkadot網絡的整個狀態以及其中的所有parachain。在鏈間通信階段,我們最擔心的是一個鏈重組,另一個照常運行,但是Polkadot確保,如果發現了無效的區塊,所有內容都會回滾。
Cosmos對鏈間通信采用了完全不同的方法。由于每個區塊鏈都有自己的驗證者,因此存在共謀的驗證者而“變異的”zone是完全有可能的。這意味著,當一個zone想要與另一個zone通信時,zone A需要信任Cosmos Hub(為了尋找連接路線)和zone B中的驗證者。
理論上,它聽起來效率低下,因為zone A中的人員在他們決定向zone B發送消息之前必須查找其中的驗證者,但我相信實際情況不會那么糟糕。 像Polychain Labs或Zaki Manian的iqlusion等“著名的”驗證者可能會驗證許多不同的區塊鏈,并且隨著時間的推移積累起“良好”的聲譽。這意味著當zone A明白zone B由Polychain Labs和iqlusion驗證時,他們就可能決定信任它。
不過,即使人們信任一個鏈,它仍然可能被惡意者接管并引發問題。讓我們看看一個演講中的例子:
比方說,這些小紅點表示一種ETM代幣(Ethermint zone的原生貨幣)。zone A,B和C中的用戶想將ETM用于這些zone內的一些應用程序,并且他們信任Ethermint zone,所以他們發送IBC消息來將ETM傳遞到這些zone。現在假設Ethermint驗證者共謀、發起雙花交易,隨意動用代幣等等。
這將對網絡的其余部分產生影響,因為ETM代幣也存在于不同的zone。不過,唯一將受此影響的是在Ethermint或其他zone內持有ETM代幣的人。 Ethermint中的惡意驗證者不可能隨意破壞除自身以外的其他zone。這是Cosmos設計的目的 - 確保惡意行為不會影響整個網絡。
相反,如果無效的狀態轉換發生在中繼鏈(全局狀態)上,并且沒有被Fishermen接收到,那么這可能會影響Polkadot網絡中的每個并行鏈。我們不能假設并行鏈都是明顯不同的,因為它們最終仍然與網絡的其余部分共用一個全局狀態。
差異4:共識算法
Polkadot 中繼鏈使用一個由GRANDPA團隊開發的共識算法。這個算法可以讓中繼鏈快速地確定所有并行鏈的許多區塊的最終狀態,并且還可以接受大量的驗證者(超過1000個)。
簡單來將,這是因為并非所有驗證者都需要對每個區塊進行投票 - 相反,驗證者可以對他們認為有效的、高度最高的區塊進行投票,并且這個算法可以將該投票傳遞給那個區塊的所有祖先。
通過這個過程,共識算法找到票數最多的區塊集合并認定它是最終有效的。 GRANDPA還處在開發階段,我們不知道它實際運行的情況將會怎么樣。
并行鏈可以使用各種共識算法來達成局部共識。 Polkadot提供了一個軟件開發工具包(Substrate),它帶有3種即裝即用的共識算法:GRANDPA,Rhododendron和Aurand。可能將會有更多算法添加到Substrate中,并且將在Polkadot網絡內供使用。
另一方面,Cosmos網絡中的每個區塊鏈都可以使用任一種符合稱為ABCI規范的共識算法。這個規范的創建是為了讓鏈間的通信標準化。目前,只有Tendermint算法符合這個規范,但現在還有其他的一些嘗試。
從高一些的層面來看,Tendermint算法的工作原理是讓每個驗證者彼此討論來同意/拒絕某個區塊,從而在每個區塊層面上確定其不可逆。這個算法速度很快,并且在“Game of Stakes“項目的具有200個驗證者和6秒出塊時間的實時環境中進行了壓力測試。
Cosmos團隊還提供了一個軟件開發工具包,其中的Tendermint算法可以即裝即用。Tendermint最大的缺點是驗證者之間很高的通信費用。這意味著盡管它可以用不到200個驗證者相當快速地工作,但使用2000個驗證者則會慢得多。不過,這里的權衡是通過異步方式你獲得了安全。
這意味著在一個網絡分區中,不再是有兩個最終將會合并的交易歷史(并且在這個過程中1個歷史將被丟棄),而是網絡將會停止。這很重要,因為如果你看到“確定了最終狀態”的交易,那么甚至在最糟的網絡狀況下它也不會被逆轉。
我個人對此的觀點是,在所使用的共識算法的基礎上比較這兩個項目長期來看并不是特別有用。這兩個項目都在還在開發中,將來都將會在其設計中使用許多不同的共識算法。今天的絕大多數應用程序應該都會運行良好,無論它們是用Tendermint還是使用Polkadot的共識算法中的一個。
差異5:Substrate vs Cosmos SDK
Polkadot和Cosmos都提供了一個軟件開發工具包,分別稱為Substrate和Cosmos SDK。它們的目的都在于讓開發人員能夠輕松開始構建自己的區塊鏈,并包含各種即裝即用的模塊,比如治理模塊(投票系統),抵押模塊,身份驗證模塊等等。
兩者之間的主要不同在于Cosmos SDK支持Go,而Substrate支持任何一種可以編譯為WASM(Web Assembly)的語言,這讓開發人員有了更多的靈活性。
結論
雖然這篇文章非常長、內容詳盡,但仍然沒有面面俱到。 Cosmos和Polkadot之間的差別不太好理解,并且有許多我可能漏掉的內容。很難全面了解這兩個項目,有時候它們的開發文檔每天都在變化。
這兩個項目仍處于開始階段,并將在明年開足馬力 - 我提出的一些問題可能很快就不再存在。總之,我開始相信Polkadot優于Cosmos的優勢如下:
1.應用程序開發人員不需要自己構建自己的安全機制
2.如果他們可以解決數據可用性,那么共享安全下的鏈間消息傳遞就更加容易
3.他們似乎對Substrate的期望非常高(WASM,更多的即裝即用的共識算法和模塊)
4.專注于更好地為跨合約調用提供任意類型的消息傳遞(現在還不確定用例)
5.似乎有更多的開發人員在開發1.0版本
相反,與Polkadot相比,Cosmos的優勢如下:
1.Cosmos在正式運行。Polkadot還沒有。
2.Polkadot的parachain會員資格是有限制的、并且可能成本非常高
3.對特定項目(例如,Binance) 有更多的定制性
4.parachain鏈的惡意驗證者可能會導致整個網絡的腐敗。 Cosmos將腐敗只限制在zone和相應的資產內
5.Cosmos SDK已經被許多項目使用
6.專注于更簡便,更容易地轉賬。今天已經有驗證過的用例。
評論
查看更多