概述
波卡是第一個完全分片的產品級別區塊鏈協議。目前的以太坊協議並沒有實現分片,這也是下一個重大升級的主要關注點。與波卡及其平行鏈類似,以太坊的目標是成爲一個多分片網絡。
當一個網絡被分片時,這意味着它能夠以可擴展的方式並行執行多個(通常是許多)狀態轉換。其中一個關鍵區別是,波卡的平行鏈是異構分片,而以太坊將是同構分片。
換句話說,每個平行鏈都可以擁有自己的狀態轉換邏輯,而在以太坊上,所有分片都使用相同的狀態轉換邏輯。
兩個協議都是區塊鏈,但它們在使用方式上具有根本性的不同:
以太坊是一種通用的區塊鏈,它托管着以太坊虛擬機(Ethereum Virtual Machine),這是一個用於執行智能合約的環境。
波卡是一種異構分片多鏈協議,它托管多個鏈,並爲它們提供一種參與共享安全模型的方法。波卡充當元協議,允許多個協議共存並協同工作。
注意:
需要注意的是,這裏的“以太坊”指的是以前稱爲“Eth2”或“以太坊2.0”的東西。有關以太坊後續迭代的更多具體細節,請參閱以太坊路线圖。
值得一提的是,一些升級可能對以太坊不活躍,但被描述爲與波卡比較的一部分。其中一些目標/升級可能會發生變化,以反映以太坊的總體方向。
以太坊路线圖,詳情請參見:
https://ethereum.org/en/roadmap/
高階比較
在高層次上,兩種協議都有根本不同的目標,這反映在它們的結構。以太坊是用於全球協調的通用區塊鏈,以太坊不是專門的也沒有針對任何特定應用程序進行優化,而是其主要重點是用於執行智能合約的以太坊虛擬機。
波卡是一個分片區塊鏈,它爲每個分片或平行鏈引入了共享安全性。每個分片通常專門針對特定的焦點,並針對那個目標。波卡通過波卡中繼鏈爲這些分片提供共享的安全性和共識。
波卡不能也不會直接運行智能合約的虛擬機之類的東西。然而,它的幾個平行鏈可以(並且確實如此)。
波卡上的平行鏈甚至可以運行以太坊虛擬機EVM,來執行用以太坊原生智能合約語言Solidity編寫的智能合約。
在區塊鏈的語境中,“分片”是指狀態轉換的並行化 (交易)執行。以太坊和波卡處理可擴展性和分片的方式相當不同。
可擴展性
sharding(分片)與Danksharding
作爲以太坊路线圖的一部分,先前被稱爲“分片鏈”的技術已經被放棄,轉而採用基於Rollup的方法來擴展交易吞吐量。
Danksharding,是以太坊計劃創造一個聲稱可以處理每秒超過100,000筆交易的可擴展環境的方式。
Danksharding是相對於“分片鏈”選擇的替代方案,並通過存儲數據塊(Blobs)來工作。
Danksharding將允許在以太坊上更多的空間被利用,其中的數據塊將在從網絡中刪除之前驗證一段時間。
這些數據塊必須在一定時間內保持不變,這意味着驗證程序必須擁有一定水平的數據可用性。這種方法將在Layer1層實現數據可用性,並進一步促進以太坊的Layer2協議發展。
相比之下,波卡是一個純粹的分片網絡。它將數據可用性視爲區塊驗證過程的一個重要組成部分。
波卡網絡的分片之間的並行化交互也充分利用了這個因素。而以太坊主要關注於使大量數據在一段時間內可供驗證,波卡的並行化因素則允許在協議層面上進行驗證,而不需要Layer2解決方案。
在波卡上,每個分片都托管核心邏輯。如前面提到過,每個分片(即平行鏈)都有一個獨特的狀態轉換函數(有時稱爲Runtime)。
應用程序可以存在於單個分片中,也可以存在於單個分片中通過組合邏輯來創建交叉共識 (XCM) 交互,跨分片。通過組合邏輯來創建跨共識(XCM)的交互,應用程序可以存在於單個分片內或跨分片中。
波卡使用WebAssembly(Wasm)作爲“元協議”。分片的狀態轉換函數可以是抽象的,只要波卡上的驗證者可以在Wasm環境中執行它。
Danksharding,詳情請參見:
https://ethereum.org/en/roadmap/danksharding/
架構差異
波卡和以太坊
如前所述,以太坊是一個通用虛擬機,可以運行用Solidity編寫的沙盒程序,而波卡是其他平行鏈相互連接和交互的元協議。
以太坊作爲一個單一的、同構的鏈運行。每個以太坊節點分爲兩層:共識層和執行層。
每層處理以太坊客戶端的區塊驗證信息、對等發現和權益證明。波卡的主要組件是中繼鏈,它托管稱爲異構分片的平行鏈。
中繼鏈從其分片(平行鏈)聚合信息,波卡驗證者在其中就共識和最終性達成一致。
從本質上講,可以將波卡視爲一系列Runtime,它們是用於描述平行鏈(分片)以及波卡本身的狀態轉換函數。
與以太坊一樣,波卡客戶端將他們的許多職責抽象到使用Substrate構建的各種組件中。
分叉、分級和治理
以太坊治理是在鏈下完成的,不同的利益相關者通過協議本身以外的某種媒介達成共識。
以太坊的升級將遵循標准的硬分叉過程,要求驗證者升級其節點以實現協議更改。
波卡使用了多元化的鏈上治理系統。有幾種途徑可以發布提案,所有提案最終都會通過公投,其中多數通證始終可以控制結果。
波卡使用自適應群體偏差來設置傳遞低投票率公投的閾值,公投可以涵蓋各種主題。
包括來自鏈上國庫的資金分配或修改鏈的底層Runtime代碼。決策在鏈上制定,具有約束力和自主性。
波卡可以使用Wasm元協議進行鏈升級和成功的提案,而無需硬分叉。狀態轉換功能、交易隊列或鏈下工作機(off-chain worker)中的任何內容都可以在不分叉鏈的情況下升級。
自適應群體偏差,詳情請參見:
https://wiki.polkadot.network/docs/learn-governance#adaptive-quorum-biasing
共識和最終確定
以太坊和波卡使用混合共識模型,其中區塊生產和最終確定具有各自的協議。以太坊的Casper FFG和波卡的GRANDPA,這兩個最終性協議都是基於GHOST的,都可以在一輪中完成批量區塊的最終化。
對於區塊生產,這兩個協議都使用基於時間段的協議,隨機分配驗證者到一個時間段,並爲未最終化的區塊提供分叉選擇規則 - 以太坊使用RandDAO/LMD,波卡使用BABE。
以太坊和波卡共識有兩個主要差異:
1、以太坊根據稱爲“epoch”的周期最終確定批量區塊。當前計劃是每個epoch有32個區塊,並在一輪中將它們全部最終化。預測區塊時間爲12秒,預期最終性時間爲6分鐘(最大12分鐘)。
2、波卡的最終性協議GRANDPA基於可用性和有效性檢查來最終化批量區塊,這些檢查隨着建議的鏈增長而進行。最終性時間隨需要執行的檢查數目而變化(無效報告會導致協議需要額外的檢查)。預期的最終性時間爲12-60秒。
以太坊需要每個分片有許多驗證者來提供強大的有效性保證,而波卡可以通過較少數量的驗證者提供更強的保證。
波卡通過使驗證者將糾錯編碼分發給系統中所有驗證者來實現這一點,這樣任何人——不僅是分片的驗證者——都可以重建平行鏈的區塊並測試其有效性。
隨機的平行鏈驗證者分配和二次檢查是隨機選擇的驗證者進行的,這使得每個平行鏈上的一小部分驗證者串通的可能性較小。
BABE詳情請參見:
https://wiki.polkadot.network/docs/learn-consensus#badass-babe-sassafras
“epoch”的周期,詳情請參見:
https://github.com/ethereum/consensus-specs/blob/676e216/specs/phase0/beacon-chain.md#time-parameters
Staking機制
以太坊是一個權益證明網絡,每個驗證者實例需要32個ETH進行Staking。驗證者運行一個主信標鏈節點和多個驗證者客戶端——每32個ETH一個。這些驗證者被分配到“委員會”,隨機選擇的組來驗證網絡中的分片。
以太坊依靠大型驗證者集來提供可用性和有效性保證:每個分片至少需要111個驗證者來運行網絡,每個分片需要256個驗證者才能在一個epoch內完成所有分片。
如果有64個分片,那就是16384個驗證者(每個分片有256個驗證者)。有關更多信息,請參閱以太坊經濟學和Eth2.0分片鏈簡化提案。
波卡可以用更少的驗證者提供強大的最終性和可用性保證。它使用提名權益證明(NPoS)從較小的集合中選擇驗證者,讓較小的持有者提名驗證者來運行基礎設施。
同時仍然在不運行自己的節點的情況下獲得系統的獎勵。波卡網絡中的每個平行鏈需要大約10個驗證者。
以太坊經濟學,詳情請參見:
https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-economics/
Eth2.0分片鏈簡化提案,詳情請參見:
https://notes.ethereum.org/@vbuterin/HkiULaluS
互操作性和消息傳遞
波卡使用跨共識消息傳遞格式 (XCM) 讓平行鏈相互發送任意的消息。平行鏈打开彼此的連接,並可以通過他們已建立的渠道發送消息。
鑑於整理者(Collator)也需要是中繼鏈的完整節點,它們將連接起來並可以將消息從平行鏈A中繼到平行鏈B。
消息不會通過中繼鏈傳遞。只有有效性證明和通道操作可以(打开、關閉等)。這通過將數據保存在系統邊緣來增強可擴展性。
波卡將添加一個名爲SPREE的協議,爲跨鏈消息提供共享邏輯。使用SPREE發送的消息帶有關於接收鏈來源和解釋的額外保證。
DApp支持和發展
以太坊主要支持使用Solidity進行智能合約开發。這些合約是不可變的,一旦在鏈上發布就無法更改。
波卡通過平行鏈支持智能合約,通常使用ink!智能合約語言。
在以太坊上,智能合約可以相互調用;但是,它們被固定在以太坊域的鏈上。在波卡上,智能合約可以在同一平行鏈和跨平行鏈之間相互調用。
在波卡上,开發者可以選擇使用智能合約,從修改鏈狀態的Pallet中調用extrinsic,或僅使用波卡的RPC直接檢索並操作鏈上信息。
在波卡上的DApps通常由這些多個組件組成,這些組件協同工作以修改、檢索和實時觀察狀態變化。
ink!智能合約語言,詳情請參見:
https://use.ink/
總結
以太坊和波卡都使用了分片模型。Danksharding計劃通過專注於數據可用性,利用基於Rollup的方法來實現分片。
波卡生態系統由一個叫做“中繼鏈”的主鏈來保證安全性,同時管理和連接它的分片(“平行鏈/平行线程”)成爲一個統一的、同質化的方案。
這兩個協議之間的主要差異是:
在以太坊中,所有分片都代表相同的狀態轉換,而波卡允許分片具有抽象的狀態轉換函數實現。
以太坊中的治理流程計劃在鏈下進行,因此需要協調硬分叉以制定治理決策。相比之下,在波卡中,決策是在鏈上進行的,並通過無分叉升級自主執行。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。