波卡的分片設計與以太坊 2.0 有何不同?從模型、架構、共識、Staking、分片鏈、消息傳遞、治理和升級這 8 個方面對比分析。

原文標題:《決戰分片之顛 ?全面對比波卡和以太坊 2.0 的設計
撰文:joe petrowski
編譯:灑脫喜

北京時間 5 月 26 日晚,備受關注的公鏈項目波卡(Polkadot)發佈了第一個侯選鏈 CC1,而它很可能成爲將來的 Polkadot 主網,而根據描述,波卡已從之前的跨鏈定位切換到了分片協議,因此將與以太坊 2.0 正面交戰。

那波卡的分片設計和以太坊 2.0 的分片設計有什麼不同呢?本文將從模型、架構、共識、Staking、分片鏈、消息傳遞、治理和升級這 8 個方面全面進行一個對比。(注:兩者目前都處於規劃階段)

全面對比波卡與以太坊 2.0 機制設計:架構、Staking 與治理等圖片來自:tuchong.com

模型篇

以太坊 2.0 中的分片都具有相同的狀態轉換函數(STF),這個狀態轉換函數(STF)爲智能合約的執行提供了一個接口。合約存在於單個分片上(並且可以在分片之間發送異步消息),因此可通過並行執行分片來進行擴展。

同樣,在波卡(Polkadot)中,每個分片都承載了核心邏輯,分片並行執行,並且波卡(Polkadot)可發送跨分片異步消息。然而,協議中的每個分片都有一個唯一的狀態轉換函數(STF)。應用程序可存在於單個分片中,也可以通過組合邏輯跨分片存在。另外,波卡(Polkadot)使用了 WebAssembly (Wasm)作爲「元協議」,只要波卡(Polkadot)上的驗證者能夠在 Wasm 環境中執行,分片的狀態轉換函數(STF)就可以是抽象的。

架構篇

以太坊 2.0

以太坊 2.0 的主鏈被稱爲信標鏈(Beacon Chain)。信標鏈上的主要負載是證明(attestation),它們是對分片數據可用性和信標鏈有效性的投票。以太坊 2.0 中的每一個分片都是具有以太坊 Wasm (eWasm)接口的區塊鏈。

以太坊 2.0 只需一條信標鏈就可以啓動階段 0 (Phase 0),而在階段 1 (Phase 1),以太坊將有 64 條簡單的分片鏈來測試信標鏈的最終確定性。每個分片向信標鏈提交「交聯」(crosslink),其包含了確定分片數據的信息。之後,在階段 2 (Phase 2),分片將實現 eWasm 接口,最終使系統可用。[1]

此外,該網絡還將有一些「側鏈」,它們將與非以太坊 2.0 終局性鏈進行交互。

波卡(Polkadot)

和以太坊 2.0 一樣,波卡(Polkadot)也有一個主鏈,它的名字叫中繼鏈(Relay Chain),然後它還有一些分片叫平行鏈(parachain)。平行鏈並不侷限於像 eWasm 這樣的單個接口,相反,它們可以定義自己的邏輯和接口,只要將其狀態轉換函數(STF)提供給中繼鏈驗證程序即可執行。

按照計劃,波卡準備每個區塊最多驗證 100 個分片。除了計劃在每個區塊中執行的並行鏈之外,波卡還具有動態調度的平行線程(parathread)。這使得鏈之間可共享分片插槽(slot),就像多家小型航空公司在機場共享一個登機口一樣。

此外,爲了和其他鏈進行交互(例如比特幣),波卡還會擁有提供雙向兼容性的橋平行鏈。

共識篇

以太坊 2.0 和波卡都使用了混合共識模型,其中區塊生產和終局性都有各自的協議。對於終局性協議,以太坊 2.0 所採用的 Casper FFG 和波卡的 GRANDPA 都是基於 GHOST 的,它們都可以在一輪中完成一批區塊。對於區塊生產,兩個協議都使用基於插槽(slot)的協議,這些協議將驗證者隨機分配給一個插槽(slot),併爲未完成的區塊提供分叉選擇規則,其中以太坊 2.0 使用的是 RandDAO/LMD,而波卡則是用的 BABE。

在共識坊啊嗎,以太坊 2.0 和波卡之間有兩個主要區別:

  1. 以太坊 2.0 根據稱爲「epoch」的時間段來完成一批區塊。目前的計劃是每個「epoch」有 64 個區塊,並在一輪中完成所有的區塊。預計的區塊時間約爲 12 秒,這意味着預期的終局性時間爲 6 分鐘(最多 12 分鐘)[2] 而波卡的終局性協議 GRANDPA 基於可用性和有效性檢查來完成區塊的批處理,這些檢查是隨着提議鏈的增長而發生的。也就是說,波卡的終局性時間隨需要執行的檢查次數而變化(無效性報告導致協議需要額外檢查),預計的時間大概在 12-60 秒之間。
  2. 以太坊 2.0 需要每個分片有大量的驗證者來提供強大的有效性保證。而波卡的分片,需要的驗證者更少,並且也能提供強大的有效性保證。波卡通過使驗證者將擦除編碼分發給系統中的所有驗證者來實現此目的,這樣任何人(不僅僅是分片的驗證者)都可以重建並行鏈的區塊並測試其有效性。

Staking 篇

以太坊 2.0 將是一個權益證明(PoS)網絡,每個驗證者需要質押 32 ETH 來參與區塊驗證過程。驗證者將運行一個主要的「信標鏈」節點和多個驗證者客戶端(每個需要 32 ETH)。這些驗證者會被分配給「委員會」,它們是隨機選擇出來的組,用於驗證網絡中的分片。以太坊 2.0 依賴於設置一個大的驗證程序來提供可用性和有效性保證:它們需要每個分片至少 111 個驗證者來運行網絡,每個分片至少需要 256 個驗證者才能在一個 epoch 時期內最終確定所有分片 [3]。這就要求有 64 個分片,即 16,384 個驗證者(每個分片提供 256 個驗證者) [4]

而波卡能夠用更少的驗證者,同樣提供強大的終局性和可用性保證,它使用的提名權益證明(NPoS)機制從較小的集合中選擇驗證者,讓較小的持有者指定驗證者來運行基礎設施,同時仍要求獲得系統的回報,而無需運行自己的節點。波卡計劃在第一年擁有 1000 個驗證者,並且網絡中每個平行鏈大約需要 10 個驗證者。

分片篇

以太坊 2.0 中的每個分片都有相同的狀態轉換函數(STF),在階段 1 (預期 2021 年實現)[5],分片將是提供指向信標鏈的交聯的簡單數據容器,而在階段 2 (預計 2023 年),分片們將實現 eWasm 執行環境。EWasm 是 Wasm 虛擬機的一個受限子集,其接口提供了一組可用於合約的方法。對於 eWasm,將會有一套類似 Truffle 和 Ganache 的開發工具集。[6]

而波卡中的每個分片,都有一個基於 Wasm 的抽象狀態轉換函數(STF)。只要邏輯編譯爲 Wasm,並且每個分片爲波卡驗證者提供「執行區塊」函數,則每個分片都可以公開自定義接口。波卡有一個 Substrate 開發框架,它可以對模塊進行配置、組合和擴展,以開發鏈的狀態轉換函數(STF)。

消息傳遞篇

以太坊 2.0 中的分片將通過它們的交聯和狀態訪問彼此的狀態。在以太坊 2.0 模型中,會有 64 個分片,每個分片在信標鏈中爲每個區塊發佈一個交聯,這意味着分片可包含根據另一個分片上的某筆交易的輕客戶端證明執行邏輯。[7] 截至目前,以太坊 2.0 研發團隊尚未發佈分片間消息的傳遞規範。

而波卡則對平行鏈使用跨鏈消息傳遞(XCMP)協議來相互發送任意消息。平行鏈打開彼此之間的連接,並可以通過它們已建立的通道發送消息。如果兩條平行鏈有任何共同的全節點,它們可以通過全節點 gossip 消息。否則,驗證程序將處理消息傳遞。消息不通過中繼鏈,只有 post 和 channel 操作(打開、關閉等)的證明會進入中繼鏈。通過將數據保留在系統邊緣,這可以增強系統的可擴展性。

此外,波卡有一個名爲 SPREE 的附加協議,它爲跨鏈消息提供共享邏輯。通過 SPREE 協議發送的消息爲接收鏈提供了關於來源和解釋的其他保證。

治理篇

以太坊目前使用的是鏈外治理方式,例如 Github 討論,所有的核心開發者討論,以及 Ethereum Magicians 來制定有關該協議的決策。[8]

而波卡則是採用的鏈上治理方式(使用了一種稱爲 multicameral 的系統),它有幾種途徑可以通過提案,比如鏈上理事會、技術委員會或公衆。所有的提案最終都會通過一次公投來決定,在公投活動中,多數代幣的參與就可以控制結果。對於可能的低投票率情況,波卡使用了自適應仲裁偏差來設置通過閾值。

升級篇

以太坊 2.0 的升級將遵循正常的硬分叉過程,其需要驗證者升級其節點來實現協議更改。

而使用 Wasm 元協議的波卡,可以在不使用硬分叉的情況下執行鏈升級。像 STF、交易隊列或 off-chain 的任何內容都可以在不需要分叉鏈的情況下進行升級。

總結

以太坊 2.0 和波卡都使用了分片模型,其中分片鏈(以太坊 2.0 中的「分片」和波卡中的「平行鏈 / 平行線程」)由主鏈通過連接主鏈區塊中的分片狀態進行保護。這兩個協議在幾個主要方面有所不同。首先,以太坊 2.0 中的所有分片都有相同的狀態轉換函數(STF),而波卡則讓分片有一個抽象的狀態轉換函數(STF)。其次,以太坊的治理過程是脫離區塊鏈的,其需要協調硬分叉來制定治理決策,而在波卡,它的決策是在鏈上進行的。第三,驗證者選擇機制是不同的,相比以太坊 2.0,波卡每個分片的驗證者數量要求要更少一些。

相關資料

1.Ethereum 2.0 Phases
https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/

2.Ethereum 2 Block Time
https://github.com/ethereum/eth2.0-specs/blob/676e216/specs/phase0/beacon-chain.md#time-parameters

3.Ethereum 2.0 Economics
https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-economics/

4.Buterin, Eth2 shard chain simplification proposal
https://notes.ethereum.org/@vbuterin/HkiULaluS

5.Messari Crypto Theses for 2020
https://messari.io/report/crypto-theses-for-2020

6. eWasm Design
https://github.com/ewasm/design

7.Sharding FAQ
https://github.com/ethereum/wiki/wiki/Sharding-FAQ#how-would-synchronous-cross-shard-messages-work

8.Ethereum Governance Compendium
https://github.com/ethereum/wiki/wiki/Governance-compendium

來源鏈接:wiki.polkadot.network