Vitalik 的 PoS 簡化提案:堅持在 SSF 之後每個插槽使用 8192 個簽名



這將使技術實施者的工作變得更加容易,以及輕客戶端等輔助基礎設施的構建者。

撰文:Vitalik Buterin,ethresearch

編譯:鬆雪,金色財經

以太坊和大多數其他(最終確定性)權益證明系統之間的主要區別在於,以太坊試圖支持非常多的驗證器對象:我們目前有 895,000 個驗證器對象,簡單的 Zipf 定律分析表明這對應於數萬個驗證器對象是獨特的個人 / 實體。這樣做的目的是支持去中心化,甚至允許普通個人參與質押,而不要求每個人放棄自己的代理權並將控制權交給少數質押池之一。

然而,這種方法要求以太坊鏈每個時隙處理大量簽名(今天約為 28,000 個;SSF 後為 1,790,000 個),這是一個非常高的負載。支持此負載需要做出大量技術犧牲:

  • 這需要一個複雜的證明傳播機制,涉及將證明分割到多個子網之間,需要對 BLS 簽名操作進行超優化以驗證這些簽名等等。

  • 我們沒有一個明確的可替代、足夠高效的抗量子的方案。

  • 類似視圖合併的分叉選擇修復變得更加複雜,因為無法提取單個簽名。

  • 對簽名進行 SNARK 處理是困難的,因為它們的數量很大。Helios 需要在一個專用的額外簽名上操作,稱為同步委員會簽名。

  • 它通過要求一個時間槽中有三個子時間槽而不是兩個,增加了安全最小時間槽。

簽名聚合系統乍看起來是合理的,但實際上它創建了系統性複雜性,這種複雜性滲透到各個方面。

更何況,它甚至沒有達到自己的目的。質押的最低要求仍然是 32 ETH,這對很多人來說是遙不可及的。而僅僅從邏輯上分析,從長遠來看,讓每個人都簽到的系統真正為普通人提供質押似乎是不可行的:如果以太坊有 5 億用戶,其中 10% 的用戶進行質押,那麼 這意味著每個插槽有 1 億個簽名。從資訊理論上講,此設計中的處理削減需要每個插槽至少 12.5 MB 的數據可用空間,大致與完整 daksharding 的目標一樣多(!!!)。也許是可行的,但要求質押本身依賴於數據可用性採樣會帶來很大的複雜性增益——即使這只是世界人口質押的約 0.6%,而且還沒有開始涉及驗證這麼多簽名的計算問題。

因此,與其依賴於密碼學家創造魔法子彈(或魔法防彈衣),以使每個時間槽中的簽名數量不斷增加成為可能,我建議我們進行一次哲學轉變:從一開始就放棄對此類期望。這將極大地擴展 PoS 設計空間,並允許進行大量技術簡化,通過允許 Helios 直接在以太坊共識上進行 SNARK 處理,使其更加安全,並通過使即使是像 Winternitz 這樣無聊而存在已久的簽名方案也能夠可行來解決量子抗性問題。

為什麼不「只用委員會」呢?

許多面臨這一確切問題的非以太坊區塊鏈使用了一種基於委員會的安全方法。在每個時間槽中,它們隨機選擇 N 個驗證者(例如,N 約等於 1000),這些驗證者負責完成該時間槽。值得提醒的是,為什麼這種方法不足夠:它缺乏問責制。

為了理解其中的原因,假設發生了一次 51% 攻擊。這可能是一次最終性逆轉攻擊或審查攻擊。要發動攻擊,仍然需要控制大部分質押的經濟參與者同意進行攻擊,即運行參與攻擊的軟體,與所有最終被選為委員會的驗證者一起參與攻擊。隨機抽樣的數學保證了這一點。然而,他們為這樣的攻擊承擔的懲罰很小,因為大多數同意攻擊的驗證者最終沒有被看到,因為他們沒有被選為委員會成員。

目前,以太坊採取了相反的極端。如果發生 51% 攻擊,整個攻擊驗證器集合的大部分都會被削減質押。目前攻擊的成本約為 900 萬 ETH(約合 200 億美元),並且這假設網路同步以最大程度地有利於攻擊者的方式中斷。

我認為這是一個高昂的成本,而且是一個過高的成本,我們可以在這個問題上做出一些犧牲。即使攻擊成本為 1-2 百萬 ETH 也完全足夠。此外,以太坊目前存在的主要中心化風險在一個完全不同的地方:如果最低質押金額降低到接近零,大規模的質押池的實力差異將不會太大。

這就是為什麼我主張一個溫和的解決方案:在驗證者的問責制上做出一些犧牲,但仍然保持可削減的 ETH 總量相當高,作為交換,它給我們帶來了較小驗證者集合的大部分好處。

在 SSF 下,每個時間槽的 8192 個簽名會是什麼樣子呢?

假設採用傳統的兩輪共識協定(類似 Tendermint 使用的協定,以及 SSF 不可避免地會使用的協定),每個參與的驗證者每個時間槽需要兩個簽名。我們需要繞過這個現實。我看到三種主要方法,我們可以這樣做。

方法一:全力投入去中心化質押池

Python 有一句非常關鍵的話:

應該有一種——最好只有一種——明顯的方法來做到這一點。

對於質押平等化的問題,以太坊目前違反了這一規則,因為我們同時執行兩種不同的策略來實現這一目標:(i)小規模單獨質押,以及(ii)使用分佈式驗證器技術(DVT)的去中心化質押池 。由於上述原因,(i) 只能支持部分個人質押者; 總會有很多人的最低存款額太大。然而,以太坊正在為支持(i)付出非常高的技術負擔成本。

一種可能的解決方案是放棄(i)並全力投入(ii)。我們可以將最小質押金額提高到 4096 ETH,並設定 4096 個驗證者的總上限(約 1670 萬 ETH)。預計小規模質押者將加入 DVT 池:要麼通過提供資金,要麼成為節點運營商。為了防止攻擊者濫用,節點運營商角色需要以某種方式受到聲望的限制,並且池之間將通過在這方面提供不同的選擇來競爭。提供資金將是無許可的。

我們可以通過限制處罰來使該模型中的集合質押更加「寬容」,例如。至所提供質押總數的 1/8。這將減少對節點運營商的信任,儘管由於此處概述的問題,值得謹慎處理。

方法 二:兩級質押

我們創建兩層質押者:一個「重型」層,要求 4096 ETH,參與最終化,以及一個「輕型」層,沒有最低質押要求(同時也沒有存款和提款延遲,以及沒有削減的風險),它增加了另一層的安全性。要使一個區塊最終化,既需要重型層最終化它,又需要輕型層在線輕型驗證者的>= 50% 對其進行證明。

這種異質性對於抗審查和抵抗攻擊是有益的,因為要使攻擊成功,需要同時腐化重型層和輕型層。如果一層被腐化而另一層沒有,鏈將停止;如果是重型層被腐化,可以對其進行懲罰。

這種方法的另一個好處是,輕型層可以包括同時用作應用程式內抵押品的 ETH。主要的缺點是,通過確立小規模質押者和大規模質押者之間的分歧,使質押變得不太平等。

方法 三:輪流參與(即委員會但負責)

我們採取的方法與這裡提出的超級委員會設計類似:對於每個時隙,我們選擇 4096 個當前活躍的驗證者,並且我們在每個時隙期間仔細調整該集合,以確保我們仍然安全。

然而,我們做出了一些不同的參數選擇,以便在此框架內獲得「最大的收益」。特別是,我們允許驗證者以任意高的餘額參與,如果驗證者擁有超過一定數量 M 的 ETH(必須是浮動的),那麼他們在每個時段都參與委員會。如果驗證者有 N<M ETH,那麼他們有 N/M 在任何給定時間段內進入委員會的概率。

我們這裡有一個有趣的槓桿,是將出於激勵目的的「權重」與出於共識目的的「權重」解耦:委員會內每個驗證者的獎勵應該相同(至少對於≤M ETH 的驗證者),以保持平均獎勵成比例。我們仍然可以以 ETH 為權重,對委員會中的驗證者進行共識計數。這確保了打破最終性需要 ETH 數量等於委員會中 ETH 總量的大於三分之一。

Zipf 定律分析將按如下方式計算 ETH 數量:

在總餘額的每個二次方級別,驗證者的數量與該餘額級別成反比,並且這些驗證者的總餘額將相同。

因此,委員會將有來自每個餘額級別的等量 ETH 參與,除了高於障礙 M 的級別(驗證者始終在委員會中)。

因此,我們在上述級別的每個 K 驗證器中都有 Log2(M)級別,和 K+K/2+……=2K 以上級別的驗證者。因此,K=4096/Log2(M)+2。

最大的驗證器將有 M*k ETH。我們可以向後推算:如果最大的驗證器有 2^18=262144 ETH,這意味著(大致)M = 1024 and k = 256。

質押的 ETH 總額為:

前 512 名驗證者的全部權益 (2^18*1+2^17*2+……+2^10*2^8=2359296)

加上隨機抽樣的較小賭注(2^8*(2^9+2^8+2^7……)約等於 2^8*2^10=2^18)

我們總共獲得了 2621440 個 ETH,或者攻擊成本約為 900k ETH。

這種方法的主要缺點在於在協定內部引入了一些更多的複雜性,以通過一種使我們在委員會更改時仍然能夠獲得共識安全性的方式隨機選擇驗證者。

其主要優勢在於它保留了獨立質押的可識別形式,保留了一個單一的系統,並且甚至允許將最小質押金額降低到非常低的水準(例如 1 ETH)。

總結

如果我們確定在 SSF 協定之後,我們希望堅持使用 8192 個簽名,這將使技術實施者的工作變得更加容易,以及輕客戶端等輔助基礎設施的構建者。對於任何人來說,運行一個共識客戶端都變得更加容易,用戶、質押愛好者和其他人可以立即在這一假設的基礎上進行工作。以太坊協定的未來負載不再是未知的:它可以通過硬分叉在未來提高,但只有當開發人員確信技術已經足夠改進,能夠以相同的輕鬆程度處理更多的簽名每個時間槽。

剩下的工作將是決定我們想要採取上述三種方法中的哪一種,或者也許是完全不同的方法。這將是一個關於我們對哪些權衡感到舒適的問題,特別是我們如何解決涉及的問題,比如流動質押,這可能可以與現在變得更加容易的技術問題分開解決。

聯系郵箱:0xniumao@gmail.com