以太坊權益證明攻擊與防禦
竊賊和破壞者不斷尋找機會攻擊以太坊的客戶端軟體。本頁面概述了以太坊共識層上已知的攻擊向量,並說明如何防禦這些攻擊。本頁面的資訊改編自較長版本的文章 (opens in a new tab)。
先決條件
要求具備一些權益證明 (PoS)的基礎知識。此外,對以太坊的激勵層和分叉選擇演算法 LMD-GHOST 有基本了解也會很有幫助。
攻擊者想要什麼?
一個常見的誤解是,成功的攻擊者可以生成新的以太幣,或從任意帳戶中抽乾以太幣。這兩者都是不可能的,因為所有交易都由網路上的所有執行客戶端執行。它們必須滿足有效性的基本條件(例如,交易由發送者的私鑰簽名、發送者有足夠的餘額等),否則它們只會回滾。攻擊者可能實際鎖定的結果有三類:區塊鏈重組、雙重最終性或最終性延遲。
「區塊鏈重組」是將區塊重新排列成新的順序,可能在規範鏈中增加或減少一些區塊。惡意的區塊鏈重組可能會確保包含或排除特定區塊,從而允許雙重支付或透過搶跑和尾隨交易來提取價值 (MEV)。區塊鏈重組也可用於防止某些交易被包含在規範鏈中——這是一種審查形式。最極端的區塊鏈重組形式是「最終性回轉」,它會移除或替換先前已定案的區塊。只有當攻擊者銷毀超過總質押以太幣的 ⅓ 時,這才有可能發生——這種保證被稱為「經濟最終性」——稍後會詳細說明。
雙重最終性是一種不太可能發生但非常嚴重的情況,即兩個分叉能夠同時已定案,從而在鏈中造成永久性的分裂。對於願意冒險損失總質押以太幣 34% 的攻擊者來說,這在理論上是可能的。社群將被迫在鏈下進行協調,並就遵循哪條鏈達成共識,這將需要社交層的力量。
最終性延遲攻擊會阻止網路達到使鏈的各部分已定案的必要條件。沒有最終性,就很難信任建立在以太坊之上的金融應用程式。最終性延遲攻擊的目的可能只是為了破壞以太坊,而不是直接獲利,除非攻擊者有一些戰略性的空頭部位。
對社交層的攻擊可能旨在破壞公眾對以太坊的信任、使以太幣貶值、減少採用,或削弱以太坊社群,從而使帶外 (out-of-band) 協調變得更加困難。
在確定了對手為何可能攻擊以太坊之後,以下各節將探討他們可能_如何_進行攻擊。
攻擊方法
第 0 層攻擊
首先,未積極參與以太坊(透過執行客戶端軟體)的個人可以透過針對社交層(第 0 層)進行攻擊。第 0 層是以太坊建立的基礎,因此它代表了一個潛在的攻擊面,其後果會波及堆疊的其餘部分。一些例子可能包括:
-
錯誤資訊活動可能會削弱社群對以太坊路線圖、開發者團隊、應用程式等的信任。這可能會減少願意參與保護網路的個人數量,從而降低去中心化和加密經濟的安全性。
-
針對開發者社群的針對性攻擊和/或恐嚇。這可能導致開發者自願退出,並減緩以太坊的進展。
-
過度熱心的監管也可以被視為對第 0 層的攻擊,因為它可能會迅速打擊參與和採用的積極性。
-
知識淵博但惡意的行為者滲透到開發者社群中,其目的是透過瑣碎的爭論 (bike-shedding)、延遲關鍵決策、製造垃圾訊息等來減緩進展。
-
賄賂以太坊生態系統中的關鍵參與者以影響決策。
這些攻擊之所以特別危險,是因為在許多情況下,它們只需要很少的資金或技術知識。第 0 層攻擊可能是加密經濟攻擊的乘數。例如,如果惡意的多數利益相關者實現了審查或最終性回轉,破壞社交層可能會使帶外協調社群回應變得更加困難。
防禦第 0 層攻擊可能並不簡單,但可以建立一些基本原則。其中之一是維持關於以太坊公開資訊的整體高訊噪比,這些資訊由社群中誠實的成員透過部落格、Discord 伺服器、帶註釋的規範、書籍、Podcast 和 YouTube 創建和傳播。在 ethereum.org,我們努力維護準確的資訊,並將其翻譯成盡可能多的語言。用高品質的資訊和迷因充斥一個空間是防禦錯誤資訊的有效方法。
防禦社交層攻擊的另一個重要防線是明確的使命宣言和治理協定。以太坊將自己定位為智能合約第一層 (L1) 中的去中心化和安全性冠軍,同時也高度重視可擴展性和永續性。無論以太坊社群中出現什麼分歧,這些核心原則受到的妥協都是最小的。根據這些核心原則評估一種說法,並透過 EIP(以太坊改進提案)流程中連續幾輪的審查來檢驗它們,可能有助於社群區分好壞行為者,並限制惡意行為者影響以太坊未來方向的範圍。
最後,以太坊社群保持開放並歡迎所有參與者至關重要。一個有守門人和排他性的社群特別容易受到社交攻擊,因為很容易建立「我們和他們」的對立論述。部落主義和有毒的極大主義會傷害社群並侵蝕第 0 層的安全性。對網路安全性有既得利益的以太坊支持者,應將其在線上和現實世界中的行為視為對以太坊第 0 層安全性的直接貢獻。
攻擊協定
任何人都可以執行以太坊的客戶端軟體。要在客戶端中新增驗證者,要求使用者將 32 個以太幣質押到存款合約中。驗證者允許使用者透過提案和證明新區塊來積極參與以太坊的網路安全。驗證者現在擁有可以用來影響區塊鏈未來內容的發言權——他們可以誠實地這樣做,並透過獎勵增加他們的以太幣儲備,或者他們可以嘗試操縱這個過程以謀取私利,從而使他們的質押面臨風險。發動攻擊的一種方法是累積更大比例的總質押,然後用它在投票中擊敗誠實的驗證者。攻擊者控制的質押比例越大,他們的投票權就越大,尤其是在我們稍後將探討的某些經濟里程碑上。然而,大多數攻擊者將無法累積足夠的以太幣來以這種方式進行攻擊,因此他們必須使用微妙的技術來操縱誠實的多數派以特定方式行事。
基本上,所有小額質押攻擊都是兩種驗證者不當行為的微妙變體:活動不足(未能證明/提案或延遲進行)或活動過度(在一個時槽中提案/證明太多次)。在最基本的形式中,這些行為很容易由分叉選擇演算法和激勵層處理,但有一些聰明的方法可以利用系統來為攻擊者謀取利益。
使用少量 ETH 的攻擊
區塊鏈重組
幾篇論文已經解釋了對以太坊的攻擊,這些攻擊僅用總質押以太幣的一小部分就能實現區塊鏈重組或最終性延遲。這些攻擊通常依賴於攻擊者向其他驗證者隱瞞某些資訊,然後以某種微妙的方式和/或在某個適當的時機釋放它。它們通常旨在從規範鏈中取代一些誠實的區塊。Neuder 等人於 2020 年 (opens in a new tab)展示了攻擊驗證者如何為特定時槽 n+1 創建並證明一個區塊 (B),但避免將其傳播到網路上的其他節點。相反,他們會保留該已證明的區塊,直到下一個時槽 n+2。一個誠實的驗證者為時槽 n+2 提案一個區塊 (C)。幾乎同時,攻擊者可以釋放他們隱瞞的區塊 (B) 及其隱瞞的證明,並用他們對時槽 n+2 的投票來證明 B 是鏈的頂端,從而有效地否認誠實區塊 C 的存在。當誠實區塊 D 被釋放時,分叉選擇演算法會看到建立在 B 之上的 D 比建立在 C 之上的 D 更重。因此,攻擊者成功地使用 1 個區塊的事前區塊鏈重組,將時槽 n+2 中的誠實區塊 C 從規範鏈中移除。擁有 34% 質押的攻擊者 (opens in a new tab)有很大的機會在這次攻擊中取得成功,如本筆記 (opens in a new tab)中所釋。不過,在理論上,這種攻擊可以用較小的質押來嘗試。Neuder 等人於 2020 年 (opens in a new tab)描述了這種攻擊在 30% 質押下的運作情況,但後來證明它在總質押的 2% (opens in a new tab) 下也是可行的,然後再次證明對於使用我們將在下一節中探討的平衡技術的單一驗證者 (opens in a new tab)也是可行的。
上述單區塊重組攻擊的概念圖(改編自 https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair) (opens in a new tab)
更複雜的攻擊可以將誠實的驗證者集合分成不同的小組,這些小組對鏈的頂端有不同的看法。這被稱為平衡攻擊。攻擊者等待他們提案區塊的機會,當機會到來時,他們會模稜兩可並提案兩個區塊。他們將一個區塊發送給一半的誠實驗證者集合,將另一個區塊發送給另一半。這種模稜兩可的行為會被分叉選擇演算法檢測到,區塊提案者將被罰沒並從網路中逐出,但這兩個區塊仍然存在,並且大約有一半的驗證者集合會證明每個分叉。同時,剩餘的惡意驗證者會保留他們的證明。然後,透過在分叉選擇演算法執行時,選擇性地將有利於某個分叉的證明釋放給剛好足夠的驗證者,他們會使累積的證明權重傾向於某個分叉。這可以無限期地持續下去,攻擊驗證者在兩個分叉之間保持驗證者的均勻分配。由於兩個分叉都無法吸引 2/3 的絕對多數,網路將無法已定案。
彈跳攻擊也很類似。攻擊驗證者再次隱瞞投票。他們不是釋放選票以保持兩個分叉之間的均勻分配,而是在適當的時機使用他們的選票來證明在分叉 A 和分叉 B 之間交替的檢查點。這種在兩個分叉之間反覆證明的行為,防止了在任一鏈上出現可以已定案的已證明來源和目標檢查點對,從而停止了最終性。
彈跳攻擊和平衡攻擊都依賴於攻擊者對整個網路的訊息時序有非常精細的控制,這是不太可能的。儘管如此,協定中還是內建了防禦機制,其形式是與緩慢的訊息相比,給予及時的訊息額外的權重。這被稱為提案者權重提升 (opens in a new tab)。為了防禦彈跳攻擊,分叉選擇演算法進行了更新,使得最新的已證明檢查點只能在每個紀元的前 1/3 時槽 (opens in a new tab)期間切換到替代鏈的檢查點。這種情況防止了攻擊者儲存選票以備後用——分叉選擇演算法只是忠於它在紀元前 1/3 期間選擇的檢查點,在這段時間內大多數誠實的驗證者都會投票。
結合起來,這些措施創造了一種情況:誠實的區塊提案者在時槽開始後非常迅速地發出他們的區塊,然後有一段大約 1/3 時槽(4 秒)的時間,該新區塊可能會導致分叉選擇演算法切換到另一條鏈。在同一截止時間之後,與較早到達的證明相比,來自緩慢驗證者的證明權重會降低。這強烈有利於及時的提案者和驗證者確定鏈的頂端,並大幅降低了成功的平衡或彈跳攻擊的可能性。
值得注意的是,單靠提案者提升只能防禦「廉價的區塊鏈重組」,即由質押較小的攻擊者嘗試的重組。事實上,提案者提升本身可能會被較大的利益相關者利用。這篇文章 (opens in a new tab)的作者描述了擁有 7% 質押的攻擊者如何戰略性地部署他們的選票,以欺騙誠實的驗證者在他們的分叉上建立,從而重組掉一個誠實的區塊。這種攻擊是在假設極不可能發生的理想延遲條件下設計的。對攻擊者來說,成功的機率仍然很低,而且更大的質押也意味著更多的資金處於風險之中,以及更強的經濟抑制因素。
還提出了一種專門針對 LMD 規則的平衡攻擊 (opens in a new tab),儘管有提案者提升,但該攻擊被認為是可行的。攻擊者透過模稜兩可地提案區塊並將每個區塊傳播到大約一半的網路,來建立兩條競爭鏈,從而在分叉之間建立近似的平衡。然後,串通的驗證者模稜兩可地投票,控制時機使得一半的網路先收到他們對分叉 A 的投票,而另一半先收到他們對分叉 B 的投票。由於 LMD 規則會丟棄第二個證明,並只保留每個驗證者的第一個證明,因此一半的網路會看到對 A 的投票而沒有對 B 的投票,另一半會看到對 B 的投票而沒有對 A 的投票。作者描述 LMD 規則賦予了對手「非凡的力量」來發動平衡攻擊。
透過更新分叉選擇演算法 (opens in a new tab),這個 LMD 攻擊向量已被關閉,使得它完全將模稜兩可的驗證者從分叉選擇的考慮中丟棄。模稜兩可的驗證者未來的影響力也會被分叉選擇演算法打折扣。這防止了上面概述的平衡攻擊,同時也保持了對雪崩攻擊的彈性。
另一類稱為雪崩攻擊 (opens in a new tab)的攻擊,在 2022 年 3 月的一篇論文 (opens in a new tab)中被描述。要發動雪崩攻擊,攻擊者需要控制幾個連續的區塊提案者。在每個區塊提案時槽中,攻擊者隱瞞他們的區塊,將它們收集起來,直到誠實鏈達到與隱瞞區塊相等的子樹權重。然後,釋放隱瞞的區塊,使它們最大程度地模稜兩可。作者認為,提案者提升——防禦平衡和彈跳攻擊的主要方法——並不能防禦某些變體的雪崩攻擊。然而,作者也只在一個高度理想化的以太坊分叉選擇演算法版本上展示了這種攻擊(他們使用了沒有 LMD 的 GHOST)。
雪崩攻擊被 LMD-GHOST 分叉選擇演算法的 LMD 部分所緩解。LMD 的意思是「最新訊息驅動」,它指的是每個驗證者保存的一個表格,其中包含從其他驗證者收到的最新訊息。只有當新訊息來自比特定驗證者表格中已有的時槽更晚的時槽時,該欄位才會更新。在實踐中,這意味著在每個時槽中,收到的第一條訊息是它接受的訊息,任何額外的訊息都是要被忽略的模稜兩可訊息。換句話說,共識客戶端不計算模稜兩可的訊息——它們使用來自每個驗證者最先到達的訊息,而模稜兩可的訊息則被簡單地丟棄,從而防止了雪崩攻擊。
分叉選擇規則還有其他幾個潛在的未來升級,可以增加提案者提升所提供的安全性。一個是視圖合併 (view-merge) (opens in a new tab),證明者在時槽開始前 n 秒凍結他們對分叉選擇的視圖,然後提案者幫助同步整個網路對鏈的視圖。另一個潛在的升級是單時槽最終性 (opens in a new tab),它透過僅在一個時槽後就使鏈已定案,來防禦基於訊息時序的攻擊。
最終性延遲
首次描述低成本單區塊重組攻擊的同一篇論文 (opens in a new tab),也描述了一種最終性延遲(又稱「活躍度失敗」)攻擊,該攻擊依賴於攻擊者成為紀元邊界區塊的區塊提案者。這很關鍵,因為這些紀元邊界區塊成為 Casper 友善最終性小工具用來使鏈的各部分已定案的檢查點。攻擊者只需隱瞞他們的區塊,直到足夠多的誠實驗證者使用他們的 FFG 投票支持前一個紀元邊界區塊作為當前的定案目標。然後他們釋放隱瞞的區塊。他們證明他們的區塊,剩餘的誠實驗證者也這樣做,從而創建了具有不同目標檢查點的分叉。如果他們時機掌握得恰到好處,他們將阻止最終性,因為不會有 2/3 的絕對多數證明任一分叉。質押越小,時機就需要越精確,因為攻擊者直接控制的證明較少,而且攻擊者控制提案給定紀元邊界區塊的驗證者的機率也較低。
長程攻擊
還有一類專門針對權益證明 (PoS) 區塊鏈的攻擊,涉及參與創世區塊的驗證者在誠實鏈旁邊維護一個獨立的區塊鏈分叉,最終在很久以後的某個適當時機說服誠實的驗證者集合切換到它。這種類型的攻擊在以太坊上是不可能的,因為最終性小工具確保所有驗證者定期(「檢查點」)就誠實鏈的狀態達成一致。這個簡單的機制抵消了長程攻擊者,因為以太坊客戶端根本不會重組已定案的區塊。加入網路的新節點透過找到一個受信任的近期狀態雜湊(一個「弱主觀性 (opens in a new tab)檢查點」)並將其用作偽創世區塊在其上建立來實現這一點。這為進入網路的新節點創建了一個「信任閘道」,然後它才能開始自行驗證資訊。
阻斷服務
以太坊的權益證明 (PoS) 機制從總驗證者集合中挑選一個單一驗證者作為每個時槽的區塊提案者。這可以使用公開已知的函數來計算,對手有可能在區塊提案之前稍微提前識別出下一個區塊提案者。然後,攻擊者可以向區塊提案者發送垃圾訊息,以防止他們與對等節點交換資訊。對網路的其餘部分來說,區塊提案者似乎處於離線狀態,時槽將會變空。這可能是針對特定驗證者的一種審查形式,防止他們將資訊添加到區塊鏈中。實施單一秘密領導者選舉 (SSLE) 或非單一秘密領導者選舉將減輕 DoS 風險,因為只有區塊提案者知道他們已被選中,而且選擇是無法提前知道的。這尚未實施,但這是一個活躍的研究和開發 (opens in a new tab)領域。
所有這些都指出了一個事實:用小額質押成功攻擊以太坊是非常困難的。這裡描述的可行攻擊需要理想化的分叉選擇演算法、不可能的網路條件,或者攻擊向量已經透過對客戶端軟體進行相對較小的修補程式而關閉。當然,這並不排除在實際使用中存在零日漏洞的可能性,但它確實證明了少數質押攻擊者要發揮作用所需的技術能力、共識層知識和運氣的門檻極高。從攻擊者的角度來看,他們最好的選擇可能是累積盡可能多的以太幣,並帶著更大比例的總質押回來。
使用 >= 33% 總質押的攻擊者
當攻擊者擁有更多質押的以太幣來投票,並且有更多驗證者可能被選中在每個時槽中提案區塊時,本文前面提到的所有攻擊都更有可能成功。因此,惡意驗證者可能旨在控制盡可能多的質押以太幣。
33% 的質押以太幣是攻擊者的一個基準,因為只要超過這個數量,他們就有能力阻止鏈已定案,而無需精細控制其他驗證者的行為。他們可以簡單地一起消失。如果 1/3 或更多的質押以太幣惡意證明或未能證明,那麼 2/3 的絕對多數就不可能存在,鏈也無法已定案。對此的防禦是不活躍漏損。不活躍漏損會識別出那些未能證明或證明與多數相反的驗證者。這些未證明驗證者擁有的質押以太幣會逐漸流失,直到最終他們集體代表的總量不到 1/3,這樣鏈就可以再次已定案。
不活躍漏損的目的是讓鏈再次已定案。然而,攻擊者也會損失一部分他們質押的以太幣。儘管驗證者沒有被罰沒,但代表總質押以太幣 33% 的驗證者持續不活躍是非常昂貴的。
假設以太坊網路是非同步的(即發送和接收訊息之間存在延遲),控制總質押 34% 的攻擊者可能會導致雙重最終性。這是因為攻擊者在被選為區塊生產者時可以模稜兩可,然後用他們所有的驗證者進行雙重投票。這造成了一種情況,即存在區塊鏈的分叉,每個分叉都有 34% 的質押以太幣為其投票。每個分叉只需要剩餘驗證者中 50% 的人投票支持它,兩個分叉就能得到絕對多數的支持,在這種情況下,兩條鏈都可以已定案(因為 34% 的攻擊者驗證者 + 剩餘 66% 的一半 = 每個分叉上 67%)。競爭的區塊必須分別被大約 50% 的誠實驗證者接收,因此只有當攻擊者對網路上傳播的訊息時序有一定程度的控制,以便他們可以將一半的誠實驗證者推到每條鏈上時,這種攻擊才可行。攻擊者必然會銷毀他們的全部質押(在今天的驗證者集合中,大約 1000 萬以太幣的 34%)來實現這種雙重最終性,因為他們 34% 的驗證者將同時進行雙重投票——這是一種可罰沒的違規行為,具有最大的相關性懲罰。對這種攻擊的防禦是銷毀總質押以太幣 34% 的巨大成本。從這次攻擊中恢復將需要以太坊社群在「帶外」進行協調,並同意遵循其中一個分叉而忽略另一個。
使用 ~50% 總質押的攻擊者
在擁有 50% 質押以太幣的情況下,一群惡意的驗證者理論上可以將鏈分成兩個大小相等的分叉,然後簡單地使用他們全部的 50% 質押來投出與誠實驗證者集合相反的票,從而維持這兩個分叉並阻止最終性。兩個分叉上的不活躍漏損最終將導致兩條鏈都已定案。在這一點上,唯一的選擇是退回到社交恢復。
考慮到誠實驗證者數量的波動、網路延遲等因素,一個敵對的驗證者群體不太可能始終精確控制總質押的 50%——發動這種攻擊的巨大成本加上成功的可能性很低,似乎對理性的攻擊者構成了強烈的抑制,特別是當稍微增加投資以獲得_超過_ 50% 的質押就能解鎖更多權力時。
在總質押 >50% 時,攻擊者可以主導分叉選擇演算法。在這種情況下,攻擊者將能夠以多數票進行證明,賦予他們足夠的控制權來進行短期區塊鏈重組,而無需欺騙誠實的客戶端。誠實的驗證者會效仿,因為他們的分叉選擇演算法也會將攻擊者偏好的鏈視為最重的鏈,因此鏈可以已定案。這使得攻擊者能夠審查某些交易、進行短程區塊鏈重組,並透過對他們有利的區塊重新排序來提取最大的 MEV。對此的防禦是多數質押的巨大成本(目前略低於 190 億美元),攻擊者將其置於風險之中,因為社交層可能會介入並採用誠實的少數分叉,從而大幅貶值攻擊者的質押。
使用 >=66% 總質押的攻擊者
擁有 66% 或更多總質押以太幣的攻擊者可以使他們偏好的鏈已定案,而無需脅迫任何誠實的驗證者。攻擊者只需投票給他們偏好的分叉,然後使其已定案,僅僅是因為他們可以用不誠實的絕對多數進行投票。作為絕對多數的利益相關者,攻擊者將始終控制已定案區塊的內容,有權花費、倒轉並再次花費、審查某些交易並隨意重組鏈。透過購買額外的以太幣來控制 66% 而不是 51%,攻擊者實際上是在購買進行事後區塊鏈重組和最終性回轉的能力(即改變過去以及控制未來)。這裡唯一真正的防禦是 66% 總質押以太幣的巨大成本,以及退回到社交層以協調採用替代分叉的選項。我們可以在下一節中更詳細地探討這一點。
人:最後的防線
如果不誠實的驗證者設法使他們偏好的鏈版本已定案,以太坊社群將陷入困境。規範鏈的歷史中包含了一個不誠實的部分,而誠實的驗證者最終可能會因為證明替代(誠實)鏈而受到懲罰。請注意,已定案但不正確的鏈也可能源於多數客戶端中的錯誤。最後,最終的後備方案是依靠社交層——第 0 層——來解決這種情況。
以太坊權益證明 (PoS) 共識的優勢之一是,社群在面臨攻擊時可以採用一系列防禦策略 (opens in a new tab)。最低限度的回應可能是強制攻擊者的驗證者退出網路,而不附加任何額外的懲罰。要重新進入網路,攻擊者必須加入一個啟用佇列,該佇列確保驗證者集合逐漸增長。例如,增加足夠的驗證者使質押以太幣數量翻倍大約需要 200 天,這實際上為誠實的驗證者爭取了 200 天的時間,然後攻擊者才能嘗試另一次 51% 攻擊。然而,社群也可以決定對攻擊者進行更嚴厲的懲罰,例如撤銷過去的獎勵或銷毀其部分(高達 100%)的質押資金。
無論對攻擊者施加什麼懲罰,社群還必須共同決定,儘管不誠實的鏈是以太坊客戶端中編碼的分叉選擇演算法所偏好的鏈,但它實際上是否無效,以及社群是否應該改在誠實鏈之上建立。誠實的驗證者可以集體同意在社群接受的以太坊區塊鏈分叉之上建立,例如,該分叉可能在攻擊開始之前就從規範鏈中分叉出來,或者強制移除了攻擊者的驗證者。誠實的驗證者將被激勵在這條鏈上建立,因為他們將避免因未能(正確地)證明攻擊者的鏈而受到的懲罰。建立在以太坊上的交易所、法幣入口和應用程式大概會更願意留在誠實鏈上,並會跟隨誠實的驗證者進入誠實的區塊鏈。
然而,這將是一個重大的治理挑戰。由於切換回誠實鏈,一些使用者和驗證者無疑會遭受損失,攻擊後驗證的區塊中的交易可能會被回滾,從而破壞應用層,而且這完全破壞了一些傾向於相信「程式碼即法律」的使用者的道德觀。交易所和應用程式很可能已經將鏈下操作與現在可能被回滾的鏈上交易聯繫起來,從而引發一連串難以公平解開的撤回和修訂,特別是如果不義之財已經被混合、存入去中心化金融 (DeFi) 或其他衍生品中,對誠實使用者產生次要影響。毫無疑問,一些使用者,甚至可能是機構使用者,已經透過精明或機緣巧合從不誠實的鏈中受益,並可能反對分叉以保護他們的收益。有人呼籲演練社群對 >51% 攻擊的回應,以便能夠迅速執行合理的協調緩解措施。Vitalik 在 ethresear.ch 的這裡 (opens in a new tab)和這裡 (opens in a new tab),以及在推特的這裡 (opens in a new tab)進行了一些有用的討論。協調的社交回應的目的應該是非常有針對性和具體地懲罰攻擊者,並將對其他使用者的影響降至最低。
治理已經是一個複雜的話題。管理對不誠實定案鏈的第 0 層緊急回應對以太坊社群來說無疑具有挑戰性,但它在以太坊的歷史上已經發生過——兩次)。
儘管如此,最終的後備方案落在現實世界中,還是有一些相當令人滿意的地方。最終,即使我們擁有如此驚人的技術堆疊,如果最壞的情況發生,真實的人們也必須協調找出解決之道。
總結
本頁面探討了攻擊者可能嘗試利用以太坊權益證明 (PoS) 共識協定的一些方法。探討了擁有越來越大比例總質押以太幣的攻擊者所進行的區塊鏈重組和最終性延遲。總體而言,更富有的攻擊者有更多成功的機會,因為他們的質押轉化為投票權,他們可以用來影響未來區塊的內容。在質押以太幣的某些閾值數量上,攻擊者的權力會升級:
33%:最終性延遲
34%:最終性延遲、雙重最終性
51%:最終性延遲、雙重最終性、審查、控制區塊鏈的未來
66%:最終性延遲、雙重最終性、審查、控制區塊鏈的未來和過去
還有一系列更複雜的攻擊,需要少量的質押以太幣,但依賴於非常老練的攻擊者對訊息時序有精細的控制,以動搖誠實的驗證者集合對他們有利。
總體而言,儘管存在這些潛在的攻擊向量,但成功攻擊的風險很低,肯定低於工作量證明 (PoW) 的等效攻擊。這是因為旨在用其投票權壓倒誠實驗證者的攻擊者,將面臨質押以太幣的巨大成本風險。內建的「胡蘿蔔與大棍」激勵層可防禦大多數不當行為,特別是對於低質押攻擊者。更微妙的彈跳和平衡攻擊也不太可能成功,因為真實的網路條件使得對特定驗證者子集的訊息傳遞進行精細控制非常難以實現,而且客戶端團隊已經透過簡單的修補程式迅速關閉了已知的彈跳、平衡和雪崩攻擊向量。
34%、51% 或 66% 的攻擊可能需要帶外社交協調來解決。雖然這對社群來說可能會很痛苦,但社群進行帶外回應的能力對攻擊者來說是一個強烈的抑制因素。以太坊社交層是最終的後盾——即使在技術上成功的攻擊,仍然可以透過社群同意採用誠實的分叉來使其失效。攻擊者和以太坊社群之間將會有一場競賽——如果社交協調攻擊發動得夠快,花費在 66% 攻擊上的數十億美元可能會被成功的社交協調攻擊所抹殺,讓攻擊者在被以太坊社群忽略的已知不誠實鏈上留下大量缺乏流動性的質押以太幣。這最終對攻擊者有利可圖的可能性足夠低,足以成為有效的威懾。這就是為什麼投資於維持一個具有緊密一致價值觀的凝聚力社交層如此重要。
