跳至主要内容

頁面上次更新: 2024年4月11日

秘密領導者選舉

在現今以權益證明為基礎的共識機制中,接下來的區塊提議者清單是公開的,因此有可能對應出他們的 IP 位址。 這表示攻擊者可識別哪些驗證者接下來應提出區塊,並瞄準他們發動阻斷服務 (DOS) 攻擊,使他們無法及時提出區塊。

這可能為攻擊者帶來獲利機會。 例如,為 n+1 時槽選出的區塊提議者,可以對 n 時槽的提議者發動阻斷服務 (DOS) 攻擊,導致他們錯失提議區塊的機會。 這樣,發動攻擊的區塊提交者可提取兩個時隙的最大可提取價值,或者獲取本應拆分到兩個區塊的所有交易,並將它們全部添加在一個區塊中,從而獲得所有相關費用。 這對家庭驗證者的影響可能比複雜的機構驗證者更大,機構驗證者可以使用更先進的方法來保護自己免受阻斷服務攻擊,因此可能成為一股中心化力量。

有數種方式可以解決這個問題。 其中一個方法是分散式驗證者技術 (opens in a new tab),目標是將執行驗證者的各種任務分散到多台機器上,並具備備援能力,讓攻擊者更難阻止在特定時槽提議區塊。 然而,最穩健的解決方案是秘密單一領導者選舉 (SSLE)

秘密單一領導者選舉

秘密單一領導者選舉採用巧妙的加密技術來確保只有選定的驗證者知道他們已被選中。 這是透過讓每個驗證者提交其對共享金鑰的承諾實現的。 這些承諾被打亂並重新設定,確保沒有人可以將承諾對應到驗證者,但每個驗證者都知道哪個承諾屬於他們。 接著,系統會隨機選擇一個承諾。 如果驗證者偵測到他們的承諾被選中,即知道輪到自己提出區塊。

這個想法的主要實作稱為 Whisk (opens in a new tab)。 其運作方式如下:

  1. 驗證者對共用的金鑰做出承諾。 承諾方案被設計成可以與驗證者身分綁定,但也是隨機的,因此沒有第三方可以對綁定進行反向工程,並將特定承諾連結到特定驗證者。
  2. 在一個時期開始時,使用 RANDAO 隨機選擇一組驗證者,以對 16,384 個驗證者的承諾進行抽樣。
  3. 在接下來的 8182 個時隙(一天)中,區塊提交者使用自己的私密熵對打亂部分承諾並隨機化。
  4. 打亂作業結束後,RANDAO 用於建立有序的承諾清單。 這個清單會映射到以太坊時隙。
  5. 驗證者看到他們的承諾被附加到特定的時隙,當該時隙到來時,驗證者就需要提出一個區塊。
  6. 重複這些步驟,以便承諾到時隙的分配始終遠遠領先於目前時隙。

這樣可以防止攻擊者提前知道哪個特定驗證者將提出下一個區塊,以防範阻斷服務攻擊。

秘密非單一領導者選舉 (SnSLE)

另外也有一項獨立提案,旨在建立一種情境,讓每個驗證者在每個時槽都有隨機機會提議區塊,類似於工作量證明決定區塊提議的方式,此提案稱為秘密非單一領導者選舉 (SnSLE)。 一種簡單的方法是利用 RANDAO 函式來隨機選擇目前協定中的驗證者。 RANDO 的理念是,將許多獨立驗證者提交的雜湊值混合後,產生足夠隨機的數字。 在秘密非單一領導者選舉中,這些雜湊值可用於選擇下一個區塊提交者,例如選擇數值最低的雜湊值。 可以限制有效雜湊值的範圍,以調整每個時隙中單個驗證者被選中的可能性。 藉由規定哈希值必須小於 2^256 * 5 / N (其中 N = 活躍驗證者數量),任何個別驗證者在每個時槽中被選中的機率就會是 5/N。 在這個例子中,至少一個提交者在每個時隙產生有效雜湊值的幾率為 99.3%。

目前進度

秘密單一領導者選舉與秘密非單一領導者選舉均處於研究階段。 這兩種理念都還沒有最終的規範。 秘密單一領導者選舉與秘密非單一領導者選舉是競爭關係,不能同時實作。 在上線之前,我們需要在研發、原型設計及公共測試網實作上投入更多時間。

延伸閱讀

頁面最後更新時間: 2024年4月11日

這篇文章對你有幫助嗎?