圖片來源:PureStake
Polkadot 和以太坊 2.0 都是分片式區塊鏈協議。即它們透過在單獨的分片中執行交易,並提供在分片之間傳送訊息的協議來提供可擴充套件性(scalability)。
模型
以太坊 2.0 中的分片都具有相同的狀態轉換函式(STF),即管理著區塊鏈如何更改每個區塊狀態的規則。該 STF 提供了智慧合約執行的介面。合約存在於單個分片上(並且可以在分片之間傳送非同步訊息),因此可以透過並行執行分片來進行擴充套件。
同樣,在 Polkadot 中,每個分片都承載核心邏輯,這些分片並行執行,並且 Polkadot 可以傳送跨分片的非同步訊息。但是,協議中的每個分片都有唯一的 STF。透過組合邏輯,應用程式可以存在於單個分片中,也可以存在於多個分片中。Polkadot 使用 WebAssembly(Wasm)作為 “元協議”。分片的 STF 可以是抽象的,只要 Polkadot 上的驗證人可以在 Wasm 環境中執行即可。
架構以太坊 2.0
以太坊 2.0 的主鏈稱為信標鏈(Beacon Chain)。信標鏈的主要負載是見證訊息(attestations),這是對分片資料可用性和信標鏈有效性的投票。以太坊 2.0中的每個分片都是具有 Ethereum Wasm(eWasm)介面的區塊鏈。
以太坊 2.0 將僅透過信標鏈啟動階段 0。在第 1 階段,它將以簡單鏈的形式啟動 64 個分片,以測試信標鏈的最終性。每個分片都向 “信標鏈” 提交 “交聯(crosslinks)”,其中包含確定分片資料的資訊。稍後,在階段 2 中,分片將實現 eWasm 介面,最終使系統可用。[1]
該網路還將具有 “側鏈” ,來與不在以太坊 2.0 最終性協議下的鏈進行互動。Polkadot
像以太坊 2.0 一樣,Polkadot 也有一個主鏈,稱為中繼鏈,帶有許多分片,叫作 “平行鏈”。平行鏈不限於單個介面,例如 eWasm。取而代之的是,它們可以定義自己的邏輯和介面,只要將其 STF 提供給中繼鏈驗證人即可執行。
Polkadot 計劃在啟動時每個區塊最多能夠驗證 100 個分片。除了計劃在每個塊中執行的平行鏈以外,Polkadot 還具有動態排程的平行執行緒。這讓多條鏈可以共享分片插槽,就像多家小型航空公司可能在機場共享一個登機口一樣。
為了與想要使用自己的最終過程的鏈進行互動(例如比特幣),Polkadot 擁有轉接橋平行鏈來提供雙向相容性。
共識
以太坊 2.0 和 Polkadot 都使用混合共識模型,其中出塊和最終性都有各自的協議。最終性協議(以太坊 2.0 的 Casper FFG 和 Polkadot 的 GRANDPA)基於 GHOST,並且都可以在一輪中最終確定一批區塊。對於出塊,這兩種協議都使用基於插槽的協議,該協議將驗證人隨機分配給插槽,併為未最終確定的區塊提供分叉選擇規則(以太坊 2.0 的 RandDAO/LMD 和 Polkadot 的 BABE)。
以太坊 2.0 和 Polkadot 的共識有兩個主要區別:
以太坊 2.0 根據稱為 “epochs” 的時間段來最終確定一批區塊。當前的計劃是每個時期有 64 個塊,並在一輪中全部完成。預計的區塊時間為 12 秒,這意味著最終確定的預期時間為 6 分鐘(最多 12 分鐘)。[2] Polkadot 的最終協議 GRANDPA 根據可用性和有效性檢查來最終確定一批區塊,這些檢查隨著被提議的鏈增多而發生的。最終確定的時間隨需要執行的檢查次數而變化(無效性報告會導致協議要求額外的檢查)。預期的最終確定時間為 12-60 秒。
以太坊 2.0 每個分片需要大量驗證人以提供強大的有效性保證。Polkadot 能夠透過每個分片更少的驗證人來提供更強大的保證。Polkadot 透過讓驗證人向系統中的所有驗證人分發糾刪碼來實現此目的,從而使任何人(不僅是分片的驗證人)都可以重建平行鏈的區塊並測試其有效性。隨機的平行鏈驗證人分配演算法,和由隨機選出的驗證人進行的二次檢查,讓每個平行鏈上的一小組驗證人無法串通。
Staking 機制
以太坊 2.0 將是一個權益證明(PoS)網路,每個驗證人需要 32 ETH 來進行抵押。驗證人將執行一個主要的 “信標鏈” 節點和多個驗證人客戶端(每個 32 ETH 一個客戶端)。這些驗證人被分配給 “委員會(committees)”,“委員會” 是隨機選擇的組,以驗證網路中的分片。以太坊 2.0 依靠大型驗證人集合來提供可用性和有效性保證:每個分片至少需要 111 個驗證人才能執行網路,每個分片至少需要 256 個驗證人才能一個 epoch 之內未最終確定所有分片。而 64 個分片就是 16,384 個驗證人(每個分片提供 256 個驗證人)。[3]
Polkadot 能夠以更少的驗證人來提供強大的確定性和可用性保證。因此,Polkadot 使用提名權益證明(NPoS)從較小的集合中選擇驗證人,從而使較小的持有者可以提名驗證人來執行基礎結構,同時仍然可以獲得系統的收益,而無需執行自己的節點。Polkadot 計劃在第一年擁有 1,000 個驗證人,並且網路中每個平行鏈大約需要 10 個驗證人。
分片
以太坊 2.0 中的每個分片都具有相同的 STF。在階段 1(預計 2021 [5])中,分片將是簡單的資料容器,提供與信標鏈的交聯。在階段 2(預計 2023 年)中,他們將實現 eWasm 執行環境。EWasm 是 Wasm 的有限子集,用於以太坊中的合約。eWasm 介面提供了一組可用於合約的方法。eWasm 開發應該有類似的開發工具集,例如 Truffle 和 Ganache。[6]
Polkadot 中的每個分片都有一個基於 Wasm 的抽象 STF。只要邏輯編譯為 Wasm,並且每個分片為 Polkadot 驗證人提供 “執行區塊” 功能,每個分片都可以公開自定義介面。Polkadot 具有 Substrate 開發框架,該框架擁有可配置、組合和擴充套件的模組,可以進行全方位的組合來開發鏈的 STF。
訊息傳遞
以太坊 2.0 中的分片可以透過對方的交聯和狀態證明訪問彼此的狀態。在具有 64 個分片的 以太坊 2.0 模型中,每個分片在信標鏈中為每個塊釋出一個交聯[4] ,意味著分片可以包含一些邏輯,來執行基於另一個分片上的一筆交易的輕客戶端證明。[7] 以太坊 2.0 尚未釋出節點在分片之間傳遞訊息的規範。
Polkadot 使用跨鏈訊息傳遞 (XCMP) 來讓平行鏈間相互傳送任意訊息。平行鏈彼此之間建立了開放的連線,並可以透過其建立的通道傳送訊息。如果兩個平行鏈具有相同的全節點,則它們可以透過全節點 “八卦” 訊息。否則,中繼鏈驗證人將處理訊息傳遞。訊息不透過中繼鏈,只有釋出和通道操作(開啟,關閉等)的證明進入中繼鏈。這一特性透過將資料保留在系統邊緣來增強可擴充套件性。
Polkadot 具有稱為 SPREE 的附加協議,該協議為跨鏈訊息提供共享邏輯。使用 SPREE 傳送的訊息為接收鏈提供了關於來源和解釋的其他保證。
治理
以太坊 2.0 治理仍未解決。以太坊目前使用鏈下治理程式,例如 Github 討論、All Core Devs call 和 Ethereum Magicians 來制定有關該協議的決策。[8]
Polkadot 將鏈上治理與多系統一起使用。有幾種途徑可以透過議案,例如來自鏈上的理事會、技術委員會或公眾。所有議案最終都要經過公投,公投的結果始終由多數代幣控制。對於低投票率公投,Polkadot 使用自適應投票偏見設定透過閾值。公民投票可以包含各種議案,包括從鏈上財政庫中分配資金。決策是在鏈上制定的,具有約束力和自主性。
升級
以太坊 2.0 的升級將遵循常規的硬分叉流程,要求驗證人升級其節點以實現協議更改。
Polkadot 使用 Wasm 元協議,無需硬分叉就可以實施鏈升級和成功的提案。STF、交易佇列或鏈下工作機中的所有物件都可以升級,而無需分叉。
結論
以太坊 2.0 和 Polkadot 都使用分片模型,其中分片鏈(以太坊 2.0 中的 “分片” 和 Polkadot 中的 “平行鏈/平行執行緒”)透過在主鏈區塊中連結分片狀態而受主鏈保護。這兩個協議在幾個主要方面有所不同。首先,以太坊 2.0 中的所有分片都具有相同的 STF,而 Polkadot 讓分片具有抽象的 STF。其次,以太坊中的治理流程是鏈下的,需要協調和硬分叉才能執行治理決策,而在 Polkadot 中,決策是在鏈上自主頒佈和執行的。第三,驗證人選擇機制不同,因為 Polkadot 可以在每個分片的驗證人數量較少的情況下,提供強大的可用性和有效性保證。