Vitalik新文:以太坊PoS還有哪些地方可以改進?如何實現?

avatar
律動
2 天前

特別感謝 Justin Drake、Hsiao-wei Wang、@antonttc 和 Francesco 的反饋和審閱。

最初,「合併」是指以太坊協議自推出以來歷史上最重要的事件:期待已久且來之不易的從工作量證明到權益證明的過渡。如今,以太坊已經成為一個穩定運行的權益證明系統近兩年了,這種權益證明在穩定性、性能和避免中心化風險方面表現非常出色。然而,權益證明仍有一些重要領域需要改進。

我 2023 年的路線圖將其分為幾部分:改進技術特性,例如穩定性、性能和對較小驗證者的可訪問性,以及經濟變化以應對中心化風險。前者接管了「合併」的標題,而後者成為「禍害」的一部分。

這篇文章將重點討論「合併」部分:權益證明的技術設計中還有哪些可以改進的地方,有哪些途徑可以實現這些改進?

這並不是一份可以對權益證明進行改進的詳盡清單;相反,這是一份正在積極考慮的想法清單。

單槽最終性和質押民主化

我們正在解決什麼問題?

如今,需要 2-3 個 epoch(約 15 分鐘)才能完成一個區塊,並且需要 32 ETH 才能成為質押者。這最初是為了在三個目標之間取得平衡而做出的妥協:

· 最大化可以參與質押的驗證者數量(這直接意味著最小化質押所需的最小 ETH)

· 最小化完成時間

· 最小化運行節點的開銷

這三個目標是相互衝突的:為了實現經濟最終性(即攻擊者需要銷燬大量 ETH 才能恢復最終確定的區塊),每次最終確定時,每個驗證者都需要簽署兩條消息。因此,如果您有許多驗證者,要麼需要很長時間來處理所有簽名,要麼需要非常強大的節點來同時處理所有簽名。

請注意,這一切都取決於以太坊的一個關鍵目標:確保即使成功的攻擊也會給攻擊者帶來高昂的成本。這就是「經濟最終性」一詞的含義。如果我們沒有這個目標,那麼我們可以通過隨機選擇一個委員會(例如 Algorand 所做的那樣)來最終確定每個時隙來解決這個問題。但這種方法的問題在於,如果攻擊者確實控制了 51% 的驗證者,那麼他們可以以非常低的成本進行攻擊(恢復最終確定的區塊、審查或延遲最終確定):只有委員會中的部分節點可以被檢測為參與攻擊並受到懲罰,無論是通過削減還是少數軟分叉。這意味著攻擊者可以多次反覆攻擊該鏈。因此,如果我們想要經濟最終性,那麼基於委員會的簡單方法是行不通的,乍一看,我們確實需要全套驗證者參與。

理想情況下,我們希望保留經濟終結性,同時在兩個方面改善現狀:

· 在一個時隙內終結區塊(理想情況下,保持甚至減少當前 12 秒的長度),而不是 15 分鐘

· 允許驗證者用 1 ETH 進行質押(從 32 ETH 降至 1 ETH)

第一個目標由兩個目標證明,這兩個目標都可以看作是「使以太坊的屬性與(更中心化的)注重性能的 L1 鏈的屬性保持一致」。

首先,它確保所有以太坊用戶都能從通過最終確定機制實現的更高級別的安全保障中受益。如今,大多數用戶都無法享受這種保障,因為他們不願意等待 15 分鐘;而通過單槽最終確定機制,用戶幾乎可以在交易確認後立即看到交易最終確定。其次,如果用戶和應用程序不必擔心鏈回滾的可能性(除非出現相對罕見的不活動洩漏情況),那麼它就簡化了協議和周圍的基礎設施。

第二個目標是出於支持單獨質押者的願望。一次又一次的民意調查反覆表明,阻止更多人單獨質押的主要因素是 32 ETH 的最低限額。將最低限額降低到 1 ETH 將解決這個問題,以至於其他問題成為限制單獨質押的主要因素。

存在一個挑戰:更快的確定性和更民主化的質押目標都與最小化開銷的目標相沖突。事實上,這個事實就是我們一開始不採用單槽確定性的全部原因。然而,最近的研究提出了一些解決這個問題的可能方法。

它是什麼以及它是如何工作的?

單時隙最終性涉及使用在一個時隙內最終確定區塊的共識算法。這本身並不是一個難以實現的目標:許多算法(例如 Tendermint 共識)已經以最佳屬性實現了這一點。以太坊獨有的一個理想屬性是 Tendermint 不支持的不活動洩漏,即使超過 1/3 的驗證者離線,該屬性也允許鏈繼續運行並最終恢復。幸運的是,這個願望已經得到滿足:已經有提案修改 Tendermint 式共識以適應不活動洩漏。

問題最難的部分是弄清楚如何使單槽最終性在驗證者數量非常高的情況下發揮作用,而不會導致極高的節點運營商開銷。為此,有幾種領先的解決方案:

選項 1:暴力破解——努力實現更好的簽名聚合協議,可能使用 ZK-SNARKs,這實際上允許我們處理每個插槽中數百萬個驗證器的簽名。

Horn,為更好的聚合協議而提出的設計之一。

選項 2:Orbit 委員會 - 一種新機制,允許隨機選擇的中型委員會負責最終確定鏈,但以保留我們正在尋找的攻擊成本屬性的方式。

思考 Orbit SSF 的一種方法是,它開闢了一個妥協選項空間,範圍從 x=0(Algorand 式委員會,沒有經濟最終性)到 x=1(以太坊現狀),在中間開闢了點,以太坊仍然具有足夠的經濟最終性以實現極度安全,但同時我們獲得了只需要中等規模的隨機驗證者樣本參與每個時段的效率優勢。

Orbit 利用驗證者存款規模預先存在的異質性來獲得儘可能多的經濟最終性,同時仍將給予小型驗證者相應的角色。此外,Orbit 使用緩慢的委員會輪換來確保相鄰法定人數之間的高度重疊,從而確保其經濟最終性仍然適用於委員會輪換邊界。

選項 3:兩層質押 - 一種機制,其中質押者分為兩類,一類的存款要求較高,另一類的存款要求較低。只有存款要求較高的層級會直接參與提供經濟最終性。關於存款要求較低的層級究竟有哪些權利和責任,有各種提案(例如,參見 Rainbow 質押帖子)。常見想法包括:

· 將權益委託給更高層級的權益持有者的權利

· 隨機抽取的較低層級權益持有者證明並需要完成每個區塊

· 生成納入列表的權利

與現有研究有哪些聯繫?

· 實現單槽最終性的途徑 (2022):https://notes.ethereum.org/@vbuterin/single_slot_finality

· 以太坊單槽最終性協議的具體提案 (2023):https://eprint.iacr.org/2023/280

· Orbit SSF:https://ethresear.ch/t/orbit-ssf-solo-staking-friendly-validator-set-management-for-ssf/19928

· 對 Orbit 風格機制的進一步分析:https://notes.ethereum.org/@anderselowsson/Vorbit_SSF

· Horn,簽名聚合協議 (2022):https://ethresear.ch/t/horn-collecting-signatures-for-faster-finality/14219

· 大規模共識的簽名合併 (2023): https://ethresear.ch/t/signature-merging-for-large-scale-consensus/17386?u=asn

· Khovratovich 等人提出的簽名聚合協議:https://hackmd.io/@7dpNYqjKQGeYC7wMlPxHtQ/BykM3ggu0#/

· 基於 STARK 的簽名聚合 (2022):https://hackmd.io/@vbuterin/stark_aggregationRainbow

· 質押:https://ethresear.ch/t/unbundling-staking-towards-rainbow-staking/18683

還剩下什麼要做?需要權衡什麼?

有四種主要可行的路徑(我們也可以採用混合路徑):

· 維持現狀

· Orbit SSF

· 強力 SSF

· 具有兩層質押的 SSF

(1) 意味著不做任何工作,保持質押原樣,但這會使以太坊的安全體驗和質押中心化屬性變得比本來更糟糕。

(2) 避免「高科技」,並通過巧妙地重新思考協議假設來解決問題:我們放寬了「經濟終結性」要求,這樣我們就要求攻擊成本高昂,但可以接受攻擊成本可能比現在低 10 倍(例如,攻擊成本為 25 億美元,而不是 250 億美元)。人們普遍認為,以太坊今天的經濟終結性遠遠超出了它所需要的水平,它的主要安全風險在其他地方,所以這可以說是一個可以接受的犧牲。

主要的工作是驗證 Orbit 機制是否安全並具有我們想要的屬性,然後完全形式化並實施它。此外,EIP-7251(增加最大有效餘額)允許自願驗證者餘額合併,這會立即減少鏈驗證開銷,並作為 Orbit 推出的有效初始階段。

(3) 避免了巧妙的重新思考,而是用高科技強行解決問題。要做到這一點需要在很短的時間內(5-10 秒)收集大量簽名(100 萬以上)。

(4) 避免了巧妙的重新思考和高科技,但它確實創建了一個兩層的質押系統,仍然具有中心化風險。風險在很大程度上取決於較低質押層獲得的特定權利。例如:

如果低層級質押者需要將其證明權委託給高層級質押者,那麼委託可能會中心化,最終我們就會得到兩個高度集中的質押層級。如果需要對低層級進行隨機抽樣來批准每個區塊,那麼攻擊者可以花費極少量的 ETH 來阻止最終性。如果低層級質押者只能製作納入列表,那麼證明層可能仍處於中心化狀態,此時對證明層的 51% 攻擊可以審查納入列表本身。

可以組合多種策略,例如:

· (1 + 2):添加 Orbit 而不執行單槽最終性。

· (1 + 3):使用蠻力技術減少最小存款規模而不執行單槽最終性。所需的聚合量比純 (3) 情況少 64 倍,因此問題變得更容易。

· (2 + 3):使用保守參數執行 Orbit SSF(例如 128k 驗證者委員會而不是 8k 或 32k),並使用蠻力技術使其超高效。

· (1 + 4):添加彩虹質押而不執行單槽最終性。

它如何與路線圖的其他部分互動?

除了其他好處之外,單槽終結性還降低了某些類型的多塊 MEV 攻擊的風險。此外,在單槽終結性世界中,證明者 - 提議者分離設計和其他協議內塊生產管道需要以不同的方式設計。

暴力策略的弱點是,它們使得縮短槽時間變得更加困難。

單一秘密 Leader 選舉

我們要解決什麼問題?

今天,哪個驗證者將提出下一個區塊是預先知道的。這會產生一個安全漏洞:攻擊者可以監視網絡,識別哪些驗證者對應哪些 IP 地址,並在驗證者即將提出區塊時對其發起 DoS 攻擊。

它是什麼?它是如何工作的?

解決 DoS 問題的最佳方法是隱藏哪個驗證者將生成下一個區塊的信息,至少在區塊實際生成之前。請注意,如果我們刪除「單一」要求,這很容易:一種解決方案是讓任何人都可以創建下一個區塊,但要求 randao 揭示小於 2256 / N。平均而言,只有一個驗證者能夠滿足此要求 - 但有時會有兩個或更多,有時會有零個。將「保密」要求與「單一」要求結合起來一直是一個難題。

單一秘密領導者選舉協議通過使用一些加密技術為每個驗證者創建一個「盲」驗證者 ID 來解決這個問題,然後讓許多提議者有機會對盲 ID 池進行改組和重新盲化(這類似於混合網絡的工作方式)。在每個時段,都會選擇一個隨機的盲 ID。只有該盲 ID 的所有者才能生成有效的證明來提議區塊,但沒有人知道該盲 ID 對應哪個驗證者。

有哪些現有研究的鏈接?

· Dan Boneh 的論文(2020 年):https://eprint.iacr.org/2020/025.pdf

· Whisk(以太坊的具體提案,2022 年):https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763

· ethresear.ch 上的單一秘密領導者選舉標籤:https://ethresear.ch/tag/single-secret-leader-election

· 使用環簽名的簡化 SSLE:https://ethresear.ch/t/simplified-ssle/12315

還剩下什麼要做?需要權衡什麼?

實際上,剩下的就是找到並實現一個足夠簡單的協議,以便我們可以輕鬆地在主網上實現它。我們非常重視以太坊是一個相當簡單的協議,我們不希望複雜性進一步增加。我們看到的 SSLE 實現增加了數百行規範代碼,並在複雜的加密中引入了新的假設。找出一個足夠有效的抗量子 SSLE 實現也是一個懸而未決的問題。

最終可能會出現這樣的情況:只有當我們出於其他原因(例如狀態樹、ZK-EVM)在以太坊協議的 L1 上引入通用零知識證明機制時,SSLE 的「邊際額外複雜性」才會下降到足夠低的程度。

另一種選擇是根本不理會 SSLE,而是使用協議外的緩解措施(例如在 p2p 層)來解決 DoS 問題。

它如何與路線圖的其他部分互動?

如果我們添加證明者 - 提議者分離 (APS) 機制,例如執行票證,那麼執行塊(即包含以太坊交易的塊)將不需要 SSLE,因為我們可以依賴專門的塊構建器。但是,對於共識塊(即包含協議消息(例如證明、可能包含列表的部分等)的塊),我們仍將受益於 SSLE。

更快的交易確認

我們正在解決什麼問題?

以太坊的交易確認時間進一步減少是有價值的,從 12 秒減少到 4 秒。這樣做將顯著改善 L1 和基於彙總的用戶體驗,同時使 defi 協議更加高效。它還將使 L2 更容易去中心化,因為它將允許大量 L2 應用程序在基於彙總上工作,從而減少 L2 構建自己的基於委員會的去中心化排序的需求。

它是什麼?它是如何工作的?

這裡大致有兩種技術:

· 減少時隙時間,例如減少到 8 秒或 4 秒。這並不一定意味著 4 秒的最終性:最終性本質上需要三輪通信,因此我們可以將每輪通信設為一個單獨的塊,在 4 秒後至少會得到初步確認。

· 允許提議者在時隙過程中發佈預確認。在極端情況下,提議者可以實時將他們看到的交易納入他們的塊中,並立即為每筆交易發佈預確認消息(「我的第一筆交易是 0×1234...」,「我的第二筆交易是 0×5678...」)。提議者發佈兩個相互衝突的確認的情況可以通過兩種方式處理:(i)通過削減提議者,或(ii)通過使用證明者投票決定哪一個更早。

有哪些現有研究的鏈接?

· 基於預確認:https://ethresear.ch/t/based-preconfirmations/17353

· 協議強制提議者承諾 (PEPC):https://ethresear.ch/t/unbundling-pbs-towards-protocol-enforced-proposer-commitments-pepc/13879

· 並行鏈上的交錯週期(2018 年實現低延遲的想法):https://ethresear.ch/t/staggered-periods/1793

剩下要做什麼,又有哪些權衡?

目前還不清楚減少時隙時間的實用性。即使在今天,世界上許多地區的質押者也很難足夠快地獲得證明。嘗試 4 秒的時隙時間存在集中驗證者集的風險,並且由於延遲,在少數特權地區之外成為驗證者是不切實際的。

提議者預確認方法的弱點是它可以大大改善平均情況下的包含時間,但不能改善最壞情況下的包含時間:如果當前提議者運行良好,您的交易將在 0.5 秒內得到預確認,而不是(平均)6 秒內被納入,但如果當前提議者離線或運行不佳,您仍然需要等待整整 12 秒才能開始下一個時隙並提供新的提議者。

此外,還有一個懸而未決的問題,即如何激勵預確認。提議者有動機儘可能長時間地最大化他們的可選性。如果證明者簽署了預確認的及時性,那麼交易發送者可以將部分費用以立即預確認為條件,但這會給證明者帶來額外的負擔,並可能使證明者更難繼續充當中立的「啞管道」。

另一方面,如果我們不嘗試這樣做並將最終確定時間保持在 12 秒(或更長),生態系統將更加重視第 2 層制定的預確認機制,跨第 2 層的交互將需要更長的時間。

它如何與路線圖的其他部分互動?

基於提議者的預確認實際上依賴於證明者 - 提議者分離 (APS) 機制,例如執行票證。否則,提供實時預確認的壓力可能會對常規驗證者造成過於集中的壓力。

其他研究領域

51% 攻擊恢復

人們通常認為,如果發生 51% 攻擊(包括無法通過加密證明的攻擊,例如審查),社區將齊心協力實施少數派軟分叉,確保好人獲勝,壞人因不活動而洩露或被削減。然而,這種對社交層的過度依賴程度可以說是不健康的。我們可以嘗試減少對社交層的依賴,使恢復過程儘可能自動化。

完全自動化是不可能的,因為如果是的話,這將算作一個 >50% 容錯的共識算法,我們已經知道這類算法的(非常嚴格的)數學可證明的侷限性。但我們可以實現部分自動化:例如,如果客戶端審查了客戶端已經看到足夠長時間的交易,客戶端可以自動拒絕接受一條鏈作為最終確定的,甚至拒絕接受它作為分叉選擇的頭部。一個關鍵目標是確保攻擊中的壞人至少不能快速獲得勝利。

增加法定人數閾值

今天,如果 67% 的質押者支持,區塊就會最終確定。有人認為這過於激進。在以太坊的整個歷史上,只有一次(非常短暫的)最終失敗。如果將這一百分比增加到 80%,那麼增加的非最終性時期數量將相對較低,但以太坊將獲得安全性:特別是,許多更具爭議的情況將導致最終性的暫時停止。這似乎比「錯誤的一方」立即獲勝要健康得多,無論是錯誤的一方是攻擊者,還是客戶端有錯誤。

這也回答了「單獨質押者的意義何在」這個問題。今天,大多數質押者已經通過池進行質押,而且似乎不太可能讓單獨質押者獲得高達 51% 的質押 ETH。然而,如果我們努力的話,讓單獨質押者達到阻止多數派的少數派,特別是如果多數派達到 80%(因此阻止多數派的少數派只需要 21%)似乎是有可能實現的。只要單獨質押者不參與 51% 攻擊(無論是最終性逆轉還是審查),這種攻擊就不會獲得「乾淨利落的勝利」,並且單獨質押者會積極幫助組織少數派軟分叉。

抗量子性

Metaculus 目前認為,儘管誤差較大,但量子計算機很可能在 2030 年代的某個時候開始破解密碼學:

量子計算專家,例如 Scott Aaronson,最近也開始更加認真地考慮量子計算機在中期內實際工作的可能性。這對整個以太坊路線圖都有影響:這意味著目前依賴於橢圓曲線的每個以太坊協議部分都需要某種基於哈希或其他量子抗性的替代方案。這特別意味著我們不能假設我們將能夠永遠依靠 BLS 聚合的優異特性來處理來自大型驗證器集的簽名。這證明了在權益證明設計性能假設方面的保守性是合理的,也是更積極地開發量子抗性替代方案的原因。

原文鏈接

歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方賬號:https://twitter.com/BlockBeatsAsia

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論