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 的驗證者) ,以保持平均獎勵成比例。我們仍然可以以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個簽名,這將使技術實施者的工作變得更加容易,以及輕客戶端等輔助基礎設施的建構者。對於任何人來說,運行共識用戶端變得更加容易,用戶、質押愛好者和其他人可以立即在這一假設的基礎上進行工作。以太坊協議的未來負載不再是未知的:它可以通過硬分叉在未來提高,但只有當開發人員確信技術已經足夠改進,能夠以相同的輕鬆程度處理更多的簽名每個時間槽。

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

Total
0
Shares
Related Posts