原文: Don't overload Ethereum's consensus

作者: Vitalik Buterin

編譯:念銀思唐,星球日報

以太坊網絡的共識是目前最安全的加密經濟系統之一。價值1800 萬枚ETH (約 340 億美元)的驗證器每 6.4 分鐘完成一個區塊,運行許多不同的協議實現以達到冗餘。如果加密經濟共識失敗,無論是由於 bug 還是故意的 51% 攻擊,由數千名開發人員和更多用戶組成的龐大社區都會密切關注網絡,以確保鏈正確恢復。一旦鏈恢復,協議規則將會確保攻擊者(在很大程度上)受到嚴厲懲罰。

多年來,通常在思想實驗階段已經有了許多想法,即可以將以太坊驗證器集甚至以太坊社會共識用於其他目的:

  • 終極預言機:就一項提案而言,用戶可以通過發送 ETH 來投票決定哪些事情是真實的,這將使用SchellingCoin機制:每個發送ETH 投票支持多數答案的人都會按照一定比例獲得所有發送投票支持少數答案的ETH 的份額。根據其描述:“所以原則上這是一個對稱的遊戲。打破這種對稱性的是a)真相是需要協調的自然點,更重要的是b)押注真相的人如果輸了,可以創建一個可信的以太坊分叉路線。”

  • 再質押:包括EigenLayer在內的許多協議使用的一組技術,以太坊質押者可以同時使用他們的權益(stake)作為另一個協議的存款。在某些情況下,如果他們不遵守其他協議的規定,他們的存款也會被罰沒。在其他情況下,沒有協議內的激勵措施,權益只是用於投票。

  • 由L1驅動L2項目恢復:在很多情況下,如果L2有 bug,L1可以通過分叉來恢復它。最近的一個例子是使用L1軟分叉來恢復L2故障的設計

這篇文章的目的是詳細解釋,為什麼在我看來,這些技術的某個子集給生態系統帶來了很高的系統性風險,應該被勸阻和抵制。

這些建議通常是善意的,所以目標不是關注個人或項目;相反,我們的目標是關注技術。這篇文章將試圖捍衛的一般經驗法則如下:雙重使用驗證器質押的ETH 雖然有一些風險,但從根本上來說是可行的,但試圖“招募(recruit)”以太坊社會共識來實現你的應用程序本身的目的則並非如此。

重複使用驗證器(低風險)和過載社會共識(高風險)之間的區別示例

- Alice 創建了一個Web3社交網絡,如果你以加密方式證明你控制了一個活躍的以太坊驗證器的密鑰,你就會自動獲得“驗證(verified)”狀態。此為低風險。

- Bob 以加密方式證明他控制著十個活躍的以太坊驗證器的密鑰,以此證明他有足夠的財富來滿足某些法律要求。此為低風險。

- Charlie 聲稱已經推翻了孿生質數猜想(twin primes conjecture),並稱知道最大的 p,使得 p 和 p+ 2 都是素數。他將他的質押提款地址改為一個智能合約,任何人都可以提交一個聲稱的反例 q > p,以及一個證明 q 和 q+ 2 都是素數的 SNARK。如果有人提出了有效聲明,那麼 Bob 的驗證器將被強制退出,並且提交者將獲得 Bob 剩下的 ETH。此為低風險。

-狗狗幣(Dogecoin)決定切換到權益證明,並增加其安全池的規模,它允許以太坊質押者“雙重質押”並同時加入其驗證器集。要做到這一點,以太坊質押者必須將他們的質押提款地址更改為一項智能合約,以便任何人都可以提交他們違反狗狗幣質押規則的證據。如果有人提交了這樣的證明,那麼質押者的驗證器將被強制退出,並且他們剩下的 ETH 將用於購買和銷毀 DOGE。此為低風險。

- eCash 的做法與狗狗幣相同,但項目負責人進一步宣布:如果大多數參與的 ETH 驗證器串通審查 eCash 交易,他們預計以太坊社區將硬分叉以刪除這些驗證器。他們認為,這樣做符合以太坊的利益,因為這些驗證器被證明是惡意和不可靠的。此為高風險。

- Fred 創建了一個 ETH/USD 價格預言器,其功能是允許以太坊驗證器參與和投票。沒有激勵機制。此為低風險。

- George 創建了一個 ETH/USD 價格預言器,其功能是允許 ETH 持有者參與和投票。為了防止懶惰和賄賂,他們增加了一種激勵機制,即給出的答案在中位數 1% 以內的參與者獲得任何給出答案超過中位數 1% 的參與者 1% 的 ETH。當被問及“如果有人可信地提出賄賂所有參與者,每個人都開始提交錯誤的答案,那麼誠實的人就會被拿走1000 萬枚ETH 嗎?”George 回答說:那麼以太坊將不得不分叉以便排除不良參與者的資金。此為高風險。

另外兩種情況如下:

  • George 明顯不作回答。此為中高風險(因為項目可能會創造嘗試這樣一個分叉的動機,因此即使沒有正式的鼓勵,也會有嘗試的期望)。

  • George 回答說:“那麼攻擊者就贏了,我們就放棄使用這個預言機。”此為中低風險(不是很“低”,只是因為該機制確實創造了一大批參與者,他們在51% 攻擊中可能會被激勵獨立倡導分叉來保護他們的存款)。

- Hermione 創建了一個成功的Layer 2 ,並認為因為她的Layer 2 是最大的,所以它本質上是最安全的,因為如果有一個bug 導致資金被盜,損失將是如此之大,以至於社區別無選擇,只能通過分叉來恢復用戶的資金。此為高風險

如果你正在設計一個協議,即使一切都完全中斷,損失也會被包含在選擇參與並使用你的協議的驗證器和用戶處,這是低風險的。另一方面,如果你打算在更廣泛的以太坊生態系統社會共識中尋求分叉或重組來解決你的問題,這是高風險的,我認為我們應該強烈抵制所有創造這種期望的嘗試。

中間地帶是指一開始處於低風險類別,但給予參與者進入高風險類別的激勵; SchellingCoin 類的技術,特別是對偏離多數的嚴重懲罰機制,就是一個主要的例子。

那麼,擴展以太坊共識到底有什麼問題呢?

假設現在是 2025 年。由於對現狀感到沮喪,一個小組決定開發一個新的 ETH/USD 價格預言器,它通過允許驗證器每小時對價格進行投票來運作。如果驗證器投票,他們將無條件地從系統中獲得一部分費用獎勵。但很快參與者就變得懶惰了:他們連接到中心化的 API,當這些 API 受到網絡攻擊時,他們要么退出,要么開始報告錯誤的值。為了解決這個問題,他們引入了激勵機制:預言機也會對一周前的價格進行回溯性投票,如果你的投票(實時或回溯)與回溯性投票的中位數相差超過1% ,你就會受到嚴重懲罰,懲罰所得將由“正確”投票的人獲得。

在一年內,超過 90% 的驗證器參與其中。有人問:如果Lido和其他幾個大型質押者聯合起來,對投票進行 51% 攻擊,強行通過一個虛假的 ETH/USD 價格,對所有不參與攻擊的人處以重罰,會怎麼樣?在這一點上,預言機的支持者在該計劃中投入了大量資金,他們回答說:如果發生這種情況,以太坊肯定會分叉,以驅逐不良行為者。

起初,該方案僅限於 ETH/USD,並且看起來具有彈性和穩定性。但隨著時間的推移,其他指數也隨之增加:ETH/EUR、ETH/CNY,以及最終G20所有國家的利率。

但到了 2034 年,事情開始出錯。巴西發生了一場意想不到的嚴重政治危機,導致了一場有爭議的選舉。一個政黨最終控制了首都和 75% 的國家,但另一個政黨最終控制了一些北部地區。西方主要媒體認為,北方政黨顯然是合法的贏家,因為它的行為是合法的,而南方政黨的行為是非法的。印度等國家的官方消息人士以及Elon Musk 認為,南方黨已經實際控制了該國的大部分地區,國際社會不應該試圖成為世界警察,而應該接受這一結果。

當時巴西有一個CBDC ,有兩個分叉版本:(北部)BRL-N 和(南部)BRL-S。當在預言機中投票時, 60% 的以太坊質押者提供 ETH/BRL-S 匯率。主要的社區領袖和企業譴責質押者對法西斯主義的懦弱投降,並建議將區塊鏈分叉,只包括提供ETH/BRL-N 匯率的“好質押者”,並將其他質押者的餘額耗盡至接近零。在看似光鮮的輿論泡沫中,他們相信自己肯定會贏。然而,一旦分叉開啟,BRL-S 一方被證明出乎意料地強大。他們原本預計會取得壓倒性的勝利,但事實證明,這幾乎是一個五五開的社區分裂。

在這一點上,雙方是在兩個獨立宇宙中的兩條鏈上,沒有實際的方法回到一起。以太坊是一個全球性的無許可平台,在一定程度上是為了躲避國家和地緣政治而創建的,但最終卻被G 20 成員國中一個有著出乎意料的嚴重內部問題的國家分裂成兩半。

這科幻故事真不錯,都能拍電影了,但我們能從中學到什麼呢?

區塊鏈的“純粹性(purity)”是一個巨大的優勢,因為它是一個純粹的數學結構,試圖在純粹的數學問題上達成共識。一旦區塊鏈試圖與外部世界“掛鉤”,外部世界的衝突也開始影響區塊鏈。考慮到一個足夠極端的政治事件——事實上也並非那麼極端,因為上面的故事基本上是過去十年裡在各個主要國家(人口超過 2500 萬)實際發生事件的模仿——即使是像貨幣預言機這樣良性的事情也可能撕裂社區。

以下是更多可能的情況:

  • 預言機追踪的其中一種貨幣(甚至可能是美元)只是惡性通貨膨脹,市場崩潰到在某些時間點上沒有明確的具體市場價格。

  • 如果以太坊是為另一種加密貨幣添加了價格預言機,那麼上面故事中有爭議的分裂就不是假設的:這是已經發生的事情,包括比特幣和以太坊本身的歷史。

  • 如果嚴格的資本管制開始實施,那麼哪種價格作為兩種貨幣之間的合法市場價格報告就成了一個政治問題。

但更重要的是,我認為有一個 Schelling 圍欄在起作用:一旦區塊鏈開始將現實世界的價格指數作為 Layer 1 協議功能,它很容易屈服於解釋越來越多的現實世界信息。引入 Layer 1 價格指數也擴大了區塊鏈的法律攻擊面:它不再只是一個中立的技術平台,而是更明確地成為一種金融工具。

價格指數以外的例子帶來的風險如何?

以太坊共識“職責”的任何擴展都會增加運行驗證器的成本、複雜性和風險。驗證器被要求承擔人工工作,關注並運行和更新其他軟件,以確保它們根據引入的任何其他協議正確地運行。其他社區獲得了將其爭議解決需求置於以太坊社區外部的能力。驗證器和以太坊社區作為一個整體被迫做出更多的決定,而每一個決定都有導致社區分裂的風險。即使沒有分裂,避免這種壓力的願望也會產生額外的激勵,通過質押池將決策外部化給中心化實體。

分裂的可能性還將極大地強化“大到不能倒(too-big-to-fail)”的反常機制。以太坊上有如此多的 Layer 2 和應用層項目,以至於以太坊社會共識願意分叉來解決所有問題是不切實際的。因此,規模較大的項目獲得救助的可能性必然大於規模較小的項目。這反過來又會導致更大的項目獲得護城河:你是願意把幣放在ArbitrumOptimism上(如果出現問題,以太坊將分叉來拯救一切),還是願意放在規模更小的Taiko 上(非西方項目,與核心開髮圈的社會聯繫較少,獲得L1支持救援的可能性小得多)?

但 bug 會帶來風險,我們需要更好的預言機。那麼該怎麼做呢?

在我看來,這些問題的最佳解決方案是具體問題具體分析,因為各種問題本質上是彼此不同的。一些解決方案包括:

- 價格預言機:要么是不完全加密經濟的去中心化預言機,要么是基於驗證器投票的預言機,後者明確承諾其緊急恢復策略不是訴諸L1共識來恢復,要目是兩者的某種組合。例如,價格預測器可以依賴於一個信任假設,即投票參與者會慢慢被腐化,這樣用戶就可以獲得攻擊的早期預警,並可以退出任何依賴於該預言機的系統。這樣的預言機可以故意在長時間延遲後才給予獎勵,因此,如果該協議的實例被廢棄(例如:因為預言機失敗了,社區轉向了另一個版本),參與者沒有得到獎勵。

- 更複雜的真相預言機,報告比價格更主觀的事實:某種建立在不完全加密經濟DAO上的去中心化法院系統。

- Layer 2協議:

  • 在短期內,依靠部分輔助輪(這篇文章稱之為第一階段)

  • 在中期,依賴多證明系統。這裡可以包括可信硬件(例如:SGX);我強烈反對將類似 SGX 的系統作為唯一的安全保障,但作為 2-of-3 系統的成員,它們可能是有價值的。

  • 長遠來看,希望像“EVM 驗證”這樣的複雜功能最終會被納入協議中。

-跨鏈橋:與預言機邏輯類似,但也要盡量減少對跨鏈橋的依賴程度:將資產保存在其原生鏈上,並使用原子交換協議在不同鏈之間移動價值。

- 使用以太坊驗證器集來保護其他鏈:上面示例列表中(更安全的)狗狗幣方案可能還不夠的一個原因是,雖然它確實可以防止51% “最終性反轉(finality-reversion) ”攻擊,但它不能防止51% 審查攻擊。但是,如果你已經依賴於以太坊驗證器,那麼一個可能的方向是放棄嘗試完全管理獨立鏈,並成為一個將證明錨定在以太坊中的validium 。如果一個鏈做到了這一點,它針對最終性反轉攻擊的保護就會變得和以太坊一樣強大,並且它可以安全抵禦 99% (而不是 49% )審查攻擊。

總結

區塊鏈社區的社會共識是很脆弱的。這是必要的——因為升級會發生,bug 會發生, 51% 攻擊也總是有可能發生——但是因為它有很高的導致鏈分裂的風險,在成熟的社區中應該謹慎使用。社區往往有一種自然的衝動,試圖用越來越多的功能擴展以太坊區塊鏈的核心,因該核心具有最大的經濟權重以及最多的社區關注,但每一次這樣的擴展都會使核心本身更加脆弱。

我們應該警惕應用層項目採取這樣的行動——這些行動可能會增加區塊鏈共識“範圍(scope)”,而不是驗證以太坊核心協議規則。對於應用層項目來說,嘗試這樣的策略是很自然的,事實上,這樣的想法通常是在沒有考慮風險的情況下被簡單構思出來的,但是可能引發的結果很容易與整個社區的目標背道而馳。這樣的過程沒有限制原則,隨著時間的推移,很容易導致區塊鏈社區擁有越來越多的“授權(mandates)”,將其推向一個令人不安的選擇——要么是分裂的年度高風險,要么是對區塊鏈擁有最終控制權的某種事實上的正式官僚機構。

相反,我們應該保持鏈的極簡主義,支持再質押的使用,而不是像滑坡一樣擴展以太坊共識的角色,並幫助開發人員找到替代策略來實現他們的安全目標。