Polkadot和Cosmos是目前最受大家關(guān)注的兩個明星項目,這兩個項目都以跨鏈而為大家所知,目前也有不少文章從某些角度對這兩個項目進行比較。其中,來自康奈爾大學計算機系的Julian Koh對這兩個項目的分析尤為條理清晰,相信這篇文章能夠幫助大家對這兩個項目有更加深入的了解和思考。
加密社區(qū)關(guān)于Cosmos和Polkadot之間的差異有過大量討論,這兩個項目都側(cè)重于區(qū)塊鏈的互操作性。如果你對這兩個項目還不太熟悉,不妨可以先訪問一下Linda Xie(@ljxie)的推特,上面有一個“推特頭腦風暴”較好地解釋了這兩個項目,還提供了一些學習資源。
盡管有很多帖子解釋并強調(diào)了兩者之間的差異,但老實說,我覺得社區(qū)里很多人其實沒有徹底理解“Cosmos vs Polkadot”之間的差異,有的存在偏見,有的忽略了細節(jié)。所以,我希望通過這篇文章對這兩個項目進行更深入的探討,包括架構(gòu)性權(quán)衡、哲學差異等。
那么,為什么要構(gòu)建一個新區(qū)塊鏈?
坦率地說,人們之所以更愿意從頭開始構(gòu)建特定應(yīng)用的區(qū)塊鏈而不是基于現(xiàn)有平臺編寫一個智能合約應(yīng)用程序,主要有兩個原因:
首先,如果你基于現(xiàn)有智能合約平臺可能無法為你的應(yīng)用程序提供所需的靈活性和定制化功能。舉個例子,如果你的應(yīng)用程序需要自定義哈希函數(shù),那么在以太坊區(qū)塊鏈上寫入的話可能需要支付很多gas費用,因為每次在以太坊虛擬機(EVM)上執(zhí)行的時候都需要調(diào)用一次函數(shù)。不僅如此,除非這個函數(shù)能夠在其他應(yīng)用程序中被廣泛使用,否則你的提案很可能不會被批準。相比之下,從頭開始編寫自己的區(qū)塊鏈,你可以自由靈活地設(shè)計區(qū)塊鏈核心邏輯,充分滿足自己的應(yīng)用需求。
第二個原因是“自主權(quán)”。在智能合約平臺上構(gòu)建應(yīng)用程序的時候,會迫使你必須遵循協(xié)議的規(guī)則和治理方案。在這種情況下,很多因素會影響到用戶體驗,比如阻塞時間、Gas定價、以及狀態(tài)變化決策(比如區(qū)塊鏈回滾)等。
如果使用具有自主權(quán)的獨立區(qū)塊鏈能夠為應(yīng)用程序提供無縫通信能力,因為這些應(yīng)用程序可以在獨立區(qū)塊鏈上的獨立狀態(tài)機(state machines)運行。 Cosmos和Polkadot都試圖解決這個問題,因此Cosmos帶來了“中樞-和-區(qū)域”(Hub-and-Zone)模型,Polkadot推出了“中繼鏈/平行鏈”(Relay Chain / Parachain)模型。
本文會介紹這兩個項目的大致情況,并會重點梳理這兩個項目之間的差異。
差異#1:本地化安全 vs. 全局化安全
Cosmos和Polkadot在兩種截然不同的安全模型下運行。簡單地說,Polkadot的工作原理如下:
平行鏈(Parachains)是Polkadot網(wǎng)絡(luò)中的區(qū)塊鏈,這些鏈有自己的狀態(tài)機、自己的規(guī)則、以及自己的本地區(qū)塊生成器(校對者)。各個平行鏈本質(zhì)上是一個獨立的狀態(tài)機,可以使用任何類型的獨立功能,一致性算法,交易成本結(jié)構(gòu)等。在Polkadot網(wǎng)絡(luò)中,所有平行鏈都是母鏈——也就是中繼鏈(Relay Chain)的子節(jié)點,而中繼鏈中包含了所有平行鏈中組合的“全局狀態(tài)”部分表示。中繼鏈有自己的共識算法:GRANDPA共識,該算法可以快速確定鏈中的區(qū)塊。通過這個模型,Polkadot網(wǎng)絡(luò)中的區(qū)塊鏈可以在“共享安全”模式下運行——如果中繼鏈具有1000個驗證器能夠保證高度安全,那么任何連接到中繼鏈的平行鏈都能受益于這種強大的安全性,同時子鏈對自己狀態(tài)機和其他本地規(guī)則的“自主權(quán)”不會受到任何影響,還能與數(shù)百個其他區(qū)塊鏈共享安全保護。
不過,這種模型的缺點是中繼鏈中的驗證器對任何鏈中的狀態(tài)變化都有最終決定權(quán)。舉個例子,中繼鏈的驗證者可以處于某些原因,不斷拒絕來自某個特定平行鏈的區(qū)塊,甚至可以永久地阻止該平行鏈被納入到全局狀態(tài)之中。為了避免出現(xiàn)這種情況,Polkadot網(wǎng)絡(luò)試圖通過改組驗證者來確保他們可以驗證隨機的平行鏈,大幅減少驗證某個特定平行鏈的可能性。此外,Polkadot網(wǎng)絡(luò)還設(shè)立了一類叫做“漁民”(Fishermen)的特殊驗證人,他們會不斷檢查驗證人是否存在惡意行為。
Cosmos 網(wǎng)絡(luò)的架構(gòu)則完全不同。
Cosmos 網(wǎng)絡(luò)不是使用本地/全局模型來確保安全性的,而是讓每個區(qū)塊鏈都相對獨立,并且可以進行自我保護。每個區(qū)塊鏈都有自己的共識算法,每個區(qū)塊鏈的驗證人也會單獨負責保護區(qū)塊鏈。Cosmos 網(wǎng)絡(luò)使用“中樞-和-區(qū)域”模型實現(xiàn)互操作性,其中區(qū)域(獨立區(qū)塊鏈)可以通過中樞(也是獨立的區(qū)塊鏈)路由“將代幣”“發(fā)送”到其他區(qū)域。該協(xié)議稱為IBC(區(qū)塊間通信),它是用于在區(qū)塊鏈之間發(fā)送消息以表示代幣傳輸?shù)膮f(xié)議。 IBC協(xié)議正在不斷完善,他們希望從代幣傳輸開始,最終可以支持區(qū)塊鏈之間傳遞任何類型的消息。
如果將此模型與Polkadot進行比較的話,會發(fā)現(xiàn)這里最大的區(qū)別就是每個區(qū)域的狀態(tài)都是由其驗證人單獨維護和保護的。如果某個區(qū)域想要具有比其他區(qū)域強大的安全性,則需要引入、或招募更多驗證人,這對于較小的應(yīng)用程序來說可能會比較困難。然而,對于某些需要更多控制的應(yīng)用來說,這絕對是一個很強大的賣點。以幣安為例,幣安通過將自己的節(jié)點作為幣安鏈(Binance Chain)的驗證人起點,然后自建了去中心化交易所(DEX)通過這種方式,幣安可以完全控制自己的區(qū)塊鏈,測試去中心化交易所,然后推出更多新功能。就目前來說,很難想象幣安鏈會放棄 “自主權(quán)”,他們可能更希望自己來決定哪些交易進入哪些區(qū)塊。如果建立在以太坊或Polkadot上,這種“自主權(quán)”肯定沒有那么強。出于同樣的原因,相信未來會有類似的一批公司,比如Telegram、Facebook和Kakao等,都會選擇自己構(gòu)建區(qū)塊鏈并保持完全的控制權(quán),未來再把其他區(qū)塊鏈接入其中。
差異#2:治理 & 會員
Polkadot和Cosmos之間的第二個主要區(qū)別在于治理和會員資格。
在Polkadot網(wǎng)絡(luò)里,有一個獨立的中繼鏈和一些子鏈,子鏈是靠中繼鏈的驗證人提供支持。按照目前估計的數(shù)據(jù),中繼鏈可以接入大約100個子鏈,單證數(shù)字未來會進一步擴大(當然也可能縮小)。中繼鏈會通過拍賣機制給接入的子鏈分配“插槽”(slot),在一定時間段內(nèi)出價最高的人可以在權(quán)益證明系統(tǒng)中鎖定DOT(Polkadot的原生加密貨幣)來確保自己鎖定了一條平行鏈插槽。這意味著,如果你想要成為Polkadot網(wǎng)絡(luò)中的一條平行鏈,就需要購買大量的DOT代幣并鎖定它們,否則你就無法持續(xù)使用這個平行鏈——這種模式更像是一種“會員制”,你需要付費入會(鎖定DOT代幣),才能享受會員利益(鎖定平行鏈)。
相比之下,Cosmos網(wǎng)絡(luò)并沒有固定的會員規(guī)則。任何人都可以建立一個“中樞”或“區(qū)域”。中樞本身就是一個主權(quán)區(qū)塊鏈,旨在連接其他區(qū)塊鏈。最典型的兩個例子分別是Tendermint團隊推出的Cosmos Hub,以及計劃連接主要在中國和亞洲其他地區(qū)運營的區(qū)塊鏈的中樞Iris Hub。這種“中樞-和-區(qū)域”模式讓鏈間通訊變得更加高效,因為每個區(qū)塊鏈都不需要與其他區(qū)塊鏈連接,只需要連接到中樞即可。
與“會員”相關(guān)的另一個差異,是這兩個網(wǎng)絡(luò)的治理流程。在Polkadot網(wǎng)絡(luò)中,治理決策取決于選民持有的DOT代幣數(shù)量,他們正在創(chuàng)建一個正式的鏈上投票機制,但這個機制目前還沒有最終確定。除了常規(guī)的基于權(quán)益投票之外,Polkadot還設(shè)立了一個委員會來代表被動權(quán)益持有人(passive stakeholders),該委員會最初共有六個人,之后每兩周增加一人,直到24人。每個委員會委員都是通過批準投票選出的,雖然這種治理流程的具體細節(jié)還沒有最終確定,但目前他們會按照這種治理方式來處理中繼鏈中參數(shù)更改,比如調(diào)整區(qū)塊時間、區(qū)塊獎勵、以及平行鏈會員規(guī)則等。舉個例子,Polkadot治理流程能夠改變平行鏈拍賣機制所需的DOT代幣數(shù)量。不過,人們常常對這種治理機制有一種誤解,認為DOT代幣持有人可以通過投票把平行鏈“隨意”踢出去,但實際上DOT持幣人只能改變平行鏈的會員資質(zhì),而平行鏈在網(wǎng)絡(luò)里存在的時間其實取決于他們抵押在Polkadot網(wǎng)絡(luò)里的代幣時間長短。
另一方面,Cosmos網(wǎng)絡(luò)則沒有一個單一的“治理”流程,這意味著每個“中樞”和“區(qū)域”內(nèi)都有自己的治理流程,并沒有適用于整個區(qū)塊鏈網(wǎng)絡(luò)的“中心化治理”規(guī)則。當人們談?wù)摗癈osmos治理”時,其實所指的是由Tendermint團隊發(fā)起的區(qū)塊鏈Cosmos Hub治理。Cosmos Hub有一套治理治理規(guī)則,允許任何人發(fā)送文本提案,并允許Atom代幣之持有人對該提案進行投票,投票權(quán)取決于他們擁有的Atom代幣數(shù)量。Chorus One曾專門在其博客上發(fā)文解釋了Cosmos Hub的治理規(guī)則,感興趣的可以去閱讀一下。
差異#3:鏈內(nèi)通信
Polkadot和Cosmos之間的另一個區(qū)別,是他們區(qū)塊鏈之間通信協(xié)議的體系結(jié)構(gòu)及其設(shè)計目標。Polkadot的目標是能夠在平行鏈之間任意傳遞消息,這意味著平行鏈 A可以調(diào)用平行鏈B的智能合約,繼而在區(qū)塊鏈之間傳輸代幣,或任何其他類型的通信。另一方面,Cosmos專注于區(qū)塊鏈之間的資產(chǎn)轉(zhuǎn)移,這是一種更簡單的協(xié)議。目前,由于這兩種通信協(xié)議都沒有完成構(gòu)建,因此也沒有明確鏈內(nèi)通信規(guī)定,尚未構(gòu)建。關(guān)于這兩個規(guī)范的更多細節(jié)可以在這里找到:IBC(區(qū)塊鏈間通信)和ICMP(平行鏈的鏈內(nèi)消息傳遞)。
然而,區(qū)塊鏈鏈內(nèi)通信的最大挑戰(zhàn)并不是如何在一個區(qū)塊鏈鏈上表示另一個區(qū)塊鏈鏈上的數(shù)據(jù),而是如何處理來自其他分叉鏈的數(shù)據(jù)源并重新組織、并排除其他區(qū)塊鏈的交易。從架構(gòu)設(shè)計角度來看,這也是Cosmos和Polkadot兩者差異最大的地方。
Polkadot使用兩種不同的機制來保護區(qū)塊鏈的鏈間通信。首先,Polkadot網(wǎng)絡(luò)希望獲得共享安全性,并基于此來更輕松地交換消息。不過共享安全性的“副作用”是所有平行鏈中必須要有統(tǒng)一的安全級別,這樣才能確保每個平行鏈可以相互信任。為了更好地去理解這一點,讓我們舉個在Verge區(qū)塊鏈(低安全性)和以太坊區(qū)塊鏈(高安全性)進行互操作的例子。如果我們想在Verge上“表示”以太坊,我們可以鎖定一部分以太坊(ETH)并在Verge區(qū)塊鏈上注入一些ETH-XVG代幣。但是,由于Verge區(qū)塊鏈的安全性較低,攻擊者可以對Verge區(qū)塊鏈實施51%攻擊并向以太坊區(qū)塊鏈發(fā)送雙重支付,這樣黑客就能提取比他實際擁有的更多的以太坊。因此,高安全性的區(qū)塊鏈鏈在發(fā)送鏈間信息的時候很難信任低安全性的區(qū)塊鏈。不僅如此,如果消息(或交易)在不同安全級別的多個區(qū)塊鏈之間傳遞的時候,情況將會變得更加復(fù)雜。
理論上,擁有統(tǒng)一的共享安全性是確保區(qū)塊鏈之間安全通信的好方法。但是為了實現(xiàn)這一點,安全協(xié)議不得不經(jīng)常隨機調(diào)整(shuffle)分配給每個平行鏈的驗證人,結(jié)果“數(shù)據(jù)可用性問題”也會隨之而來,即每個驗證人必須不斷下載、分配給自己的每個平行鏈狀態(tài)。事實上,這也是目前行業(yè)里最難以解決的問題之一,我們還不清楚Polkadot網(wǎng)絡(luò)會如何解決它。
其次,Polkadot使用了“漁民”驗證人的概念,這些漁民在Polkadot網(wǎng)絡(luò)上扮演著“賞金獵人”的角色,他們的主要工作就是觀察平行鏈上的惡意活動。從某種意義上說,這是針對惡意活動的“第二道防線”。如果某個平行鏈的驗證人最終確定了無效區(qū)塊,“漁民”可以向中繼鏈提交證據(jù)并有效地回滾Polkadot網(wǎng)絡(luò)的整個狀態(tài)以及其中的所有平行鏈。在鏈間通信期間,我們最擔心的情況是一個區(qū)塊鏈正在重組,而另一個區(qū)塊鏈卻在正常進行,不過即便有這種情況,一旦發(fā)現(xiàn)了無效區(qū)塊,Polkadot會確保所有區(qū)塊都回滾。
另一方面,Cosmos網(wǎng)絡(luò)采用了完全不同的方法來進行鏈間通信。由于每個區(qū)塊鏈都有自己的驗證人,因此完全有可能出現(xiàn)這樣一種情況:即幾個驗證人勾結(jié)在一起創(chuàng)造了一個“邪惡”區(qū)域。這意味著當一個區(qū)域想要與另一個區(qū)域通信時,區(qū)域A需要信任區(qū)域B中的Cosmos Hub(為了路由)和驗證人。理論上,這種方式聽起來效率低,因為區(qū)域A中的人員必須在向區(qū)域B發(fā)送消息之前查找區(qū)域B里的驗證人,但是在實際操作中應(yīng)該不會那么糟糕。一些知名驗證人(比如Polychain Labs、Zaki Manian的iqlusion)很可能會驗證許多不同的區(qū)塊鏈,而且已經(jīng)在網(wǎng)絡(luò)內(nèi)建立了“良好驗證人”的聲譽。此時,當區(qū)域A看到區(qū)域B已經(jīng)被Polychain Labs和iqlusion驗證過了,那么就可以快速信任它。
然而,即使人們信任一個區(qū)塊鏈,它仍然可能被惡意行為者接管并導(dǎo)致出現(xiàn)問題。請參考下面這個例子:
在上圖中,我們假設(shè)每個小紅點代表一個叫做“ETM”的代幣,這個代幣是Ethermint區(qū)域內(nèi)的原生貨幣。區(qū)域A、B和C里額度用戶希望在自己區(qū)域內(nèi)的某些應(yīng)用程序中使用ETM代幣,并且他們也信任Ethermint區(qū)域,因此他們會執(zhí)行IBC消息,將ETM傳輸?shù)竭@些區(qū)域。現(xiàn)在,我們假設(shè)Ethermint驗證人串通并開始雙重支出、任意移動代幣等惡意行為。顯然,這將對網(wǎng)絡(luò)的其余部分產(chǎn)生影響,因為ETM代幣也存在于不同的區(qū)域。然而,唯一受此影響的人是在Ethermint或其他區(qū)域內(nèi)持有ETM代幣的人。需要注意的是,Ethermint區(qū)域中的惡意驗證人不可能任意破壞除自身以外的其他區(qū)域,而這也是Cosmos架構(gòu)的安全目的——確保惡意行為不會影響整個網(wǎng)絡(luò)。
相比之下,在Polkadot網(wǎng)絡(luò)里如果在中繼鏈(全局狀態(tài))下發(fā)送無效狀態(tài)轉(zhuǎn)換、而且“漁民”也沒有發(fā)現(xiàn)這種情況,那么就會影響整個網(wǎng)絡(luò)內(nèi)的所有區(qū)塊鏈。我們不能單純地假設(shè)每個平行鏈本質(zhì)上是不同的區(qū)塊鏈,因為他們最終都會與網(wǎng)絡(luò)內(nèi)的其他區(qū)塊鏈共享一個全局狀態(tài)。
差異#4:共識算法
Polkadot網(wǎng)絡(luò)中繼鏈使用的是GRANDPA團隊開發(fā)的共識算法,該算法允許中繼鏈快速完成處理來自全部平行鏈的許多區(qū)塊,而且還可以支持容納更多驗證人(超過1000個)。簡單來說,由于Polkadot網(wǎng)絡(luò)內(nèi)并非每個驗證人都需要對每個區(qū)塊進行投票,導(dǎo)致驗證人其實可以對自己認為有效的單個最高區(qū)塊進行投票,而且這個算法可以把投票結(jié)果傳遞給該區(qū)塊的所有前繼區(qū)塊(ancestor)。在這種狀況下,Polkadot算法會找到獲得“絕對多數(shù)”投票的區(qū)塊集合。現(xiàn)階段,GRANDPA仍處于開發(fā)階段,我們還不知道它在現(xiàn)實世界中的表現(xiàn)會如何。
平行鏈可以使用各種共識算法最終形成一個局部共識,Polkadot提供了一個軟件開發(fā)工具包(Substrate),它帶有3種開箱即用的共識算法:GRANDPA,Rhododendron和Aurand。當然,未來可能會有更多共識算法添加到Substrate中,并且支持在Polkadot網(wǎng)絡(luò)中使用。
另一方面,Cosmos網(wǎng)絡(luò)中的每個區(qū)塊鏈都可以使用任何共識算法,但這些共識算法必須符合一種被叫做ABCIspec的規(guī)范。創(chuàng)建這個規(guī)范的目的,是為了標準化區(qū)塊鏈之間的通信。目前,只有Tendermint算法符合此規(guī)范,但其他項目同樣可以創(chuàng)建符合此規(guī)范的其他共識算法。如果站在一個較高級別的角度來看,Tendermint算法的工作原理是讓每個驗證人相互通信,確定是否批準/拒絕單個區(qū)塊,從而在每個區(qū)塊級別上達成一致性的最終結(jié)果。該算法速度很快,并且在200個驗證人和6秒?yún)^(qū)塊時間的實時環(huán)境中進行了壓力測試。 Cosmos團隊也提供了一個軟件開發(fā)工具包,可以直接使用Tendermint算法。這里有一篇博文是對共識算法的一個很好的入門,你也可以通過這篇文章了解其他有用的Tendermint特性。
不過,Tendermint最大的缺點是驗證人之間的通信成本很高。這意味著當驗證人數(shù)量在200個左右的時候可以相當快地工作,但當驗證人數(shù)量達到2000之后就會慢得多。當然,魚和熊掌不可兼得,雖然處理速度會有所下降,但安全性可能會更好。這意味著在一個網(wǎng)絡(luò)分區(qū)中,如果把兩個不同的交易歷史合并成一個,并且其中另一個會被丟棄的話,會導(dǎo)致網(wǎng)絡(luò)暫停。這點非常重要,因為如果當你看到一筆“已完成”交易,意味著這筆交易永遠不會被撤銷,即便在最糟糕的網(wǎng)絡(luò)條件下也不會。
對此,筆者個人的看法是,現(xiàn)在比較這兩個網(wǎng)絡(luò)的共識算法似乎并不是特別有用,你需要等待更長時間才能看到他們之間的優(yōu)劣,因為目前絕大多數(shù)應(yīng)用程序無論使用Tendermint還是使用Polkadot的共識算法都應(yīng)該可以正常工作。
差異#5:Substrate vs Cosmos 軟件開發(fā)包
Polkadot和Cosmos都提供了軟件開發(fā)工具包,一個叫“Substrate”,一個叫“Cosmos SDK”,它們都可以幫助開發(fā)人員更輕松地構(gòu)建自己的區(qū)塊鏈。不僅如此,這兩個軟件開發(fā)工具包還包含了許多“開箱即用”的模塊,比如治理模塊(投票系統(tǒng))、權(quán)益分配模塊(staking modules)、身份驗證模塊等。這兩個軟件開發(fā)工具包之間的主要區(qū)別在于Cosmos SDK支持Go,而Substrate支持任何編譯為WASM(Web Assembly)的語言,也為開發(fā)人員提供了更大的靈活性。
這兩個軟件開發(fā)工具包都可以構(gòu)建全新的區(qū)塊鏈框架,而且會在未來幾年添加更多新功能。
總結(jié)
雖然這篇文章寫了很多東西,但其實并沒有把Cosmos和Polkadot之間的差異充分說明,因為很多細微差別其實是很難掌握、也很容易錯過的。所以,一般而言我們很難全面了解這兩個項目,畢竟他們現(xiàn)在都處于起步階段,預(yù)計明年可能會有較大發(fā)展,一些目前遇到的問題屆時也會得到充分解決。
總體而言,Polkadot對Cosmos的主要優(yōu)勢有以下五點:
1、應(yīng)用程序開發(fā)人員不需要自己考慮安全性;
2、如果可以解決數(shù)據(jù)可用性問題,則共享安全下的鏈內(nèi)消息傳遞會變得更容易;
3、Polkadot對Substrate(WASM,更多的共識算法和開箱即用模塊)很有信心;
4、專注于平行鏈之間智能合同調(diào)用之間更好地進行消息傳遞。(目前還不確定用例)
5、1.0版本的開發(fā)人員更多
Cosmos對Polkadot的主要優(yōu)勢有以下六點,分別是:
1、Cosmos是實時的,Polkadot不是;
2、Polkadot有一個限制性的,成本也更昂貴的平行鏈會員流程;
3、對于某些特定項目(例如幣安),能夠提供更好的定制化支持;
4、Polkadot網(wǎng)絡(luò)平行鏈內(nèi)的惡意驗證人可以在整個網(wǎng)絡(luò)中傳播腐敗,而Cosmos僅將腐敗限制在區(qū)域和相應(yīng)的資產(chǎn)內(nèi);
5、Cosmos SDK已經(jīng)被很多項目使用過了;
6、專注于更簡單、更輕松、更準確的資產(chǎn)轉(zhuǎn)移,而且已經(jīng)有驗證過的用例了。
評論
查看更多