以太坊權益證明中的區塊鏈重組博弈
Caspar Schwarz-Schilling 發表了關於以太坊權益證明中區塊鏈重組攻擊的研究,涵蓋攻擊向量、防禦機制以及現有的協議層面緩解措施。
Date published: 2022年11月29日
本演講探討了在以太坊權益證明 (PoS) 中可能發生的區塊鏈重組類型,以及旨在防止這些重組的緩解措施。以太坊基金會穩健激勵小組 (Robust Incentives Group) 的研究員 Caspar Schwarz-Schilling 詳細介紹了事後 (ex-post) 和事前 (ex-ante) 重組的機制,並比較了工作量證明 (PoW) 和權益證明之間的安全性環境。
本逐字稿是 LisCon 發布的原始影片逐字稿 (opens in a new tab)的無障礙副本。為了提高可讀性,已進行了輕微的編輯。
簡介與背景 (0:03)
歡迎大家。今天我將討論在以太坊權益證明 (PoS) 中可能發生的區塊鏈重組。
我最近加入了以太坊基金會,具體來說是穩健激勵小組。基本上,我們是一個專注於任何激勵機制的團隊。我會長話短說——這次演講內容很豐富,你可以在 GitHub 上找到我們大部分的工作成果。
兩種類型的區塊鏈重組 (0:44)
今天我想談談區塊鏈重組,特別是我想概述在以太坊權益證明領域中可能發生的兩種不同類型的重組。
一方面我們有事後重組 (ex-post reorgs),另一方面有事前重組 (ex-ante reorgs)。請原諒我使用稍微做作的拉丁文命名,但它確實能準確表達意思。
事後重組有點像我們談論重組時通常會想到的情況。攻擊者看到一個區塊——如果它很有價值,他們可能會想嘗試重組它。所以在這個圖表上,我們看到區塊 N+1 是攻擊者想要重組掉的區塊,透過建立在同一個父區塊 N 上,如果成功的話,區塊 N+3 就會建立在區塊 N+2 上。這就是常見的情況。
現在,事前重組稍微有些不同。其概念是,攻擊者甚至在不知道他們要重組掉哪個區塊之前,就需要開始攻擊。這大致上是如何運作的呢?從宏觀層面來看,區塊 N+1 建立在 N 之上,但沒有立即發布。誠實的節點甚至不知道 N+1 的存在,因此他們會繼續在 N 上建立區塊。然後透過某種機制,N+1 被發布了,而 N+3 可能會看到 N+1 處於領先地位並建立在其上,這樣一來,區塊 N+2 實際上就被重組掉了。
你可能會想,為什麼會有人想進行這種重組。嗯,因為仍然有 MEV 可以獲取。如果你夠幸運,區塊 N+2 有大量的 MEV——你可以透過直接複製貼上該區塊的內容來獲取它。最壞的情況下,你基本上可以監聽兩個時槽 (slot) 的交易。
工作量證明中的事後重組 (2:49)
在深入探討本演講的主題——事前重組之前,讓我簡要回顧一下事後重組,特別是從工作量證明 (PoW) 的背景開始。
基本上,這是對老面孔——Georgios 和 Vitalik 所寫的部落格文章的回顧。直接去讀那篇文章吧,寫得非常棒。
簡而言之,在以太坊工作量證明中,事後重組很困難,但並非不可行。擁有 10% 算力的礦工有相對較高的機會連續挖出幾個區塊,如果激勵夠高——想像一下有一個區塊包含價值 100 ETH 的 MEV 可以獲取——那麼也許 1% 的成功率就足以讓人覺得值得嘗試進行重組。
權益證明中的事後重組 (3:39)
在權益證明中,情況完全不同。我們談論的是需要荒謬數量的質押。我將帶你了解人們可能會如何進行,只是為了強調這有多麼困難。
也許先介紹一些基礎知識。以太坊權益證明中的時間是以時槽為單位推進的。每個時槽長度為 12 秒。在每個時槽中都有兩個角色:你有一個提案者——確切地說是一個提案者——以及一個由數千名驗證者組成的委員會,他們應該對在 P2P 網路上聽到的區塊進行證明。他們透過執行分叉選擇來決定鏈的頂端,這基本上是一個將區塊樹作為輸入並給出鏈頂端的函數。
如果你聽到一個有效的區塊,或者在進入時槽四秒後——以先發生者為準,你應該對區塊進行證明。因此,如果由於某種原因,區塊 N+1 的提案者離線,並且在進入時槽四秒後沒有區塊,你就會對區塊 N 進行證明。如果你及時聽到它,你就會對區塊 N+1 進行證明。很簡單。
所有這些證明都賦予了區塊權重,而分叉選擇會使用這個權重來決定最新的頂端是什麼。
現在讓我們來看看一個單區塊重組的過程。一開始,一切如常——每個人都對區塊 N 進行證明,甚至攻擊者也是。然後 N+1 建立在 N 之上,因為攻擊者不想給他們試圖重組掉的區塊增加權重,所以他們轉而對區塊 N 進行證明。區塊 N 獲得了大量的權重,因為攻擊者擁有委員會的三分之二——這意味著他們需要控制大約整個質押量的三分之二。
三分之一的誠實節點對 N+1 進行了證明,三分之二對 N 進行了證明。現在來到了區塊 N+2——顯然攻擊者將其建立在 N 上,並對自己的區塊進行證明。從誠體驗證者的角度來看,N+1 在權重上仍然領先,因為 N+1 和 N+2 都繼承了區塊 N 的全部權重,但 N+1 還擁有這三分之一的證明,而 N+2 則沒有。
如果我們計算一下——區塊 N+1 擁有價值三分之一加三分之一的證明,總共是三分之二,而區塊 N+2 也有三分之二。為了簡單起見,我們假設平局打破規則有利於攻擊者。那麼 N+3 將會看到 N+2 處於領先地位,並建立在其上。
為了讓你知道這些假設有多荒謬——即使你是一個擁有 65% 質押量的質押者,要在任何給定的時槽中控制三分之二的委員會,你的機率只有 0.05%。這證明了平行證明的力量是真實的——在以太坊權益證明中,事後重組即使不是幾乎不可能,也是極其困難的。
事前重組攻擊機制 (7:34)
現在我要談談事前重組。這種攻擊是基於 Neuder 等人的一篇論文。我們最近大幅改進了這種攻擊。我們也為此寫了一篇論文,並及時將其上傳到了 arXiv。
另外先說一下——別擔心,有緩解措施。它們會在合併 (The Merge) 之前被合併進去。
事前重組攻擊是如何運作的?最初,區塊 N——一切如常,每個人都對其進行證明。現在你是 N+1 的提案者。你提出它,並使用單個驗證者私下對其進行證明。重要的是,你保持它的私密性——你不發布它,也不在 P2P 網路上傳播它。
發生的情況是,誠實的人看不到區塊 N+1,所以他們會對區塊 N 進行證明。這就是訣竅——你繼承了那個權重,而且你實際上不需要與之對抗。
我們暫且假設延遲為零。在時槽 N+2 中,作為攻擊者,我們要做的是同時發布區塊 N+1 和私密證明。時槽 N+2 中的誠體驗證者需要對一個區塊進行證明。從他們的角度來看,他們看到了區塊 N+2 和帶有這一個私密證明的區塊 N+1。如果他們執行分叉選擇,他們會發現區塊 N+1 的權重比區塊 N+2 大,因為 N+1 擁有 N+2 所沒有的私密證明。甚至所有誠實的驗證者實際上都會對區塊 N+1 進行證明。在 N+3 中,顯而易見地,N+1 將被視為鏈的頂端。
網路延遲與攻擊 (10:25)
我假設了零延遲,這顯然不是實際的運作方式。延遲是存在的——在 P2P 網路上傳播區塊和訊息需要時間。
攻擊者仍然能夠發動這種攻擊的方法是,在 P2P 拓撲結構的不同位置擁有大量節點。當時槽 N+2 中的誠實提案者提出該區塊時,你在傳播過程的非常早期就會聽到它。因此,你可以從所有這些不同的位置發布你的私密區塊,使得大多數人在聽到區塊 N+2 之前就會聽到區塊 N+1——這意味著他們會看到區塊 N+1 在權重上領先,並實際上對其進行證明。
再次強調這裡發生的事情:我們有一個提案者和一個單一的證明者,成功地完成了一個單區塊重組。退一步說,這並不理想。
用於更長重組的平衡策略 (11:42)
如果你想玩點花樣,你可以使用平衡策略來完成更長的重組。其概念是將誠實的委員會分裂成對鏈的不同視角。
你以這樣一種方式發布你的私密區塊:大約一半的誠實節點在聽到區塊 N+2 之前,會先聽到你的私密區塊和證明——所以他們會對你的區塊進行證明。對於另一半,你希望他們在對 N+2 進行證明之前不要聽到你的區塊。
現在你有一半的誠實委員會對 N+1 進行證明,另一半對 N+2 進行證明。這有什麼幫助呢?誠實的委員會現在互相抵消了,而你作為攻擊者甚至不需要與他們對抗——這基本上是攻擊者夢想成真。
瀏覽一下圖表:區塊 N 一切如常,區塊 N+1——同樣的情況,你不發布它。誠實的驗證者對區塊 N 進行證明。區塊 N+2 出現了,你很早就聽到了它,然後你發布帶有一個證明(即「搖擺票」)的區塊 N+1,方式是讓一半的誠實委員會在之前看到它,一半在之後看到。一半投票給 N+1,另一半投票給 N+2。你實際上想要一個差一票的分裂,使得 N+2 多出一個證明,這樣 N+3 就會建立在 N+2 上,並讓重組繼續進行。
為了結束一個雙區塊重組:區塊 N+3 被提出,你很早就聽到了它,你發布區塊 N+1 和你剩下的兩個證明,淹沒 P2P 網路,使得大多數誠實的人投票給區塊 N+1——這樣它的權重就大於區塊 N+3,而 N+4 就會建立在 N+1 之上。
如果你仔細想想,在這些假設下進行這些重組是相對便宜的。即使你沒有完美的分裂,因為 P2P 網路非常大,你有一個可以瞄準的機率分佈,使得攻擊成本以委員會規模的平方根增長。
提議者權重提升緩解措施 (15:17)
讓我們來談談緩解措施。基本概念是什麼?我們將賦予提案者更多的權力。如果一個有效的區塊準時到達,讓我們在該時槽的持續時間內提升這個區塊的權重。在該時槽結束後,我們恢復通常的 LMD-GHOST 分數,一切如常。
因此,如果區塊 N+2 被準時提出且有效,這個區塊將獲得一個權重提升——假設是委員會規模的 80%。現在,攻擊者這個可愛的小 N+1 證明將無法發揮作用。門都沒有。
平衡策略也不再起作用了,因為你有一個 50/50 的分裂,但權重提升總是會將其推向一個方向。你不可能保持那個 50/50 的分裂。
其概念是,有了這個緩解措施,對手的證明必須與權重提升競爭,才能說服誠實的驗證者按照他們的喜好投票。這打破了平衡策略,並基本上完全禁止了所有的重組。好消息是——有一個開放的 PR,所以基本上它會在合併 (The Merge) 之前被合併進去。
關鍵要點 (16:48)
一些關鍵要點。我已經談到了事後重組和事前重組之間的差異。我簡要概述了工作量證明與權益證明中重組的不同環境。我向你展示了如何完成事前重組,但同樣重要的是如何修復它。
如果你對此感興趣,有一篇論文——更加詳細,更加細微。投影片將會上傳。如果你感興趣,歡迎來找我討論,你也可以在 Twitter 上找到我。
希望這對你來說很有趣。非常感謝。