跳至主要内容

頁面上次更新: 2024年2月20日

秘密領導者選舉

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

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

有數種方式可以解決這個問題。 其中之一是分散式驗證者技術(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%。

目前進度

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

了解更多

這篇文章對你有幫助嗎?