概述
Polkadot和Cosmos都是提供不同狀態機之間通信接口的協議。
這兩個協議都基於這樣一個論點:未來將有多個區塊鏈需要相互操作,而不是單獨存在於孤立中的單條區塊鏈。
模型
Polkadot採用分片模型,在該協議中,每個分片都有一個抽象狀態轉換函數(STF)。
Polkadot使用WebAssembly(Wasm)作爲“元協議”。只要Polkadot上的驗證者可以在Wasm環境中執行它,分片的STF就可以是抽象的。
編者注:
在Polkadot上,不同的平行鏈可以安全地交換任何類型的數據或資產,實現區塊鏈之間的互操作性。
爲了實現這種互操作性,Polkadot需要一種統一的方式來描述和執行不同平行鏈上的狀態變化。
狀態是區塊鏈上存儲的數據,比如账戶余額、合約代碼、交易記錄等。
狀態轉換函數(STF)是一種規定了如何從一個狀態轉換到另一個狀態的函數,比如通過驗證交易、更新账戶余額、執行合約代碼等。
Polkadot使用WebAssembly(Wasm)作爲一種“元協議”,也就是一種用來定義其他協議的協議。
Wasm是一種通用的二進制格式,可以在不同的平台和環境中運行。
Polkadot允許每個平行鏈使用自己喜歡的編程語言和邏輯來定義自己的STF。
只要它們能夠編譯成Wasm格式,並且能夠被Polkadot上的驗證者在Wasm環境中執行。
這樣,Polkadot就可以保證不同平行鏈之間的兼容性和安全性。
通俗易懂地說,Polkadot就像一個大火車站,它可以讓不同的火車(平行鏈)在同一個軌道(Relay Chain)上運行,並且可以讓乘客(數據或資產)在不同的火車之間轉乘。
爲了讓火車站能夠管理和調度這些火車,它需要有一個統一的標准來了解每個火車上發生了什么事情(狀態轉換)。
這個標准就是Wasm,它可以讓火車站用同樣的方式來讀取和執行每個火車上發生的事情,無論這些火車是用什么樣的語言和邏輯來設計的。
Polkadot的分片被稱爲“平行鏈”。每當平行鏈想進行狀態轉換時,它會提交一個區塊(一批狀態轉換)以及一個狀態證明,供Polkadot驗證者獨立驗證。
當它們被Polkadot的中繼鏈(系統的主鏈)確認後,這些區塊就對於平行鏈來說是最終確定的。
因此,所有平行鏈與整個系統共享狀態,這意味着單個平行鏈的鏈重組將需要重新組織所有平行鏈和中繼鏈。
Cosmos使用連接Tendermint鏈的bridge-hub模型。該系統可以有多個Hub(其中主要的是“Cosmos Hub”),但每個Hub連接一組外部鏈,稱爲“Zone”。
每個Zone負責通過足夠抵押和去中心化驗證者集來保護鏈。Zone使用稱爲Inter-Blockchain Communication(IBC)的協議通過Hub互相發送消息和通證。
由於Zone不共享狀態,因此一個Zone的重新組織不會重新組織其他區域,這意味着每條消息的可信性取決於接收者對於發送方安全性的信任。
結構
Polkadot
Polkadot有一個中繼鏈作爲系統的主鏈。Polkadot中的所有驗證者都已开啓中繼鏈。
平行鏈有整理者(Collator),他們構建並提出平行鏈區塊驗證者。整理者沒有任何安全責任,因此不需要強大的激勵制度。
每6秒鐘整理者可以爲每個中繼鏈區塊提交一個平行鏈區塊。一旦平行鏈提交一個區塊,驗證者就會執行一系列的可用性和有效性,在將其提交到最終鏈之前進行檢查。
平行鏈插槽有限,因此平行鏈候選者要參加拍賣,以保留最長可達兩年的插槽。
對於那些沒有資金用於購买平行鏈插槽或沒有必要以六秒的區塊時間執行的鏈,Polkadot也有平行线程。
平行线程是按需付費的,只有在需要時才需要支付執行區塊的費用。
爲了與想要使用自己的最終化過程(例如比特幣)的鏈進行交互, Polkadot具有提供雙向兼容性的橋接平行鏈(Bridge Parachains)。
Cosmos
Cosmos有一個稱爲“Hub”的主鏈,該鏈連接其他名爲“Zone”的區塊鏈。Cosmos可以擁有多個Hub,但本概述將考慮單個Hub。
每個Zone都必須維護自己的狀態,因此必須擁有自己的驗證者社區。當一個Zone想要與另一個Zone通信時,它通過IBC發送數據包。
Hub維護一個多通證账本來記錄通證余額(非轉账信息被中繼,但它們的狀態不會存儲在Hub中)。
Zone使用輕客戶端監視Hub的狀態,但Hub不跟蹤Zone的狀態。Zone必須使用確定性最終算法(目前,所有Zone都使用Tendermint)並實現IBC接口,以便能夠通過Hub向其他鏈發送消息。
Cosmos還可以使用“peg zones”與外部鏈進行交互,這類似於橋接平行鏈。
共識
Polkadot採用混合共識協議,其中包括BABE和GRANDPA這兩個子協議,一起被稱爲“Fast Forward”。
BABE(是Blind Assignment for Blockchain Extension,即區塊鏈擴展的盲分配機制的簡稱)。
使用可驗證隨機函數(VRF)將插槽分配給驗證者,並使用備用的輪詢模式(a fallback round-robin pattern)來確保每個插槽都有一個作者。
GRANDPA(是GHOST-based Recursive Ancestor Deriving Prefix Agreement,即基於GHOST的遞歸祖先推導前綴協議的簡稱)投票選擇鏈而不是單個區塊。
BABE可以創建候選區塊以擴展已確定的鏈,而GRANDPA可以批量對它們進行最終確認(最多可以處理數百萬個區塊)。
這種任務隔離提供了幾個好處。首先,它代表了區塊生產和最終確認的傳輸復雜性的降低。
BABE具有线性復雜度,因此易於擴展到數千個區塊生成者,並且網絡开銷較小。GRANDPA具有二次復雜度,但會受延遲因素影響而減少復雜度,或者說它每批最終確定多少個區塊。
編者注:
這裏解釋一下,就是說GRANDPA在進行投票和確定區塊的過程中,需要與其他驗證者進行很多次的通信,這樣會消耗很多的網絡資源和時間。
但是,GRANDPA可以利用網絡延遲的時間來同時處理很多個區塊,而不是只處理一個區塊,這樣就可以提高效率和降低復雜度。
其次,通過能夠使用未最終確認的區塊擴展鏈,其他驗證者可以執行廣泛的可用性和有效性檢查,以確保沒有無效的狀態轉換進入最終的鏈中。
Cosmos(Hub和Zone)使用Tendermint共識,這是一個提供即時最終性的輪詢協議。
區塊生成和確認在算法的同一路徑上進行,這意味着它每次只能產生和確認一個區塊。
因爲它是基於PBFT的算法(與GRANDPA類似),所以具有二次傳輸復雜度,但每次只能最終確認一個區塊。
Staking機制
Polkadot使用被提名的權益證明(NPoS,即Nominated Proof of Stake)和順序Phragmén算法來選擇驗證者。
驗證者集合大小由治理機構設定(計劃1,000個驗證者),不想運行驗證者基礎設施的質押者最多可以提名16個驗證者。
Phragmén算法選擇最優的權益分配,其中最優是基於具有最平均權益的集合。
在Polkadot中,所有驗證者在共識協議中具有相同的權重。也就是說,要獲得對鏈的超過2/3的支持,必須有超過2/3的驗證者承諾參與,而不是2/3的權益。
同樣地,驗證者的獎勵與它們的活動相關,主要包括區塊生產和最終確認,而不是它們的權益數量。
這會激勵人們提名權益較低的驗證者,因爲他們將在抵押通證上獲得更高的回報。
Cosmos Hub使用擔保權益證明(BPoS,即Bonded Proof of Stake,一種委托式權益證明的變體)來選舉驗證者。
質押者必須綁定資金,並爲每個他們想要委托的驗證者提交一個委托交易,指明要委托的通證數量。Cosmos Hub計劃支持多達300個驗證者。
在Cosmos中,共識投票和獎勵都基於權益。在共識投票的情況下,必須有超過2/3的權益承諾參與,而不是2/3的驗證者。
同樣地,質押總權益10%的驗證者將獲得10%的獎勵。
最後,在Cosmos中,如果一個質押者沒有在治理公投中投票,那么驗證者會代表他們行使投票權。
因此,許多Cosmos中的驗證者的傭金爲零,以獲取對協議更多的控制權。
在Polkadot中,治理和抵押是完全獨立的;提名驗證者不會分配任何治理投票權給驗證者。
順序Phragmén算法,詳情請參見:
https://wiki.polkadot.network/docs/learn-phragmen
消息傳遞
Polkadot使用跨共識消息傳遞格式(XCM)讓平行鏈可以相互發送任意消息。平行鏈通過建立連接並在已建立的通道上發送消息。
整理者是平行鏈和中繼鏈的全節點,因此整理者節點是消息傳遞的關鍵組成部分。
消息不會經過中繼鏈,只有發送證明(Proofs of Post)和通道操作(打开、關閉等)會進入中繼鏈。這通過將數據保留在系統邊緣來增強可擴展性。
編者注:
發送證明是指平行鏈在發送或者接收消息後,會生成一個證明,表明消息已經被正確地處理了。
這個證明可以用來在中繼鏈上驗證消息的狀態,而不需要傳輸整個消息的內容。這樣可以節省中繼鏈上的空間和帶寬,提高系統的效率。
在發生鏈重組的情況下,可以根據中繼鏈上的發送證明,將消息回滾到重組的時間點。
平行鏈之間的共享狀態意味着消息不受信任範圍的限制;它們都在同一個上下文中運行。
Polkadot還有一個名爲SPREE的附加協議,爲跨鏈消息提供了共享邏輯。
使用SPREE發送的消息,會攜帶額外的保證,關於消息的來源和接收鏈的解釋。
編者注:
使用SPREE發送的消息,不僅可以證明它是從哪個區塊鏈發出的,而且可以保證它在另一個區塊鏈上被正確地執行和理解。
這樣就可以增加消息的可靠性和互操作性。
Cosmos使用稱爲Inter-Blockchain Communication(IBC)的跨鏈協議。Cosmos當前的實現使用Hub在Zone之間傳遞通證。
但是,Cosmos確實有一個用於傳遞任意數據的新規範。然而,由於鏈不共享狀態,因此接收鏈必須信任消息來源的安全性。
治理
Polkadot具有多元化的治理系統,有幾種途徑可以通過提案。所有提案最終都要經過公开公投,大部分通證總數可以始終控制結果。
對於投票率低的公投,Polkadot使用自適應法定人數偏差來設置通過門檻。
公投可以包含各種提案,包括從鏈上資金庫(Treasury · Polkadot Wiki)中分配資金。決策在鏈上生效,是具有約束力和自治性的。
編者注:
Polkadot使用了一種叫做自適應法定人數偏差的方法,它可以根據參與率的高低來調整通過門檻的高低。
參與率是指參與投票的持幣者佔總持幣者的比例。通過門檻是指贊成票佔總票數的比例。
自適應法定人數偏差的原理是,當參與率越低時,通過門檻就越高,也就是說需要更多的贊成票才能通過提案;當參與率越高時,通過門檻就越低,也就是說需要更少的贊成票就能通過提案。
這樣做的目的是,避免少數人在參與率低時就能輕易地通過提案,也避免多數人在參與率高時就能輕易地否決提案。這樣可以保證公投的公平性和合理性。
Polkadot有幾個鏈上的、無許可機構。主要的一個是議會,由一組按Phragmén方式選舉的账戶組成。
議會代表少數利益,因此,如果議會一致同意某個提案,該提案在公开公投中的通過門檻較低。
還有一個技術委員會用於制定技術建議(例如緊急的Runtime升級以修復漏洞)。
Cosmos使用通證投票方式來通過公投。實際執行治理決策是通過協議分叉進行的,就像其他區塊鏈一樣。
所有通證質押者都可以投票,但是,如果委托人放棄投票,則他們委托的驗證者將承擔他們的投票權。
在Polkadot中,驗證人不會根據他們的提名者獲得任何投票權。
Polkadot多元的治理系統,詳情請參見:
https://wiki.polkadot.network/docs/learn-governance
升級
通過使用Wasm元協議,Polkadot可以在無需硬分叉的情況下實施鏈升級和成功的提案。
任何在STF(狀態轉換函數)、交易隊列或鏈下工作機中的內容都可以在不分叉鏈的情況下進行升級。
由於Cosmos不是基於元協議的,它必須通過正常的分叉機制來實施升級和提案。
發展框架
Cosmos和Polkadot的設計都是每個鏈具有自己的STF,並且兩者都支持Wasm和以太坊虛擬機(EVM)中的智能合約。
Polkadot提供了一個預編譯的Wasm編譯器以及一個解釋器(Wasmi)用於執行,而Cosmos只在解釋器中執行智能合約。
Cosmos鏈可以使用Go編寫的Cosmos SDK進行开發。
Cosmos SDK包含約10個模塊(例如Staking、治理等),可以包含在鏈的STF中。SDK建立在Tendermint之上。
平行鏈的主要开發框架是由Rust編寫的Substrate。
Substrate帶有FRAME(框架),大約包含40個模塊(稱爲“Pallet托盤”),可用於鏈的STF。
除了簡單地使用Pallet外,Substrate還添加了進一步的抽象層,允許开發人員通過添加自定義模塊並爲鏈配置參數和初始存儲值來組合FRAME中的Pallet。
注意:
Polkadot可以支持用任何語言編寫的STF。
只要它編譯成它的元協議Wasm。同樣,它仍然可以使用Substrate客戶端(數據庫、RPC、網絡等);它只需要在接口上實現原語(primitives)。
編者注:
原語(primitive)是指一些基本的、不可分割的操作或數據類型,它們是構建更復雜的功能或結構的基礎。
在Substrate中,原語包括了一些核心組件,如區塊、交易、狀態、共識等。
結論
Polkadot的設計原則是可擴展性和互操作性需要共享驗證邏輯來創建一個無需信任的環境。
隨着越來越多的區塊鏈被开發出來,它們的安全必須是合作的,而不是競爭的。
因此,Polkadot提供了跨鏈的共享驗證邏輯和安全流程,以便它們可以相互交互,並知道它們的對話方在同一安全上下文中執行。
Cosmos網絡使用bridge-hub模型來連接具有獨立安全保障的鏈,這意味着當數據從一個鏈發送到另一個鏈(鏈間通信)時,接收鏈必須信任發送鏈。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。