爲什么我們需要共識?
共識是一種對共享狀態達成協議的方法。爲了使區塊鏈的狀態繼續構建並向前發展,網絡中的所有節點必須同意並達成共識。它是去中心化網絡中的節點能夠相互保持同步的方式。如果沒有區塊鏈中節點的去中心化網絡的共識,就沒有辦法確保一個節點認爲是真實的狀態會被其他節點所共享。共識的目的是在對網絡有各自主觀看法的參與者中提供客觀的狀態觀點。它是這些節點進行溝通並達成協議的過程,並能夠構建新的區塊。
什么是 PoW 和 PoS?
工作證明(PoW)和權益證明(PoS)被不准確地用作區塊鏈共識機制的簡稱,但這並沒有抓住全貌。PoW 是商定區塊作者的方法,也是更全面的中本聰共識的一部分,其中還包括鏈選擇算法(比特幣中最長的鏈規則)。同樣,PoS 是一套選擇驗證人的規則,並沒有指定一個鏈的選擇規則或一個鏈如何達到最終結果。PoS 算法傳統上是與節點之間達成拜佔庭協議的算法相搭配的。例如,Tendermint 是一種實用的拜佔庭容錯算法,它使用 PoS 作爲其驗證人集選擇方法。
爲什么不用工作量證明?
雖然在達成關於下一個區塊生產者的分散共識方面簡單而有效,但中本聰共識的工作證明消耗了大量的能源,沒有經濟或可證明的最終結果,也沒有抵制卡特爾的有效策略。
委托權益證明
在傳統的 PoS 系統中,區塊生產的參與取決於持有量,而不是計算能力。雖然 PoS 开發者通常有一個主張以去中心化的方式公平參與,但大多數項目最終都提出了某種程度的中心化操作,其中擁有完全參與權的驗證人的數量是有限的。這些驗證人常被認爲是最富有的,因此,影響 PoS 網絡,因爲他們的賭注最大。通常,擁有必要知識(和設備)來維護網絡的候選人數量有限;這也會直接增加運營成本。擁有大量驗證人的系統傾向於形成礦池,以減少其收入的差異,並從規模經濟中獲利。這些礦池往往是鏈外的。
緩解這種情況的方法是在鏈上實現礦池的形成,並允許持有者 [用他們的權益] 對代表他們的驗證人進行投票。
Polkadot 使用 NPoS(Nominated Proof-of-Stake)作爲其選擇驗證人組的機制。它被設計成驗證人和提名人的角色,以最大限度地提高鏈的安全性。對維護網絡感興趣的行爲者可以運行一個驗證者節點。
驗證人承擔着在 BABE 中生產新區塊、驗證准區塊和保證最終性的角色。提名人可以選擇用他們的權益來支持選定的驗證人。提名人可以批准他們信任的候選人,並用他們的資產支持他們。
概率性 vs 可證明的最終一致性
一個運行 PoW 的純中本共識區塊鏈只能實現概率最終性的概念並達成最終共識。概率最終性是指在關於網絡和參與者的一些假設下,如果我們看到幾個區塊建立在一個給定的區塊上,我們可以估計它是最終的概率。最終共識是指在未來的某個時間點,所有節點都會對一組數據的真實性達成共識。這種最終的共識可能需要很長的時間,並且將無法提前確定它需要多長時間。然而,最終一致性程序,如 GRANDPA(基於 GHOST 的遞歸 ANcestor 衍生前綴協議)或以太坊的 Casper FFG(友好的最終一致性程序),旨在對區塊的最終性給予更強和更快的保證 -- 具體而言,在發生了一些拜佔庭協議的過程後,它們永遠無法被逆轉。不可逆轉的共識的概念被稱爲可證明的最終性。
在 GRANDPA 論文中,它是這樣表述的:
注意:我們說在協議中的一個 oracle A 是最終一致性,當他在某個指定時間後對所有參與者返回相同的值。
混合共識
當我們談論 Polkadot 的共識協議時,有兩個協議,GRANDPA 和 BABE(Blind Assignment for Blockchain Extension)。我們談論這兩種協議是因爲 Polkadot 使用的是所謂的混合共識。混合共識將最終一致性程序從區塊生產機制中分割出來。
這是一種在 Polkadot 中獲得概率最終一致性(總是能夠產生新的區塊)和可證明最終一致性(在經典鏈上有一個普遍的協議,沒有機會逆轉)的好處的方法。它還避免了每種機制的相應缺點(在概率最終一致性中有可能不自覺地跟隨錯誤的分叉,在可證明最終一致性中有可能 "停滯"--無法產生新區塊)。通過結合這兩種機制,Polkadot 允許快速生產區塊,而較慢的最終一致性機制則在一個單獨的進程中運行,以最終確定區塊,而不會有較慢的交易處理或停頓的風險。
混合共識在過去已經被提出。值得注意的是,在 EIP 1011 中,它被作爲以太坊過渡到股權證明的一個步驟提出(現已失效),其中指定了 Casper FFG。
區塊生成: BABE
BABE(Blind Assignment for Blockchain Extension)是在驗證者節點之間運行的區塊生成機制,決定了新區塊的作者。BABE 作爲一種算法可與 Ouroboros Praos 相媲美,但在鏈的選擇規則和槽的時間調整方面有一些關鍵的區別。BABE 根據股權並使用 Polkadot 隨機性循環將區塊生產槽分配給驗證者。
Polkadot 中的驗證者將參與每個槽的抽籤,這將告訴他們是否是該時段的區塊生產者候選人。槽是不連續的時間單位,名義上是 6 秒的長度。由於這種隨機性機制,多個驗證者可能是同一槽位的候選人。其他時候,一個槽可能是空的,導致區塊時間不一致。
一個槽位多個驗證人
當多個驗證者在一個給定的時段內成爲區塊生產者候選人時,所有驗證者都會生產一個區塊並將其廣播到網絡上。在這一點上,這是一場競賽。誰的區塊首先到達網絡的大部分地區,誰就獲勝。根據網絡的拓撲結構和延遲,兩個鏈將繼續以某種方式建立,直到最終一致性程序啓動並切斷一個分叉。請看下面的 "分叉選擇",了解它的工作原理。
一個槽位上沒有驗證人
當沒有驗證人在隨機性抽籤中擲出足夠低的分數以獲得生產區塊的資格時,一個槽位可能仍然看起來沒有區塊。我們通過在後台運行一個次要的、循環式的驗證人選擇算法來避免這種情況。通過這種算法選擇的驗證人總是產生區塊,但是如果同一個槽位也從 VRF 選擇的驗證器中產生一個主要區塊,那么這些次級區塊就會被忽略。因此,一個槽位可以有一個主要的或次要的塊,而且沒有槽位被跳過。
關於 BABE 的更多細節,請參見 BABE 論文:
https://research.web3.foundation/en/latest/polkadot/block-production/Babe.html
BADASS BABE: SASSAFRAS
SASSAFRAS(Semi Anonymous Sortition of Staked Assignees For Fixed-time Rhythmic Assignment of Slots)(又稱 SASSY BABE 或 BADASS BABE),是 BABE 的一個擴展,作爲一個恆定時間塊生產協議。這種方法試圖解決 BABE 的缺點,確保以時間恆定的間隔精確地生產一個塊。該協議利用 zk-SNARKs 來構建一個環形 VRF,是一項正在進行的工作。本節將隨着進展而更新。
最終一致性程序: GRANDPA
GRANDPA(GHOST-based Recursive ANcestor Deriving Prefix Agreement)是爲 Polkadot 中繼鏈實現的最終一致性程序。
只要有 2/3 的節點是誠實的,它就能在部分同步的網絡模型中工作,並能在異步的環境中應對 1/5 的拜佔庭節點。
一個值得注意的區別是,GRANDPA 在鏈上而不是在塊上達成協議,大大加快了最終一致性確定的過程,即使在長期的網絡分區或其他網絡故障之後。
換句話說,只要有超過 2/3 的驗證者證明某條鏈包含某個區塊,那么導致該區塊的所有區塊就會被一次性敲定。
協議
請參考 GRANDPA 論文,了解協議的完整描述。
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
實現
Substrate GRANDPA 實現是 Substrate FRAME 的一部分。
分叉選擇
將 BABE 和 GRANDPA 結合起來,Polkadot 的分叉選擇就變得很清楚了。BABE 必須總是建立在已經被 GRANDPA 最終確定的鏈上。當在最終確定的頭之後有分叉時,BABE 通過建立在擁有最多主要區塊的鏈上提供概率上的最終性。
在上圖中,黑色區塊是最終確定的,而黃色區塊不是。標有 "1" 的區塊是一級區塊;標有 "2" 的區塊是二級區塊。盡管最上面的鏈是最新完成的區塊上最長的鏈,但它並不符合條件,因爲在評估時它的主塊比下面的主塊少。
對比
中本聰共識 (Nakamoto)
中本聰的共識由最長鏈規則組成,使用工作量證明作爲其抵抗女巫攻擊機制和領導人選舉。
中本聰共識只給了我們概率上的最終一致性。概率最終一致性指出,過去的一個區塊的安全程度僅與它的確認數量有關,或在它上面建立的區塊數量。當更多的區塊被建立在工作量證明鏈中的特定區塊之上時,這個特定的鏈背後已經花費了更多的計算工作。然而,這並不能保證包含該區塊的鏈將始終是商定的鏈,因爲一個擁有無限資源的行爲者有可能建立一個競爭鏈,並花費足夠的計算資源來創建一個不包含特定區塊的鏈。在這種情況下,比特幣和其他工作量證明鏈採用的最長鏈規則將轉移到這個新的鏈上來作爲經典的鏈。
PBFT / Tendermint
請參考 Cosmos 對比文章中相關內容:
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
Casper FFG
GRANDPA 和 Casper FFG 之間的兩個主要區別是:
在 GRANDPA 中,不同的投票者可以同時對不同高度的區塊進行投票;
GRANDPA 只依賴於最終確定的區塊來影響底層區塊生產機制的分叉選擇規則。
參考資料
BABE 論文 - BABE 協議的學術描述
https://research.web3.foundation/en/latest/polkadot/block-production/Babe.html
GRANDPA 論文 - GRANDPA 最終一致性程序的學術描述
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
Rust 實現 - 參考實現和對應的 Substrate pallet
https://github.com/paritytech/finality-grandpa
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
區塊生成和波卡中最終一致性 - 解釋 BABE 和 GRANDPA 如何共同制作和敲定 Kusama 的區塊,by Bill Laboon
https://www.crowdcast.io/e/polkadot-block-production
波卡中區塊生成和最終一致性 - Bill Laboon 在 MIT Cryptoeconomic Systems 2020 的學術演講,深入描述了 Polkadot 的混合共識模型
https://www.youtube.com/watch?v=1CuTSluL7v4&t=4s
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:去中心化的底層是共識:Polkadot 混合共識機制解讀
地址:https://www.torrentbusiness.com/article/5038.html
標籤: