Vitalik 最新研究:如何解決以太坊中大量雙層質押所帶來的風險?



本文將主要聚焦在目前LSD協定與流動性池存在的節點運作者的中心化風險以及不必要的共識負擔兩方面難題。

原文標題:《 Protocol and staking pool changes that could improve decentralization and reduce consensus overhead

作者:Vitalik Buterin

編譯:bayemon.eth, ChainCatcher

特別感謝Mike Neuder、Justin Drake和其他人的回饋和審查。另請參閱:Mike Neuder、Dankrad Feist和arixon.eth早前就類似主題發表的文章。

目前以太坊的發展現狀可以說包含了大量雙層質押(two-tiered staking),這裡所說的雙層質押是指有兩類參與者的質押模式。

  1. 節點經營者Node Operator :營運節點,並以自己的聲譽活一定金額的自有資本作抵押
  2. 代理商Delegator :代理商們質押一定數量的以太坊,沒有最低額度,對抵押品以外的其他參與方式也沒有額外的限製

這種新興的雙層質押是透過大量參與提供流動性質押代幣(LST)的質押池產生的。 (Rocket Pool和Lido都是這種模式)。

然而目前的雙層質押存在兩種缺陷:

  1. 節點運作者的中心化風險:目前所有質押池中節點運作者的選取機製仍然過度中心化
  2. 不必要的共識負擔:以太坊L1每個Epoch要驗證約800000個簽名,這對單一slot而言是極大的負荷。此外,由於流動性質押池所需的資金較多,而網路本身並沒有從這種負荷中充分獲益。因此,如果以太坊網路能夠實現合理的分散性與安全性,而不需要每個質押者依照時段簽名,那麼社群就可以採納這類解決方案,從而有效縮減每個時段的簽名數量。

本文將描述解決上述兩個問題的方案,首先假設,大多數資本都掌握在那些不願意以當前形式親自管理質押節點、在每個slot上簽署信息,鎖定存款並再分配給資金被削減者,那麼在這種情況下,這些人還能扮演怎樣的角色,從而依然為網路的去中心化與安全性做出有意義的貢獻呢?

目前的雙層質押是如何運作的?

目前最受歡迎的兩個質押池分別是Lido和RocketPool,就Lido而言,參與的雙方分別是:

  1. 節點運營者:由Lido DAO投票選出,這也意味著這實際上是由LDO持有者選出,當有人將ETH存入Lido智能合約係統時,就會創建stETH,節點操作員可將其投入質押池(但由於提現憑證與智能合約地址綁定,業者不能隨意提現)
  2. 代理商:當有人將ETH存在Lido智能合約係統時,會產生stETH,節點運營者可以將其作為質押(但由於提現憑證與智能合約地址綁定,運營商不能隨意提現)

對於Rocket Pool而言,則分別為:

  1. 節點運作者:任何人都可以成為節點操作員,隻需提交8個ETH和一定數量的RPL代幣。
  2. 代理商:當有人將ETH存入Rocket Pool智能合約係統時,就會產生rETH,節點操作員可以將其作為質押(同樣由於提現憑證與智能合約地址綁定,運營商不能隨意提現)。

代理商角色

在這些係統中(或由未來潛在的協議變更而啟用的新係統中),需要提出的一個關鍵問題是:從協議的角度來看,設立代理的意義何在?

為了理解這個問題的深刻意義,我們首先思考,對於帖子中提到的協議變更,即將削減懲罰限製為2ETH,Rocket Pool也會將節點運營商的質押金額降至2ETH,而Rocket Pool的市場份額將增加到100%/(對於質押者和ETH持有者而言,隨著rETH變得無風險,幾乎所有ETH持有者都將成為rETH持有者或節點運營者)。

假設rETH持有者的報酬率為3%(包括協議內獎勵和優先權費用+ MEV),節點業者的報酬率為4%。我們也假設ETH的總供應量為1億個。

計算結果如下。為了避免複利計算,我們將以日為單位計算收益:

Vitalik 最新研究:如何解決以太坊中大量雙層質押所帶來的風險?插图1

現在,假設Rocket Pool不存在,則每個質押者最低存款額降至2 ETH,流動性總量上限為625萬ETH,同時節點運營商回報率降至1%。再來計算:

Vitalik 最新研究:如何解決以太坊中大量雙層質押所帶來的風險?插图3

從攻擊成本的角度來考慮這兩種情況。在第一種情況下,攻擊者不會註冊成為代理商,因為代理商本質上並沒有任何提款的權利,所以沒有意義。因此,他們會把所有的ETH都用來質押並成為節點運營商。要達到質押總量的1/3,他們需要投入208萬個以太坊(公平地說,這仍然是一個相當大的數字。在第二種情況下,攻擊者隻需投入資金,要達到質押池總量的1/3,他們仍然需要投入208萬個以太坊。

從質押經濟學和攻擊成本的角度來看,兩種情況的最終結果完全相同。節點業者持有的ETH總供應量份額每天增加0.00256%,非節點業者持有的ETH總供應量份額每天減少0.00017%。攻擊成本為208萬ETH。因此,在這個模型中,代理商似乎成了一台毫無意義的Rube Goldberg機器,理性的社區甚至傾向於去掉中間人,大幅減少押注獎勵,並將質押的ETH總量限製在625萬個。

當然,本文並不主張將質押獎勵降低4倍,同時將質押總量上限定死在625萬。相反,本文的觀點是一個運作良好的質押係統理應具備一個關鍵屬性,即代理商應當在整個係統中承擔重要的責任。此外,如果代理商在很大程度上受到社區壓力和利他主義的激勵而採取正確的行動,那也沒有關係;畢竟,這才是今天激勵人們推行去中心化、高安全性的質押解決方案的主要力量。

代理商的職責所在

如果代理商可以在質押係統中發揮有意義的作用,那麼這種作用可能是什麼?

我認為有兩類答案:

  • 代理商選擇:代理商可以選擇將自己的利害關係委託給哪些節點營運商。節點運營商在共識機製中的"權重"與委託給他們的總質押成正比。目前,代理商選擇機製仍然有限,即rETH或stETH持有者可以撤回其ETH並切換到不同的池,但代理選擇的實際可用性可以大大提高。
  • 共識機製參與:委託人可以選擇在共識機製中扮演一定的角色,責任比全額認購“更輕”,也不會有很長的退出期和削減風險,但仍能起到製衡節點運營商的作用。

增強代理選擇權

有三種增強代表選擇權力的方式:

  1. 在池中改進投票工具
  2. 增加池之間的競爭
  3. 將代表權固定化

目前,在池中進行投票實際上並不實際:在Rocket Pool中,任何人都可以成為節點操作員,在Lido中,投票由LDO持有者決定,而不是ETH持有者。 Lido提出了一項關於LDO + stETH雙層治理的提案,他們可以啟動一個保護機製,阻止新的投票,從而阻止節點操作員被添加或移除,這某種程度上讓stETH持有者有發言權。儘管如此,這種權力還是有限的,可以更強大。

跨池競爭今天已經存在,但相對較弱。主要挑戰在於較小的質押池的質押代幣具有較低的流動性,較難獲得信任,並且較少得到應用程式的支持。

我們可以透過將懲罰金額限製在較小的數量,例如2或4個ETH,來改善前兩個問題。然後,剩餘的ETH可以安全地存款和立即提取,從而讓雙向兌換對於較小的質押池仍然成立。我們可以透過創建一個總發行合約來改進第三個問題,即用於管理LST(類似於ERC-4337和ERC-6900用於錢包的合約),以便我們可以保證透過該合約發行的任何質押代幣都是安全的。

目前,在協議中尚未存在固化的代表權力,但這類情形對未來似乎也有存在的可能性。它將涉及與上述想法類似的邏輯,但在協議層級實施。有關固化事物的優缺點,請參閱這篇文章

這些想法都是對現狀的改進,但它們所能提供的優勢都是有限的。代幣投票治理存在問題,最終任何形式的非激勵代理選擇都隻是一種代幣投票的形式;這一直是我對委託權益證明的主要不滿之處。因此,考慮實現更強大的共識參與方式也是有價值的。

共識參與

即使不考慮流動性質押的當前問題,對於目前的獨立質押方法也存在限製。假設使用single-slot finality,理想狀態下每個slot可能處理約100,000到1,000,000個BLS簽名。即使我們使用遞歸SNARKs來聚合簽名,為了簽名的可追蹤性,需要賦予每個簽名一個參與者的位元字段。如果以太坊成為一個全球規模的網絡,那麼完全分散化儲存位元欄位也不足夠:每個slot中的16 MB隻能支援大約6400萬名質押者。

從這個角度來看,將質押分為更高複雜度的可減持層和較低複雜度的層是有價值的,高複雜度的層每個slot都會生效,但可能隻有10,000名參與者,而較低複雜度的層隻在偶爾被調用以參與。較低複雜度的層可以完全免於減持,或者可以隨機賦予參與者機會,在幾個slot內存款並成為減持對象。

實際上,這可以透過提高驗證者餘額上限,隨後增加餘額閾值(例如,2048 ETH)來確定哪些現有驗證者進入更高複雜度或較低複雜度層。

以下是關於這些小額質押角色如何運作的一些建議:

  1. 每個slot,會隨機選擇10000名小額質押者,他們可以簽署他們認為是能夠代表該slot的內容。使用小額質押者作為輸入運行LMD GHOST分叉選擇規則。如果由小額質押者驅動的分叉選擇和節點運營商驅動的分叉選擇存在一定的分歧,用戶的客戶端將不接受任何區塊作為最終確認,並顯示錯誤。這迫使社區介入解決情況。
  2. 代理商可以發送交易,向網路宣告他們在線並願意在接下來的一個小時內擔任小額質押者。節點發送的訊息(區塊或證明)計算,需要節點和隨機選擇的一個代理都簽署節點的確認資訊
  3. 代理商可以發送交易,向網路宣告他們在線並願意在接下來的一個小時內擔任小額質押者。每個時期,會選擇10個隨機的代理作為包含列表提供者(inclusion list provider) ,並選擇10000名更多的代理作為選民。這些在k-slot之前被選擇,並且給予一個k slot視窗來在鏈上發布確認他們在線的消息。每個確認的選擇的包含列表提供者都可以發布一個包含列表,除非對於每個包含列表,要麼包含該包含列表中的交易,要麼包含一般1被選擇的選民的投票,顯示該包含列表不可用,否則區塊將被視為無效。

這些小型質押節點的共同點是,它們不需要積極參與每個slot,甚至隻需要輕節點就可以完成所有的工作。因此,節點部署隻需驗證共識層即可,節點運營商可以透過應用程式或瀏覽器插件來實現,這些應用程式或瀏覽器插件大多是被動的,對計算開銷、硬體要求或技術訣竅的要求都很低,甚至不需要像ZK-EVM這樣的先進技術。

這些「小角色」也都有一個共同目標:防止51%的多數節點業者進行交易審查。第一種和第二種還能防止多數人參與終局性還原。第三種則更直接地關注審查,但它更容易受到多數節點運營商選擇的影響。

Vitalik 最新研究:如何解決以太坊中大量雙層質押所帶來的風險?插图5

這些想法是從實施在協議中的雙層質押解決方案的角度編寫的,但它們也可以作為質押池的功能來實施。以下是一些具體的實施想法:

  1. 協議角度來講,每個驗證者都能設定兩個質押密鑰:一個持續質押密鑰P ,以及綁定的可供調用的以太坊地址,並輸出一個快速質押密鑰Q 。節點對分叉選擇的簽署資訊追蹤以P表示,簽署的資訊以Q表示,如果PQ儲存結果不一致,則不接受任何區塊的最終確定,由流動性池負責隨機選取代表
  2. 協定大體上可以保持不變,但該驗證器在該時段的公開金鑰將被設定為P+Q。請注意,對於減持而言,兩個可減持的訊息可能具有不同的Q密鑰,但它們將具有相同的P密鑰;減持設計需要處理這種情況。
  3. Q金鑰隻能在協議中用於對區塊中的包含清單進行簽署和驗證。在這種情況下,Q可以是一個智能合約,而不是一個單一的密鑰,因此,質押池可以使用它來實現更複雜的投票邏輯,接受來自隨機選擇的提供者的包含列表或足夠多的表示包含清單不可用的投票。

結論

如果正確實施,權益證明設計的微調可以一舉解決兩個問題:

  1. 為那些今天沒有資源或能力進行獨立權益證明的人提供了一個機會,使他們有機會參與權益證明,從而保留更多的權力在他們手中:包括(i)選擇支持哪些節點的權力和(ii)以某種比完全營運權益證明節點更輕但仍有意義的方式積極參與共識。並非所有參與者都會選擇其中一個或兩個選項,但任何參與者如果選擇了其中一個或兩個選項,都會相對於現狀有重大改進。
  2. 減少以太坊共識層在每個slot中需要處理的簽名數量,即使在單slot最終性製度下,也將其減少到約10,000個之類的較小數量。這也將有助於去中心化,使每個人都更容易運行驗證節點。

對於這些解決方案,可以在不同的抽象層次上找到解決問題的方法:在權益證明協議內授予用戶的權限、在權益證明協議之間的用戶選擇以及在協議中的設立。應該謹慎考慮這種選擇,並且通常最好選擇最小可行設立,以最大程度地減少協議的複雜性和對協議經濟學的更改程度,同時仍然實現所期望的目標。

聯系郵箱:0xniumao@gmail.com