在現今基於權益證明 (PoS)的共識機制中,即將到來的區塊提案者名單是公開的,並且可以對應出他們的 IP 位址。這意味著攻擊者可以識別出哪些驗證者預定要提案區塊,並對他們發動阻斷服務 (DOS) 攻擊,使他們無法及時提案區塊。
這可能會為攻擊者創造獲利的機會。例如,被選中在時槽 n+1 的區塊提案者可以對時槽 n 的提案者發動 DOS 攻擊,使他們錯失提案區塊的機會。這將允許發動攻擊的區塊提案者提取兩個時槽的 MEV,或者抓取所有本應分配在兩個區塊中的交易,並將它們全部包含在一個區塊中,從而獲得所有相關的費用。這對家庭驗證者的影響可能大於那些可以使用更進階方法保護自己免受 DOS 攻擊的專業機構驗證者,因此可能會成為一種中心化的力量。
針對這個問題有幾種解決方案。其中之一是分散式驗證者技術 (opens in a new tab),其旨在將與執行驗證者相關的各種任務分散到多台機器上,並具有備援機制,使得攻擊者更難以阻止在特定時槽中提案區塊。然而,最穩健的解決方案是單一秘密領袖選舉 (SSLE)。
單一秘密領袖選舉
在 SSLE 中,使用了巧妙的密碼學來確保只有被選中的驗證者知道自己被選中。其運作方式是讓每個驗證者提交一個對他們共同分享的秘密的承諾。這些承諾會被洗牌和重新配置,使得沒有人可以將承諾對應到驗證者,但每個驗證者都知道哪個承諾屬於他們。然後,隨機選擇一個承諾。如果驗證者偵測到他們的承諾被選中,他們就知道輪到他們提案區塊了。
這個想法的主要實作稱為 Whisk (opens in a new tab)。其運作方式如下:
- 驗證者對一個共享的秘密做出承諾。承諾機制的設計使其可以綁定到驗證者身分,但同時也被隨機化,使得沒有第三方可以對該綁定進行逆向工程,並將特定的承諾連結到特定的驗證者。
- 在一個紀元開始時,會使用 RANDAO 選擇一組隨機的驗證者,從 16,384 個驗證者中對承諾進行抽樣。
- 在接下來的 8182 個時槽(1 天)中,區塊提案者使用他們自己的私有熵對承諾的子集進行洗牌和隨機化。
- 洗牌完成後,會使用 RANDAO 建立一個承諾的排序清單。這個清單會對應到以太坊時槽。
- 驗證者會看到他們的承諾附加到特定的時槽,當該時槽到來時,他們就會提案區塊。
- 重複這些步驟,使得承諾對時槽的分配始終遠遠領先於當前的時槽。
這可以防止攻擊者事先知道哪個特定的驗證者將提案下一個區塊,從而防止發動 DOS 攻擊的能力。
秘密非單一領袖選舉 (SnSLE)
還有一個獨立的提案,旨在創造一種情境,讓每個驗證者在每個時槽中都有隨機的機會提案區塊,類似於在工作量證明 (PoW) 下決定區塊提案的方式,這被稱為秘密非單一領袖選舉 (SnSLE)。實現這一點的一個簡單方法是利用現今協定中用於隨機選擇驗證者的 RANDAO 函數。RANDAO 的概念是透過混合許多獨立驗證者提交的雜湊來產生一個足夠隨機的數字。在 SnSLE 中,這些雜湊可以用來選擇下一個區塊提案者,例如透過選擇最低值的雜湊。可以限制有效雜湊的範圍,以調整個別驗證者在每個時槽中被選中的可能性。透過斷言雜湊必須小於 2^256 * 5 / N,其中 N = 活躍驗證者的數量,任何個別驗證者在每個時槽中被選中的機率將是 5/N。在這個例子中,在每個時槽中至少有一個提案者產生有效雜湊的機率為 99.3%。
目前進度
SSLE 和 SnSLE 都處於研究階段。這兩個想法目前都還沒有已定案的規格。SSLE 和 SnSLE 是相互競爭的提案,無法同時實作。在正式推出之前,它們需要更多的研究與開發、建立原型,並在公共測試網上進行實作。