Eth2 Staking系列:共識機制篇

買賣虛擬貨幣
本期我們的主題是eth2背後的共識機制。Eth2採用了一種新穎的方式來判斷區塊鏈的前部區塊和組成區塊。Eth2混合了兩種機制(LMD-GHOST及Casper FFG)以達成共識,不僅使得網路在正常執行時能夠安全快速,並且在受到攻擊時也能保障安全性。1. 三元悖論FLP不可能性(FLP impossibility)[1]是分散式計算領域的一個關鍵成果,其指出分散式系統不可能同時具有安全性(safety)、活性(liveness)和完全非同步性(full asynchrony),除非是在對系統做出不合理假設的情況下。

安全性指決定不能被撤銷,活性則指標對新事物做出決定。如果在資訊傳遞中沒有時間限制,那麼該協議是非同步的。

如果節點能夠可靠地進行通訊,始終誠實地遵循協議且永不宕機,那麼要達成共識非常容易,但這不是真實情況。當這些假設不成立時,FLP不可能性證明了至少要折衷以下三者中的一項:安全性、活性或完全非同步性。

2. 分叉選擇規則:GHOSTs

Eth2使用Greedy Heaviest Observed Subtree (GHOST,貪婪最重可觀察子樹協議) [2]作為其分叉選擇規則。在GHOST協議中,獲得投票數最高的分叉將被選為鏈頭(將每個分叉區塊及其各自子區塊的所有票數計入考慮)。

換句話說[3],每當發生分叉時,GHOST會選擇獲得更多訊息支援的區塊子樹(多數最近訊息要麼支援該區塊,要麼支援該區塊的其中一個子區塊)。此演算法會一直重複這種操作,直至達到沒有子區塊的區塊。

與最長鏈規則相比, GHOST的優點在於能夠在網路延遲較高時降低攻擊效率,同時最小化鏈重組的深度。原因是即使攻擊者能夠高效地在其分叉鏈上繼續產生區塊,嘗試使該鏈成為最長鏈,GHOST也會選擇另一條票數更高的分叉鏈。

具體來說,Eth2在其PoS機制中採用了GHOST的一個變體,即Latest Message Driven GHOST (LMD-GHOST,由最新訊息驅動的GHOST)。LMD-GHOST背後的理念是計算鏈頭時,只需考慮每個驗證者最近的投票,而不是過去產生的任何投票。這種方式極大地減少了執行GHOST所需的計算量,因為執行分叉選擇規則時需要考慮的分叉數量,不可能大於驗證者的數量(Big O表示法中的O(v))。

在GHOST的規則中,驗證者/礦工隨時可以在區塊鏈上新增新的區塊(活性),並且可以在區塊鏈歷史中的任何時間點進行這種操作(非同步性)。因此基於GHOST協議的區塊鏈具備活性和完全非同步性,根據FLP不可能性,我們可以推斷出其安全性會大打折扣。

安全性的折衷會以區塊重組的形式表現出來,區塊鏈可能會突然跨深度任意切換分叉。這顯然是不理想的狀況,eth2鏈應對這種情況的方式是讓使用者假設礦工的區塊需要多久才能被全網接收到,因此交易需要等待x個確認。然而eth2並不會做出此類假設。

3. 友好的確定性小工具(FFG

失去安全性的區塊鏈是無效的,因為無法針對任何決定達成共識,使用者也無法就鏈的狀態達成一致。Casper the Friendly Finality Gadget (Casper FFG)[4]便因此誕生。Casper FFG機制在做出決策的時候更傾向於保障安全性而非活性。這就意味著雖然Casper FFG能做出最終性決策,但如果網路狀態不理想,它可能無法就任何事情做出決策。

FFG機制是經典實用拜占庭容錯(PBFT)[5]在加密經濟學領域的一種應用,首先節點表示他們想要就某事達成一致(justification),然後就彼此之間達成的一致性形成共識(finalisation)。

Eth2並不會在每個slot(一個區塊生成的預計時間)都進行證明和最終確認,而是每32個slots進行證明和最終確認,每32個slots就稱為一個epoch。首先,驗證者要對一個epoch中的所有32個區塊進行簽名,表示就此達成一致。如果2/3的驗證者進行了簽名,那麼這些區塊就得到了證明。在後一個epoch中,驗證者們會進行一次投票,表明他們看見了之前被證明的epoch,如果有2/3的驗證者投票,那麼前一個epoch就被最終確定,並且永久地成為Eth2鏈的一部分。

FFG這種方式十分高明。投票實際上由兩個子投票構成,一個用於證明epoch,另一個用於對證明過後的epoch進行最終確認。這節省了很多節點之間額外的通訊需求,有助於實現將網路規模擴大至數百萬驗證者的目標。

4. “同袍同澤”的共識機制

Eth2的共識既仰賴於LMD-GHOST機制(增加新區塊,決定區塊鏈鏈頭),也仰賴於Casper FFG機制(最終決定哪些區塊成為區塊鏈的一部分)。GHOST強調活性,能夠快速高效地將區塊新增進區塊鏈,而FFG則與GHOST相輔相成,透過對epochs進行最終確定,彌補了安全性的缺失。

那麼這兩個協議是如何合併的呢?具體方式是在基於FFG被最終確認的最近一個區塊中執行GHOST。因此,最近一個基於FFG被最終確定的區塊總會是區塊鏈的一部分,也就是說GHOST並不需要考慮之前的區塊。

正常情況下,區塊生成之後獲得了2/3的驗證者的投票,那麼這些區塊將透過GHOST協議被新增到區塊鏈的頭部,之後,這些區塊就會透過FFG被證明和最終確定,而FFG會考慮最近的幾個epochs。

如果網路受到攻擊,且/或很大一部分的驗證者離線,GHOST還是會繼續新增新區塊。由於GHOST注重活性且缺乏安全性,隨著新區塊被不斷新增進區塊鏈中,可能會對區塊鏈頭部進行更改,這意味著節點會持續獲取新的資訊。另一方面,FFG相比活性更注重安全性,也就是說在網路足夠穩定(驗證者能夠再次進行一致性投票)之前,FFG將停止對區塊進行最終確認。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;