“芝”心好友,感恩有你 - 參與動態15天發帖打卡挑戰 ,瓜分$2,000超值獎勵!
歡慶感恩節!Gate.io特別推出感恩節動態15天打卡發帖挑戰活動,參與活動贏取$2,000超值獎勵!動態大使還可以獲得大使專屬周邊福利!
🔎 如何參與:
1.點擊表單報名參與活動:https://www.gate.io/questionnaire/5556
2.發帖內容需要同時帶上 #15天发帖打卡挑战# 標籤
3.發佈關於交易策略/行情熱點/幣種分析等動態內容帖
🎁 活動獎勵
A.發帖打卡數量王獎勵
積極多發帖,大獎抱回家!滿足打卡天數,按發帖量排名贏獎勵:
Top 1:$100等值代幣
Top 2:$
以太坊 L2 中的欺詐證明狀態
1. 前言
1.1. Optimistic Rollup 的未來方向
2024 年 9 月,Vitalik 強調了提升 Rollup 標準的必要性,並表示:
我對此非常重視。從明年開始,我只會在博客、演講等場合公開提及那些已經達到階段1以上的 L2,也許對一些新的、有趣的項目會有一個短暫的寬限期。
無論我是否投資,或你是不是我的朋友,都必須達到第一階段,否則不提。
Rollup 的“階段”系統是一個用於粗略評估其安全性水平的框架,從階段0到階段2。如今的主流 Rollup 中,只有 Arbitrum 和 Optimism 達到了階段1,其他大多數 Optimistic Rollup 目前仍處於階段0。
在這種情況下,出現了一些問題:
本文旨在通過分析 Optimistic Rollup 的欺詐證明和挑戰機制來回答這些問題,並探討每個項目如何努力實現階段2。此外,本文還將展望 Optimistic Rollup 和欺詐證明系統的未來發展。
1.2. Optimistic Rollup 與 ZK Rollup 的對比
眾所周知,以太坊速度慢且交易費用高。以太坊社區的研究人員和開發者們一直在努力解決這一問題。在探索了分片(sharding)和 plasma 等解決方案後,社區最終確定 Rollup 是實現擴展性的主要途徑。因此,像 Arbitrum、Optimism 和 zkSync 這樣的 Rollup 紛紛湧現。根據 L2Beat 的數據,目前大約有 40 個 Rollup 正在運行,另外一些解決方案如 Validium 和 Optimium 採用了 alt-DA 方案來實現更高的擴展性,總數約為 41 個。此外,預計將有大約 80 條新的 Rollup 鏈上線。
(當前 L2 現狀 | 來源:L2Beat)
Rollup 的核心概念是在鏈下執行交易,只向以太坊提交交易數據和結果狀態根,從而實現擴展性。用戶可以將資金存入以太坊上的特定橋接合約,將資金轉移到 Rollup 內部,並在 Rollup 內進行交易。由於交易數據會提交到以太坊,並且一旦確認就無法在不破壞以太坊安全性的情況下更改,因此人們認為 Rollup "繼承了以太坊的安全性"。
但這是真的嗎?如果 Rollup 內處理交易的提議者是惡意的呢?惡意提議者可能會篡改 Alice 的餘額,將其轉移到自己的賬戶中,並將其提取到以太坊,從而有效地盜取 Alice 的資金。
為了防止這種情況,在從 Rollup 提現到以太坊時需要額外的安全機制。通過向以太坊橋接合約提供證明,證明提現交易已正確處理幷包含在 L2 鏈中,提現交易才能完成。
最簡單的方法之意,也是每個 Rollup 都採用的方式,是將提現交易的哈希值與 Rollup 的狀態根進行比較,以證明該提現交易已正確包含在 Rollup 的狀態中。這要求將提現交易和狀態根一起提交給以太坊的橋接合約。用戶提交他們的提現交易,而驗證者計算並提交狀態根。
但是,如果提交狀態根的驗證者是惡意的,並提交了錯誤的狀態根,可能會危及用戶資金的安全。為降低這種風險,提出了兩種主要機制,致使 Optimistic Rollup 和 ZK Rollup 不同。
為了確保能安全解決諸如 L1 審查等攻擊的之意,Optimistic Rollup 的提現時間通常會延遲約一週。
1.3. 為什麼需要欺詐證明?
與 ZK Rollup 不同,Optimistic Rollup 的驗證者可以提交錯誤的狀態根並試圖操控提現交易。欺詐證明有效地防止了這一點,確保了橋接合約中的資金安全。
如果沒有強有力的欺詐證明機制,Optimistic Rollup 就不能完全繼承以太坊的安全性。例如,在當前 Arbitrum 的許可驗證者系統中,如果所有驗證者合謀,他們可能會盜取橋接合約中的所有資金。同樣,在 Base 等基於 OP Stack 的 Rollup 上,由於主網上還未實現無許可的故障證明機制,單個惡意驗證者也可能盜取資金。
因此,欺詐證明在 Optimistic Rollup 的安全性中起著關鍵作用,任何缺乏完善欺詐證明機制的系統都對用戶資產構成風險。
本文將評估各種 Optimistic Rollup 所面臨的風險,並檢視它們的欺詐證明機制的實施以及優缺點。
1.4. 邁向階段2:“移除輔助輪”
欺詐證明系統在幫助 Optimistic Rollup 實現“階段2”過程中發揮了關鍵作用。Vitalik 提出的階段框架,目前由 L2Beat 運營,用於評估 Rollup 的安全水平。
在以太坊生態系統中,這個階段框架通常被比作學習騎自行車。階段0 的 Rollup 依賴最多的信任假設,被比作帶有輔助輪的三輪車,而完全繼承以太坊安全性的階段2 Rollup 則被比作移除輔助輪的兩輪車。
以下是階段0到階段2各個階段的詳細標準:
正如上文所提到的,要使 Optimistic Rollup 達到階段1或階段2,實施一個合適的欺詐證明和挑戰機制至關重要。考慮到這些標準,滿足階段2要求的欺詐證明系統應具備以下特徵:
在本文的後半部分,我們將探討各種協議如何嘗試實現這些功能。
2. 欺詐證明 - 概念與誤解
2.1. 欺詐證明是如何實施的?
欺詐證明提供了鏈上可驗證的證據,表明提交的狀態根不正確,意味著 L2 中的某個特定狀態轉換函數執行不當。一個簡單的方法是從上一個確認的狀態根開始,為執行所有 L2 區塊生成證明,直到當前狀態根,從而證明狀態根不正確。然而,這種方法代價高昂且耗時。
因此,生成有效的欺詐證明時,需要先縮小到特定的不正確狀態轉換,再為該部分生成證明。大多數欺詐證明協議都遵循這種方法。
欺詐證明和質疑協議通常包括以下步驟:
2.2. 常見誤解:欺詐證明與質疑不會回滾鏈
需要注意的是,即使發生欺詐證明和質疑,鏈也不會被回滾。欺詐證明確保的是“橋接合約中的資金不會被惡意提取”,而不涉及不正確狀態轉換的回滾。
不回滾的主要原因是沒有必要。當 Rollup 中發生不正確的狀態轉換時,核心問題在於惡意行為者可能會從橋接中竊取用戶資金。為防止這一點,只需確保提交給 L1 的狀態根是正確的。這個過程與鏈回滾無關,只要防止惡意狀態根的最終確認,欺詐證明和質疑機制就已足夠。
此外,如果提交狀態根的提議者和生成 L2 鏈塊的排序者是不同的實體,那麼也沒有必要進行回滾機制。
因此,即使成功解決了質疑,L2 鏈也不會被回滾;只有提交給 L1 的狀態根(輸出或聲明)會被刪除或替換。如果欺詐證明和質疑機制正常運行,用戶橋接資金的安全就能得到保證。
2.3. 真實案例:2024 年 4 月 Kroma 的質疑
通過實際的質疑案例,可以看到整個 Rollup 鏈不會被回滾,只有輸出根會被替換或刪除。截至目前,主網上唯一已知的成功質疑案例發生在 2024 年 4 月的 Kroma,這是一個基於 OP Stack 的混合 Rollup,使用 ZK 故障證明。
Kroma 是一個 OP Stack based Rollup,擁有自己的 ZK 故障證明和無許可驗證者系統。2024 年 4 月 1 日,Kroma 排序器的 L1 來源出現問題,導致排序器生成了不正確的區塊。此外,觀察到這一情況的驗證者提交了錯誤的輸出根。在輸出根提交後不久,共有 12 位質疑者對該輸出發起了質疑。
其中一位質疑者成功調用了 proveFault 函數,刪除了錯誤的輸出。
質疑者成功執行了 proveFault 函數 | 來源:etherscan
這是以太坊 Rollup 主網歷史上首次成功的質疑案例。這也是自 2021 年 5 月第一個 Optimistic Rollup(Arbitrum)推出約三年後,首次在主網環境中成功驗證和質疑故障證明的案例。有關該質疑的詳細概述可參見 Kroma 撰寫的文章。在這個案例中,Kroma 鏈並未進行回滾,只是刪除了不正確的輸出根。
免責聲明:欺詐證明還是故障證明?
欺詐證明也被稱為故障證明。特別是在 Optimism 和 OP Stack 鏈中,使用的是“故障證明”這一術語,而在 Arbitrum、Cartesi、L2Beat 等項目中,使用的術語是“欺詐證明”。
考慮到上述 Kroma 質疑案例,可以推斷出質疑往往源自於“錯誤”,而非惡意試圖操縱提現。在上述案例中,主要原因是 Kroma 驗證者觀察到的 L1 客戶端異常。換句話說,質疑有時僅僅是由於驗證者的錯誤或補丁不當引發的。在這種情況下,使用“故障證明”這個術語可能更為合適。
然而,更能反映其目的的術語是“欺詐證明”。迄今為止引入的所有機制,以及未來將引入的機制,都是為了驗證通過惡意輸出試圖竊取橋內資金的“欺詐行為”。
重點是,雖然目的是防止欺詐,但實際上質疑可能是由錯誤引發的。在本文中,我將使用“欺詐證明”,這一術語在生態系統中使用更廣泛。
3. 黑客攻擊! - 利用欺詐證明機制
3.1. 設計經濟爭議協議
每個 Optimistic Rollup 都實施了自己的欺詐證明和質疑機制,以保護用戶資金。這些機制的共同目標是“只要有至少一個誠實的參與者,協議就能保持安全”。欺詐證明是描述預定的狀態轉換函數已被正確執行的證明,通過驗證過程,最終會產生誠實參與者獲勝的結果。
然而,這並不總是成立。實際上,即使有誠實的參與者存在,也可能會出現協議陷入危險的情況。例如,由於欺詐證明很複雜,可能會出現意想不到的漏洞,而惡意參與者可能因為激勵機制不對齊而比誠實參與者獲得經濟上的優勢,導致用戶提現大幅延遲或資金被盜。
因此,設計欺詐證明和質疑機制是一項非常困難的任務。特別是,要成為階段2 Rollup,質疑機制必須是完美的,並且要有應對各種攻擊向量和漏洞的對策。
換句話說,每個欺詐證明和質疑機制都需要考慮如何應對攻擊向量。如果不瞭解每個攻擊向量,就無法理解為什麼協議必須以這種方式設計。
因此,在本節中,我們將首先研究以下攻擊向量,並探索各協議如何應對這些攻擊:
注意:以下討論的攻擊向量都是公開已知的,並且不會影響任何主網的安全性。
接下來的章節將分析的各協議及其各自的特點如下:
3.2. 攻擊向量 #1:利用經濟爭議遊戲
大多數實施了欺詐證明機制的樂觀 Rollup 都要求進行二分法,以找出第一個不一致的點。協議必須提供激勵,鼓勵參與者誠實行事,這是非常重要的。
實現這一目標的最簡單方法之一是讓參與者在採取行動時抵押一定金額的資金(保證金),如果他們被認為惡意行為,則會被罰沒保證金。
從博弈論的角度來看,協議必須確保惡意參與者為攻擊所消耗的資金大於誠實參與者為防禦所消耗的資金。然而,這非常難以實現。
這裡的關鍵原因在於,在博弈的環境中,在未完成質疑之前,無法事先知道誰是惡意參與者。換句話說,提交輸出的斷言者可能是惡意的,質疑輸出的質疑者也可能是惡意的。因此,協議必須在假設任一方可能是惡意的基礎上進行設計。此外,由於可能存在各種攻擊向量,設計協議變得極為複雜。
由於每個協議採用不同的機制,因此必須定義與每種方法對應的攻擊向量和攻擊者的激勵模型。此外,必須設計一個經濟安全模型,以確保即使在這些模型結合時仍能保持安全。
這個話題仍在持續探討中。在本節中,我們將分析可能普遍發生的攻擊向量,以及參與者在這些場景中的激勵。此外,我們還將探討每個協議如何應對這些攻擊,以及它們在多大程度上限制此類激勵。
3.2.1. 攻擊向量 #1-1:延遲攻擊
延遲攻擊是指惡意實體並不旨在竊取 Rollup 資金,而是阻止或延遲輸出在 L1 上的確認。這種攻擊可以在大多數當前的 Optimistic Rollup 中發生,增加提款的額外延遲,使用戶從 L1 提款超過一週。
這與由於 L1 驗證者的審查而引起的攻擊稍有不同,後者將稍後討論。審查阻止誠實參與者在以太坊上採取任何行動,從而允許惡意狀態根被最終確認。另一方面,延遲攻擊即使在誠實參與者積極參與的情況下,也可以延遲狀態根的最終確認。在這種情況下,用戶的提款不僅可能被延遲,而且如果攻擊者的資金多於防禦者,惡意狀態根可能會被最終確認,從而導致用戶資金被盜。
防止延遲攻擊的最簡單方法之一是要求質疑係統中的參與者抵押一定金額的資金或保證金,如果他們被認為造成延遲,則可以罰沒該保證金。
然而,需要考慮一些因素。如果攻擊者不怕資金被罰沒,仍然試圖進行延遲攻擊,該怎麼辦?
這個攻擊向量相當棘手。這也是為什麼 Arbitrum 的欺詐證明系統目前在許可結構中運行的原因。
應用於 Arbitrum One 和 Arbitrum Classic 的欺詐證明機制採用了分支模型。與其簡單地允許參與者質疑不正確的聲明,不如每個參與者提交他們認為正確的聲明,並附上一定金額的資金,將這些視為“鏈的分叉”。聲明也可以被視為鏈狀態上的檢查點。
Arbitrum 的分支模型
在 Arbitrum Classic 中,參與者將提交他們認為正確的聲明和鏈分支,通過質疑逐步刪除不正確的鏈分支,最終確認正確的聲明。
然而,單次質疑並不能確定誰是正確的。兩個惡意參與者可能以錯誤的方式進行二分法,將無關的點定義為不一致點,從而排除正確的聲明。因此,Arbitrum 確保質疑持續進行,直到沒有參與者在特定聲明上抵押資金,從而保證如果至少有一個誠實參與者,則質疑能夠成功解決。
這可以被惡意利用進行延遲攻擊。假設有誠實參與者和 N-1 個惡意攻擊者在正確的聲明上抵押資金,而一個攻擊者在錯誤的聲明上抵押資金。如果攻擊者能夠始終在誠實參與者之前提交他們的交易,他們就可以首先發起質疑。在最壞的情況下,如果他們錯誤地進行二分,分割他們一致的部分而不是不一致的部分,他們就可以在錯誤的部分提交欺詐證明。自然,這將會通過,導致在正確聲明上抵押資金的一方失敗。
由於每個質疑可能需要長達 7 天的時間,攻擊者可以將協議的延遲時間延長至 7 * (N-1) 天。
Arbitrum Classic 的延遲攻擊 | 來源:L2Beat Medium
這個機制的問題在於,延遲攻擊的成本與協議延遲的時間呈線性增長。如果攻擊者發現這種攻擊是可盈利的,他們會想要儘可能延長協議的延遲時間,而總延遲時間將與攻擊者的資金總額成正比,這可能導致用戶提款的延遲時間非常長。
總之,一個能夠有效防禦延遲攻擊的欺詐證明協議,必須設計成那種可使得最大延遲時間被限制在一定範圍內,或者延遲的執行成本隨時間呈指數增長的機制,從而使得執行攻擊的成本大於攻擊的激勵。
3.2.2. 攻擊向量 #1-2:Sybil 攻擊(資源耗盡攻擊)
另一個攻擊向量是 Sybil 攻擊(資源耗盡攻擊,鯨魚攻擊)。當攻擊者的資金或計算資源超過防禦者時,就會發生這種情況。攻擊者可以不斷提交不正確的輸出根或創建無意義的質疑,耗盡防禦者的資金或計算資源。在某個時刻,防禦者將耗盡資金或空閒的計算資源,從而無法進行防禦,而攻擊者將最終確定不正確的輸出根並竊取資金。
通常,上述攻擊向量可以在無許可系統中通過以下兩種方式發生:
為了防止此類攻擊,必須合理設計防禦者對攻擊者的優勢。在所有情況下,防禦者必須對攻擊者具有足夠的優勢。做到這一點的一種方法是仔細設計抵押金;由於 Sybil 攻擊與每個參與者可用的資金總額有關,如果抵押金設定得當,應該可以確定“系統在攻擊者的總資金未超過防禦者的總資金 N 倍的情況下是安全的”。
防止 Sybil 攻擊的另一種已知方法是實施抗 Sybil 的爭議協議。在接下來的章節中,我們將進一步介紹 Cartesi Dave。
讓我們看看每個協議如何通過各自的設計來應對這些延遲和 Sybil 攻擊。
3.3. 解決方案 #1:經濟健全的爭議遊戲
1) Arbitrum BoLD
BoLD 在 Arbitrum Classic 的分支模型基礎上,引入了以下三個元素以防止延遲攻擊的漏洞:
所有對所有質疑機制。在 BoLD 中,質疑不再是逐對進行,而是採用所有參與者可以在他們同意的分支上抵押資金的併發所有對所有系統。這防止了之前1對1逐個質疑所產生的延遲攻擊向量,並確保對同一爭議無法發生多個獨立的質疑。
通過正確狀態計算的證明防止惡意二分(歷史承諾)。在 Arbitrum Classic 中的問題是,惡意參與者可以通過以錯誤的方式進行二分,故意造成延遲,將無爭議部分標記為爭議點。為此,BoLD 要求提交證明,與狀態根一起,驗證狀態根在二分過程中被正確計算,確保沒有發生惡意二分。
在 BoLD 中,參與者必須在二分過程中提交證明與狀態根。這一證明驗證當前狀態根是否是基於之前提交的狀態根正確計算的。如果惡意參與者試圖在二分過程中提交與之前提交的狀態根無關的任意根,證明驗證將失敗,導致二分交易失敗。這有效地確保每個聲明只能發生一種類型的二分。
因此,如果攻擊者想在 BoLD 中對誠實聲明進行多次二分,他們必須提交多個聲明。
然而,生成這個證明需要驗證者使用相當多的計算資源。在內部,生成這個證明需要為二分中的所有狀態生成哈希,在 Arbitrum 中通常估計大約需要 270 個哈希(大約 1.18 x 10²¹)。為了解決這個問題,BoLD 將質疑分為三個級別,減少需要計算的哈希數量至 226(大約 6.71 x 10⁷)。
(此圖假設總共有269條指令,實際數據可能有所不同)
在之前的 Arbitrum Classic 中,質疑的持續時間沒有時間限制,允許惡意參與者只要資金充足,就可以無限期延遲協議。BoLD 引入了一種棋鍾機制,有效地限制質疑的持續時間。
假設有兩個參與者提交了不同的聲明。每個參與者都有一個計時器(棋鍾),時間為 6.4 天。當輪到某個參與者提交二分或證明時,計時器開始倒計時,並在參與者完成任務後停止。
由於每個參與者都有 6.4 天的時間,因此單個參與者能延遲進程的最大時間為 6.4 天。因此,在 BoLD 中,質疑的最長持續時間為 12.8 天(在某些情況下,當安全委員會介入時,額外增加 2 天)。
通過這些機制,Arbitrum BoLD 有效限制了由質疑引起的延遲。質疑的最大持續時間為兩週,用戶可能經歷的最大額外延遲約為一週。
然而,這可能被利用來進行延遲攻擊。惡意參與者可以創建一個質疑,並與 L1 驗證者合謀,審查 Arbitrum 上的誠實驗證者,從而將 Arbitrum 用戶的提款延遲長達一週。在這種情況下,在此時間段內請求提款的用戶可能會因為資金被鎖定而面臨機會成本。儘管這不是攻擊者直接從資金中獲利的攻擊,但由於對用戶造成了機會成本,仍然應該予以防止。Arbitrum BoLD 正在通過將創建質疑所需的抵押金設置得足夠高來應對這一問題,以威懾此類攻擊。
Arbitrum 在 BoLD 的經濟文件中計算了這個金額。協議延遲的主要原因是 L1 驗證者的審查。在延遲攻擊的情況下,情景將如下展開:
攻擊者的利潤來自於向質疑輸出請求提款的用戶所產生的機會成本。最壞的情況是,所有 Arbitrum 中的資金都在一個輸出中請求提款,此時用戶所承受的機會成本計算如下,假設 Arbitrum One 的 TVL 為 154 億美元,APY 為 5%:
機會成本=15,400,000 x (1.051/52 - 1) = $14,722,400
由於提交不正確聲明可能帶來如此高的機會成本,BoLD 中的聲明提交者被要求提交類似量級的抵押金。目前,BoLD 中聲明提交所需的抵押金設定為 3600 ETH,約合 940 萬美元。
這樣做是為了預防攻擊者通過延遲給系統造成重大損失。由於攻擊者在質疑中將失去其抵押金,他們可以造成最高 1470 萬美元的機會成本,但將損失約 940 萬美元的資金。因此,BoLD 通過要求抵押金與最壞情況下的機會成本相當來抑制延遲攻擊。
然而,3600 ETH 的抵押金並不是僅僅由於延遲攻擊而設定的。為了防禦 Sybil 攻擊,Arbitrum BoLD 可確保系統在攻擊者的總資金是防禦者總資金的 6.5 倍之前保持安全,這就是 3600 ETH 的抵押金額度的確定依據。
從 Sybil 攻擊的角度來看,以下攻擊情景可能會在 Arbitrum BoLD 中發生。BoLD 的質疑係統由三個層次組成,用戶必須鎖定資金以提交他們認為正確的聲明。
假設誠實參與者 Alice 提交了一個有效的聲明,金額為 X ETH。擁有 3600 ETH 的惡意參與者 Bob 可以創建多個惡意聲明。此時,Alice 需要為 Bob 的每個聲明在低層鎖定 Y ETH。
在 Arbitrum 的分支模型中,鎖定資金意味著同意從創世到聲明的鏈狀態。這個特性允許參與者將他們抵押的資金從聲明 A 移動到其子聲明 A' 和 A''。因此,Alice 將她最初抵押的 X ETH 轉移到低層,併為 Bob 的每個惡意聲明鎖定 Y ETH。
如果 Bob 的資金明顯多於 Alice,會發生什麼?Bob 可以生成無數惡意聲明,直到 Alice 的資金耗盡到無法繼續鎖定。在這一時刻,Alice 將無法繼續進行二分,從而允許 Bob 確認不正確的聲明。
歸根結底,這個問題歸結為防禦者在遊戲中應該比攻擊者更優勢的程度。
Arbitrum 將這一指標稱為資源比例。它表明誠實參與者相對於惡意參與者的優勢程度。這個比例通過每個參與者必須支付的 gas 費 (G) 和抵押金額 (S) 的比例來表示,如下所示:
BoLD 的質疑係統分為三個層次,通過在每個層次上保持這一資源比例,確保防禦者在整個系統中始終比攻擊者具有 N 倍的優勢。Arbitrum 根據這一資源比例計算了頂層所需的抵押金量並繪製了圖表。
(頂層爭議抵押成本與 Arbitrum BoLD 的資源比例 | 來源:Desmos)
根據該圖,當資源比例為 100 倍時,頂層所需的抵押金超過 100 萬 ETH(超過 4 萬億美元)。雖然更高的資源比例使系統在防止 Sybil 攻擊方面更加安全,但抵押金額卻變得如此高,以至於幾乎沒有人能參與系統,這使得它與僅有一個驗證者提交聲明的中心化系統沒有區別。
因此,在 BoLD 中,資源比例設定為 6.5 倍,使得頂層的抵押金為 3600 ETH,一級和二級的抵押金分別設定為 555 ETH 和 79 ETH。
總之,BoLD 通過計算資源比例並設定抵押金額,確保防禦者比攻擊者有 6.5 倍的優勢,以防止 Sybil 攻擊。
2)Cartesi Dave
Cartesi 的 Dave 於 2022 年 12 月在一篇名為《非許可評審錦標賽》的論文中首次提出,早於 BoLD 的首份白皮書。它旨在使誠實參與者的計算資源和資金相對於攻擊者保持優勢。Dave 的結構與 BoLD 類似,具有兩個關鍵特徵:
通過正確狀態計算證明(歷史承諾)防止惡意二分。
與 BoLD 類似,Dave 要求參與者在二分過程中生成證明,以顯示他們正確地進行了計算,從而防止惡意形式的二分。因此,Dave 的質疑係統也分為多個層次,以節省驗證者的資源。
在錦標賽結構中採用一對一的順序質疑機制。
Dave 的質疑不是一次性進行的,而是以錦標賽的形式進行,具體如下面的圖所示。
上圖展示了當惡意攻擊者提交七個錯誤聲明對網絡進行質疑時,質疑是如何進行的。由於歷史承諾的性質,支持正確聲明(以綠色表示)的誠實參與者被聚集在一起組成一個團隊。在 Dave 中,他們被組織成錦標賽形式,並按圖示排列,每個參與者進行一對一的質疑。同一階段的質疑是並行進行的,經過一週,當質疑完成後,勝者將進入下一個階段。在圖中,誠實參與者的團隊必須經歷三輪質疑才能贏得錦標賽。
這一特性在防止 Sybil 攻擊方面非常有效。首先,攻擊者必須創建多個聲明來執行 Sybil 攻擊,每個聲明都會顯著消耗攻擊者的計算資源和資金。
Cartesi 的論文證明,在任何情況下,防禦者始終保持對攻擊者的指數優勢。換句話說,Dave 確保可以用對攻擊者數量的對數資源來防禦 Sybil 攻擊。這使得在 Dave 中執行 Sybil 攻擊變得非常困難,因此 Dave 的抵押金額被設定為最低 1 ETH,遠低於 BoLD 中的金額。
然而,Dave 很容易受到延遲攻擊。錦標賽的每個階段消耗一個單位的質疑時間(一個星期),因此惡意聲明越多,協議延遲就越長。在 Dave 中完全解決一個質疑所需的時間可以用以下公式表示:
Td = 7 x log2(1 + NA)(天數)
其中 NAN_ANA 表示惡意聲明的數量。然而,Dave 的質疑可以由多個層級組成,以有效生成歷史承諾。在這裡,惡意參與者可以在每個質疑層級生成 NAN_ANA 個惡意聲明,這將增加總延遲時間,如下所示:
Td = 7 x [log2(1 + NA)]L(天數)
其中 LLL 表示每個質疑中的層級數量。如果如上圖所示,有七個惡意聲明且 L=2,則完全解決質疑可能需要長達 9 周,用戶將經歷額外的 2 個月的提款延遲。如果層級數量增加或惡意聲明數量增加,延遲可能會延長至幾個月。
Cartesi 旨在利用零知識證明(ZK)解決此問題,詳細討論將在第 4 節“可行的改進”中進行。
3)樂觀故障證明(Optimism Fault Proof, OPFP)
OPFP 是一個非許可質疑協議,目前在 OP 主網應用,具有以下特點:
OPFP 允許任何人隨時提交輸出(根聲明)。不同意所提交輸出的驗證者可以通過發起二分過程來對其進行質疑。
OPFP 博弈樹和二分過程的架構 | 來源:Optimism 文件
二分過程是在上圖所示的博弈樹上併發進行的。樹的葉子表示 L2 的狀態,樹中的每個節點對應 L2 中的一個狀態,最右側的葉子表示最新的 L2 狀態。例如,在節點 1 提交聲明與在節點 31 提交狀態是等效的。
這種結構允許表示二分。例如,如果一個驗證者不同意根聲明(節點 1),他們會在節點 2 提交聲明,節點 2 對應樹中的節點 23,因為它是節點 16 和節點 31 之間的中點。節點 1 的提交者接著會檢查節點 23 的 L2 狀態,如果同意,則提交節點 6(節點 27);如果不同意,則提交節點 4(節點 19),繼續這個過程直到找到分歧。
即使在一個博弈中存在多個二分方向,它們也可以同時進行,並且任何人都可以參與二分過程,而不僅僅是輸出提交者。
OPFP 博弈樹的完整架構 | 來源:Optimism 文件
OPFP 中使用的博弈樹是嵌套結構,上層樹處理區塊級別的二分,而下層子樹處理指令級別的二分。
與 BoLD 或 Dave 不同,OPFP 並不通過歷史承諾來強制執行正確的二分,因為生成和提交此類承諾的鏈下/鏈上成本較高。
基於模塊化的可定製爭議遊戲 目前,OP 主網僅上線了兩種類型的爭議遊戲(非許可/許可)。Optimism 旨在最終引入各種類型的爭議遊戲,並已實現支持此目標的最小接口。通過遵循指定的函數名稱和參數,可以創建自定義的爭議遊戲。
通過棋鍾限制質疑時間
在 OPFP 中,當發生質疑時,提出者和質疑者都會獲得一個時鐘,分配用於二分的時間。每次提出聲明時,時鐘就開始對對方計時。Optimism 稱之為“繼承祖父的時鐘”。
有趣的是,每個參與者都允許有 3.5 天而不是 7 天的時間,這意味著如果沒有人對輸出提出質疑,該輸出將在 3.5 天內最終確定。
然而,這並不允許立即提現。在輸出最終確定後,OPFP 有一個為期 3.5 天的守護期,在此期間,安全委員會可以干預並在必要時使不正確的輸出失效。
用戶在“快樂路徑”中的提款流程 | 來源:OP Labs 博客
基於這些機制,OPFP 和其他樂觀彙總(optimistic rollups)一樣,保證用戶在提交後至少可以在 7 天后進行提現。然而,如果發生質疑,用戶可能需要超過 7 天才能通過該輸出進行提現。OPFP 的棋鐘模型限制了每個參與者在二分過程上可以花費的時間,但並沒有嚴格限制質疑解決之前的總時間。
這就引出了一個問題:如果 OPFP 上發生質疑,用戶的提款是否可能被延遲超過一週,類似於 BoLD 的情況?答案是“是的”。與 BoLD 或 Dave 不同,Optimism 為用戶提供了應對質疑情況的選項,這基於協議的獨特特性。
OPFP 在假設“提交不正確聲明的參與者將失去其保證金”的基礎上運作。然而,OPFP 中存在一個邊緣案例,使得這一假設被打破,這被稱為“搭便車聲明”。這種情況可能發生在以下場景中:
此時,Alice 應該回應並申領 Bob 的保證金,但她繼承了 Bob 時鐘上剩餘的時間,這可能不足以讓她反駁他的聲明。因此,Bob 可能通過提交“搭便車聲明”來避免失去他的保證金。
Optimism Fault Proof 中的搭便車聲明 | 來源:L2Beat
雖然這並不妨礙質疑得到正確解決,但確實代表了一種情況,即“提交了一個不正確的聲明而未罰沒保證金”,從激勵的角度來看,這種情況應該被避免的。
因此,如果提議者或質疑者的剩餘時間低於 3 小時,OPFP 通過將時鐘重置為 3 小時來解決這個問題。這確保了有足夠的時間來反駁搭便車聲明。然而,如果在接下來的二分期內沒有采取行動超過 3 小時,質疑將結束。
我們可以想象一個場景,在這個場景中,這個機制被用來進行延遲攻擊。假設誠實的參與者 Alice 提交了一個正確的輸出,從 Alice 提交的那一刻起,質疑者的時鐘開始計時。惡意參與者 Bob 等到質疑者的時鐘到期前 1 秒提交一個不正確的輸出。此時,OPFP 的規則將 Bob 的時間延長至 3 小時。Alice 會迴應,而 Bob 會繼續利用為每次二分提供的額外 3 小時。
這可能會延遲質疑的解決。Bob 能夠延遲的最長時間為 3.5 天 + 3 小時 × 最大的二分次數。OPFP 的 MAX_GAME_DEPTH 為 73,這意味著 Bob 最長可以將流程延遲 3.5 天 + 3 小時 × 36 = 8 天。如果 Alice 也採取類似措施來延遲質疑,則二分過程可能需要 16 天。
這是否意味著用戶無法在 16 天內提現?實際上並非如此,因為 Optimism 的提款邏輯使得這種情況不成立。與 Arbitrum 不同,後者要求提款必須證明包含在特定的 L2 區塊中,OP Stack 使用一種存儲證明機制,提現請求記錄在 L2 的 L2ToL1MessagePasser 合約中。這意味著即使特定輸出的質疑時間很長,用戶仍然可以等待下一個輸出完成,並根據該輸出中包含的合約存儲根進行提現。因此,即使他們請求的提現區塊受到質疑,用戶也不必經歷長時間的延遲,因為他們可以使用下一個輸出。
然而,這一切僅在用戶迅速行動的情況下成立。在大多數情況下,用戶可能仍會經歷幾天的延遲。這可以歸因於 OP Stack 中的提現流程,主要包括以下三個步驟:
關鍵點在於,從證明提現到最終完成提現,用戶必須等待一週。如果 Alice 在輸出 B 上證明了她的提現,並且發生了質疑,她可以為輸出 C 發送另一個證明,並在一週後完成提現。在這種情況下,Alice 只會經歷輸出 B 和輸出 C 之間的延遲。
因此,那些未意識到質疑的創建或響應較晚的用戶,可能會經歷最多 9 天的額外提現延遲。
此外,OPFP 中還有一個額外的延遲攻擊向量,即每個輸出都得到連續質疑。在這種情況下,用戶無法通過在下一個輸出上證明來繞過延遲,導致整個協議被延遲。OPFP 通過要求參與者在每個二分級別質押保證金來應對這一點,保證金金額呈指數級增加,如下圖所示。
OPFP 保證金金額 | 來源:Optimism 文件
換句話說,攻擊者在 OPFP 中試圖延遲質疑解決的時間越長,所需的保證金成本就會越高,因為保證金要求是呈指數增長的,這減少了隨時間進行延遲攻擊的激勵。此外,由於 OPFP 中的輸出可以隨時提交,攻擊者很難估算進行延遲攻擊所需的資源。初始保證金設定為 0.08 ETH,而在全面質疑時必須提交的總保證金高達 ~700 ETH。
總之,OPFP 在單次質疑的情況下將延遲的時長留給用戶的決定,並使用指數型保證金要求來抵消因連續質疑造成的延遲攻擊。然而,OPFP 很容易受到 Sybil 的攻擊。在 OPFP 中,如果攻擊者的資金比防禦者多,則可能會發生 Sybil 攻擊。
在 OPFP 中可能存在以下 Sybil 攻擊向量,均可能導致用戶資金被盜:
這在 OPFP 中是可能的,因為在整個質疑過程中,攻擊者和防禦者所需的總保證金金額幾乎相同,且防禦者所使用的資源(例如,Gas費或算力)並沒有顯著少於攻擊者。
然而,這並不意味著當前 OP 主網中的用戶資金處於風險之中。OPFP 仍處於階段1,安全委員會有權糾正任何不當結果。因此,即使發生此類攻擊,安全委員會也可以介入,保護 OP 主網橋上的用戶資金。
不過,為了將 OPFP 移至階段2,Optimism 必須修改機制,以確保防禦者相對於攻擊者具有更大的優勢。Optimism 正在準備爭議遊戲 V2 來解決這個問題,更多細節將在第 4 節“可行的改進”中介紹。
4) Kroma ZK 故障證明 (Kroma ZKFP)
Kroma 是基於 OP Stack 的 L2,在 OPFP 引入之前,它於 2023 年 9 月在其主網上推出了一種無許可的 ZK 故障證明系統。Kroma ZKFP 具有與 OPFP 相似的特徵,但突出的地方在於它使用 ZK 生成區塊級證明,並利用分解而非二分,大大減少了挑戰過程所需的交互次數。Kroma ZKFP 的主要特點總結如下:
通過 ZK 和分解減少交互次數
Kroma ZKFP 允許參與者在四次交互內找到分歧點。當發起質疑時,Kroma ZKFP 在 1,800 個區塊上處理質疑,從之前的輸出到當前的輸出。與二分法不同,在二分法中範圍被分成兩半,而在分解中,提議者和質疑者將範圍分成 N 部分。該過程如下:
在每位參與者提交兩筆交易後,他們將確定出他們存在分歧的區塊,質疑者可以生成一個 ZK 故障證明,以表明提議者的主張是錯誤的。在 Kroma ZKFP 中,二分超時設置為 1 小時,而 ZK 證明生成的超時為 8 小時。
BoLD 和 OPFP 都為質疑贏家提供了激勵,但並未為輸出提交者提供具體的激勵,實際上,任何想要提取資金的人都可以提交輸出併成為驗證者。然而,對於希望提現的用戶而言,自行操作驗證者客戶端是不切實際的,並且必須有人定期提交輸出以保持活躍性。由於這是一個資源密集型的任務,需要支付Gas費來提交輸出和運營驗證者客戶端,因此如果沒有適當的激勵,只有少數人可能參與作為驗證者,這可能導致中心化以及在故障場景中的響應不足。
為此,Kroma 修改了 OP Stack,將鏈上產生的Gas費的一半分配給提交輸出的驗證者。此外,Kroma 計劃在 TGE 之後將這一獎勵機制過渡到其原生代幣 KRO,並旨在引入類似 DPoS 的驗證者系統,使普通用戶能夠在不運行自己客戶端的情況下為鏈的安全性和活躍性做出貢獻。
Kroma 中的保證金金額目前設置為 0.2 ETH,確保其大於生成 ZK 證明和進行二分的成本。這項保證金將在未來的驗證者系統中轉變為 KRO 的質押。
為了確保激勵公平且一致地分配,Kroma 將輸出提交間隔固定為 1 小時,並從預註冊的驗證者集合中隨機選擇驗證者作為提議者。這防止了過度競爭導致Gas費浪費的情況,並避免了擁有交易排序權的區塊構建者壟斷獎勵的情況。
由於這一機制,Kroma ZKFP 運行併發的 1 對 1 質疑係統。當隨機選擇的驗證者提交輸出時,任何人都可以發起質疑,二分僅在輸出提交者和質疑者之間進行。多個質疑可以同時進行,首個提交有效 ZK 證明的質疑者將贏得質疑。
嚴格設定的超時意味著,即使是試圖進行延遲攻擊的惡意質疑者也必須在 10 小時內完成所有的二分和證明生成。此外,由於質疑者被迫在 6 天內完成所有操作(不包括 1 天的監護期),是不可能在 Kroma 中進行一般的延遲攻擊。
然而,如果攻擊者的資金超過防禦者,Kroma ZKFP 仍將容易受到 Sybil 攻擊,類似於 OPFP。在 Kroma ZKFP 中,Sybil 攻擊的情景可能如下所示:
與 OPFP 類似,Kroma ZKFP 在成功質疑後會刪除相應的輸出。因此,如果發生這樣的攻擊,該輸出可能會被刪除,導致用戶提取資金的延遲達 1 小時。如果攻擊持續進行,所有誠實的驗證者可能會耗盡資金,導致錯誤輸出最終確認,從而使攻擊者能夠竊取用戶資金。
此外,Kroma ZKFP 仍處於階段0,其證明系統尚不完善,原因如下:
在 OPFP 中,二分的起點通常是大約一週前的最後確認輸出。然而,在 Kroma ZKFP 中,起點是最後提交的輸出,該輸出大約在 1 小時前提交,二分過程在 1,800 個區塊上進行。
這可能使質疑者在先前的輸出因質疑被刪除的情況下贏得質疑。在這種情況下,二分將基於質疑者提交的先前輸出信息進行,如果質疑者惡意操控這些信息,他們可能會贏得質疑。
雖然 Kroma ZKFP 使用 ZK 確保如果 ZK 電路沒有漏洞,則不可能最終確認錯誤的狀態轉移,但 Kroma ZKFP 並未驗證 ZK 證明生成是否基於正確的批數據。這意味著,即使某些交易被排除或錯誤的交易被納入批處理中,ZK 證明仍然有可能通過驗證。
因此,有可能通過使用基於錯誤數據的 ZK 證明贏得質疑,並且如果用戶的提現交易被排除在批處理之外,他們的提現可能會被延遲。
然而,在實踐中,安全委員會可以干預以撤回錯誤質疑的結果或刪除無效輸出,因此這些攻擊向量不會影響 Kroma 主網用戶的資金。然而,要達到階段2,Kroma ZKFP 必須實施針對這些漏洞的防禦機制。Kroma 已經提出了針對這些問題的改進方案,具體將在第 4 節“可行的改進”中詳細介紹。
3.4 攻擊向量 #2:L1 審查
之前我們提到,Rollup 繼承了以太坊的安全性。這意味著,如果以太坊的安全性受到損害,Rollup 也會受到影響。
以太坊的情況可能影響 Rollup 安全性的兩種情形:
這些基於審查的攻擊在 Rollup 層面上很難應對,因為它們發生在以太坊協議層,需要對以太坊本身進行改進。然而,Rollup 在此期間可以採用一些策略。
3.5 解決方案 #2:7 天提現延遲和半自動化的 51% 攻擊恢復
為應對這些攻擊向量,Optimistic Rollup 當前實施了 7 天的提現延遲。這 7 天的時間最初是由 Vitalik 提出的,是基於 7 天“足夠”應對審查攻擊的想法。
讓我們分析一下 Optimistic Rollup 的 7 天質疑期是否足以抵禦審查攻擊,將考慮兩種類型的審查:弱審查和強審查攻擊。
對於第一種弱審查,我們可以使用概率計算來查看 7 天的時間是否賦予 Optimistic Rollup 抵抗審查攻擊的能力。這涉及計算在某些驗證者審查 Rollup 質疑交易時成功質疑欺詐的概率。
在這裡,需要考慮兩個因素:
為了在 7 天內成功進行質疑,必須有多筆交易成功。
在大多數協議中,如果只有一筆來自誠實參與者的交易在這一週內被納入,質疑就不會成功。因此,我們需要計算在 7 天內提交欺詐證明所需的所有交易被納入的概率
必須合理假設涉及審查的驗證者的比例。 目前,大多數以太坊區塊構建者(已知為中心化)並沒有進行審查,考慮到以太坊上單獨質押者的比例,絕大多數(例如,99.9%)的驗證者合謀進行審查的機會幾乎為零。
(以太坊主要區塊構建者的審查 | 來源:Justin Drake 的推文)
考慮到這兩點,如果我們假設 99.5% 的驗證者(仍然是一個過於極端的假設)參與了審查,並計算誠實參與者成功發送 30 到 40 筆交易所需的質疑協議(如 BoLD 或 OPFP)的概率,那麼在所有情況下,成功的概率接近 100%。此外,隨著未來解決方案(如納入列表或多個併發提議者,例如 BRAID、APS + FOCIL)的出現,抵抗審查的能力可能會進一步增強,從而降低 Optimistic Rollup 因弱審查而損失用戶資金的風險。
那麼,在強審查的情況下,7 天是否足夠?前面提到的 51% 攻擊只能通過社交分叉來解決。不可歸因審查攻擊尤其難以檢測,無法通過針對弱審查設計的解決方案(如納入列表)來防止。
有一個提議是在客戶端軟件中開發一個半自動化的 51% 攻擊恢復工具,這基於 Vitalik 提出的結構。以太坊研究人員進一步開發了這一審查檢測解決方案,分為兩個步驟:
假設該工具檢測到 51% 攻擊,下一步將是通過社交分叉轉移到一個新鏈上,從而使攻擊者的資金無效。
在這種情況下,受 51% 攻擊影響的資金必須保持鎖定,直到社交分叉執行完成。在 The DAO 硬分叉期間就發生過類似的情況,黑客的資金在子 DAO 中鎖定了 27 天,直到他們能夠提現。在此期間,以太坊社區成功進行了硬分叉,阻止了黑客兌現資金(有關更多細節,請參見 Vitalik 在 Reddit 上發佈的帖子)。
換句話說,即使發生 51% 攻擊,資金也需要保持鎖定,直到進行社交分叉。在這種情況下,Optimistic Rollup 中的 7 天提現期充當了緩衝區。如果在這一週內沒有進行社交分叉,Optimistic Rollup 中的用戶資金可能會被盜,也可能提現到中心化交易所,或通過 Tornado Cash 混合,致使資金幾乎無法在社交分叉後返回給用戶。
總而言之,雖然 Optimistic Rollup 中的 7 天提現期最初是為了應對弱審查,但實際上,弱審查發生的可能性不大,而這 7 天的時間在強審查需要社交分叉的情況下則充當了緩衝時間。
從這個角度來看,有人批評 OPFP 將此期限縮短至 3.5 天,使其更容易受到強審查攻擊。然而,這種批評是沒有根據的。由於 Optimism 仍處於階段1,監護人有足夠的緩衝期來驗證狀態根的正確性,提現只能在額外的 3.5 天監護期結束後進行。因此,即使發生強審查攻擊,攻擊者仍需等待 7 天才能提現。此外,攻擊者還必須在整整一週內審查所有與質疑相關的交易才能成功,因為監護人也需要被審查,以防止他們中止對惡意輸出的確認。
然而,關鍵在於以太坊必須確保能夠在 7 天內處理社交分叉。這意味著檢測 51% 攻擊的工具必須準備就緒,並且需要進行充分的研究和模擬,以確定是否能夠在 7 天內實施社交分叉。只有在此情況下,Optimistic Rollup 中的 7 天提現延遲才能被視為有效的保障。
3.6 攻擊向量 #3:利用欺詐證明系統中的漏洞
大多數質疑協議通過讓參與者找到一個特定的點(指令或區塊),在該點上他們的意見不一致,然後生成證明,表明另一位參與者的主張是錯誤的。用於生成此證明的虛擬機稱為欺詐證明虛擬機(Fraud Proof VM),而在該虛擬機上用於生成證明的軟件稱為程序(program)。每個協議使用不同的欺詐證明虛擬機和程序,如下所示:
每個欺詐證明系統都為了證明 EVM 中某一特定執行結果在鏈上是正確的。但是,如果該系統(無論是虛擬機還是程序)中存在漏洞,會發生什麼呢?
這個問題可以通過 Yoav Weiss 在 OVM 中發現的攻擊向量進行探討。由於 OVM 的回滾功能存在漏洞,導致攻擊成為可能,但創建“欺詐交易”的前提對於攻擊的實施至關重要。欺詐交易是在 Rollup 上正常處理時執行的交易,但在使用欺詐證明虛擬機和程序進行質疑時會產生不同結果的交易。由於欺詐證明系統應該生成與 EVM 相同的結果,因此能夠創建欺詐交易意味著欺詐證明系統中存在漏洞。
Yoav 發現了 OVM 的欺詐證明系統中的多個漏洞,並能夠通過生成欺詐交易來模擬這一攻擊。他發現的簡單攻擊示例是:在 OVM 的 StateManager 中,操作碼 SSTORE 和 SLOAD(用於存儲和讀取狀態)的 gas 成本被錯誤記錄。這意味著任何存儲或讀取合約中值的交易(幾乎所有交易,除了簡單的 ETH 轉賬)在質疑過程中都會被標識為欺詐交易,即使它在 Rollup 上正確執行。
簡而言之,如果系統中存在漏洞,正確執行的狀態更改可能在質疑期間被錯誤標記為無效,導致誠實參與者提交的輸出被標記為錯誤。
這也是 OP Mainnet 最近將其故障證明系統從無許可模式轉變為僅授權參與者可加入的模式的原因之一。在 OPFP 應用到主網後,安全審計披露了欺詐證明系統(Cannon 和 op-program)以及爭議遊戲挑戰協議中的幾個漏洞。為了防止系統被利用,Optimism 於 8 月 17 日宣佈將切換到一個權限系統。
當然,利用虛擬機漏洞對處於階段0或階段1的 Rollup 可能沒有重大影響,因為安全委員會可以隨時介入以糾正質疑的結果。這是 OP Labs 之前提出的觀點。實際上,OP Labs 在 Optimism 論壇中分享了其審計框架,概述了在何種情況下需要進行外部審計的標準。
(OP Labs 審計框架 | 來源:Optimism 論壇)
在這個框架中,最近的情況屬於第四象限:“在輔助階段故障證明”。雖然這些情況與鏈的安全性相關,但並不直接影響用戶資金,因此不包括在審計範圍內。這意味著即使漏洞被利用,安全委員會仍然可以糾正結果。
然而,既然已經識別出漏洞,就需要解決這些問題。Optimism 在其 Granite 網絡升級中修復了這些問題,使 OP Mainnet 能夠恢復到階段1。
另一方面,系統中的漏洞在階段2的 Rollup 中可能是致命的。在階段2,安全委員會只能在可在鏈上證明的漏洞情況下進行干預。由於在鏈上證明“質疑結果因系統漏洞而錯誤”幾乎是不可能的,因此如果在階段2的 Rollup 中發生漏洞,用戶的資金可能會面臨風險。
3.7 解決方案 #3:多重證明
為了防止此類問題,在代碼投入生產之前進行全面審計至關重要。然而,欺詐證明虛擬機和程序是複雜的軟件系統,系統越複雜,出現漏洞的可能性就越大。因此,即使經過嚴格的審計,漏洞仍然可能出現。我們需要探索審計以外的額外策略。
一種方法是,在同一系統內使用多個證明系統。在質疑過程中,系統不僅僅使用單一系統生成欺詐證明,而是可以同時使用不同的虛擬機和程序生成多個欺詐證明,然後對結果進行比較。這將創建一個即使在發生漏洞的情況下也能保持安全的系統。
例如,想象一個同時使用 Optimism 的 Cannon 和 asterisc ZK 故障證明虛擬機(採用 Risc-V)的多重證明系統。在質疑的情況下,以下情況將發生:
如果檢測到錯誤輸出,質疑者生成質疑併發起二分法。
一旦通過二分法找到分歧的區塊,就會同時發生兩個子游戲:
使用傳統 OPFP 方法的 Cannon 的子游戲。 使用 asterisc 生成 ZK 故障證明的子游戲。
在兩個遊戲完成後,將驗證這兩種不同的欺詐證明。
如果兩個證明都通過驗證,則質疑者勝出;如果兩個證明都未通過,則質疑者失敗。然而,如果一個通過而另一個未通過,這表明在證明生成過程中某個虛擬機或程序出現了意外的漏洞。
在這種情況下,安全委員會等實體將介入以調整質疑結果。這確保了系統能夠保持無漏洞,同時不違反“安全委員會僅能在可在鏈上證明的漏洞情況下進行干預”的條件。
這是為使 Optimism 達到階段2所做的持續努力之一。為支持這一點,OPFP 的爭議遊戲涉及為模塊化的,允許自由實現多個欺詐證明系統,並定義最小接口,以支持這一點。
4. 可行的改進
在前面的章節中,我們探討了 Optimistic Rollup 協議的設計以及在其質疑和欺詐證明驗證過程中可能出現的漏洞。本節將討論每個協議的問題和解決方案,以及欺詐證明系統和 Optimistic Rollup 的未來前景。
4.1 各協議的改進空間
1) Arbitrum BoLD
BoLD 具有健全的經濟質疑協議,因為它將最大協議延遲限制為一週,並確保在攻擊者的資金超過防禦者的 6.5 倍之前能有效防範 Sybil 攻擊。然而,BoLD 存在兩個顯著問題:
第一個問題可以通過 ZK 技術來解決。BoLD 將質疑分為多個級別,以減少歷史承諾計算所需的資源。通過使用 ZK,這可以減少到單一級別。
這個概念與 Cartesi 的 Gabriel 提出的 BoLD++ 建議相似。當質疑分為多個級別時,增加資源比例會導致最高級別的押金規模呈指數增長。然而,當使用單一級別時,可以更容易地增加資源比例,從而使協議更能抵抗 Sybil 攻擊。
第二個問題,即需要 3,600 ETH 的押金,更難以解決。BoLD 的押金規模不僅是為了應對 Sybil 攻擊,也是為了威懾延遲攻擊。押金規模是 TVL(總鎖倉價值)的函數,即使使用 ZK,也無法顯著降低。為了解決這個問題,BoLD 正在實施一種礦池化押金機制,允許多個參與者共同承擔押金。
2)Cartesi Dave
Dave 通過其錦標賽結構有效地應對了 Sybil 攻擊,但如前所述,它容易收到的延遲攻擊。最大延遲時間是包括惡意聲明數量 NA 和質押級別數量 L 的函數,其計算公式為: Td = 7 x [log2(1 + NA)]L(天數)
如果 NA = 7 且 L = 3,協議可能會面臨長達四個月的延遲,給用戶帶來明顯的不便和損失,因為提現將被延遲。
ZK 可以幫助減輕這個問題。通過將級別 L 固定為 1(如 BoLD++ 中那行),最大延遲時間可以減少為: Td = 7 x log2(1 + NA)(天數)
據報道,Cartesi 正在利用 RISC Zero 的 ZK 技術進行這一改進。然而,仍然存在對這種改進是否足以完全防止延遲攻擊的擔憂。如果 NA = 7,協議仍可能面臨額外的長達兩週的延遲,而攻擊者的成本僅為 7 ETH 的押金,外加Gas費和鏈外歷史承諾成本。對於鎖倉價值較高的鏈,這種懲罰可能不足以威懾延遲攻擊。
(Dave:帶有 BoLD 風格的子質疑機制 | 來源:L2Beat Medium)
有一個建議讓 Dave 採用 BoLD 風格的質疑機制,每輪進行 8 名參與者的比賽,而不是進行1對1的對決,類似於傳統的錦標賽。在這種情況下,延遲時間的計算公式為:
Td = 7 x log8(1 + NA)(天數)
在這種結構下,攻擊者需要至少提供 64 ETH 保證金才能將質疑延遲超過兩週,總保證金需求為 64 ETH,並且需要承擔大量鏈上和鏈外的成本。
然而,這種方法的不足之處是削弱了防守者在面對 Sybil 攻擊時的優勢。雖然 BoLD 提供了一個防守者比攻擊者有 N 倍優勢的結構,但 Dave 則創造了一種防守者具有遠遠超出攻擊者的指數級優勢。
總之,Dave 可以通過使用 ZK 欺詐證明有效限制延遲攻擊的向量。雖然應用類似 BoLD 的結構可以提高抵抗延遲攻擊的能力,但這可能會導致防守者在面對 Sybil 攻擊時的優勢降低。
3)Optimism Fault Proof (OPFP)
OPFP 的缺點是容易受到 Sybil 的攻擊,因為攻擊者和防守者的成本相等。OP Labs 在 爭議遊戲 V2 中提出了這一問題的解決方案。
與原始 OPFP 不同,後者在每次二分時提交保證金,而爭議遊戲 V2 只要求參與者在二分開始時提交保證金。此外,爭議遊戲 V2 引入了二分法,允許參與者在分支點同時提交多個請求,從而在大多數情況下減少互動次數。
(爭議遊戲 V2 中的分支聲明 | 來源:Optimism Specs GitHub)
在之前的 OPFP 中,Sybil 攻擊的向量有:
引入分支聲明解決了這兩個向量問題。首先,誠實參與者在二分過程中不需要提交額外的保證金,而惡意質疑者必須為他們創建的每個新質疑提交押金。如果押金的金額設置得當,攻擊者大量創建質疑就變得不可持續。
其次,在爭議遊戲V2 中,較高層級的保證金金額更大,因此不斷提交虛假輸出的成本對於攻擊者而言高於防守者。
因此,OPFP 可以通過在爭議遊戲 V2 中引入的分支聲明有效應對 Sybil 攻擊。
4)Kroma ZK Fault Proof (Kroma ZKFP)
Kroma ZKFP 面臨 Sybil 攻擊的脆弱性和不完善證明系統這兩大挑戰。Kroma ZKFP 要想進展到階段 1,需要解決以下兩個問題:
Kroma 計劃從 Scroll 的 Halo2 zkEVM 切換到 Succinct SP1 zkVM,以解決這兩個問題並推進到階段 1。
Kroma 預計將修改其質疑過程,使其與 Optimism 的爭議遊戲接口對齊。這一調整在 Kroma 的標準中有詳細說明,它將允許二分的起始點移動到一週前的最後確定輸出,從而解決第一個問題。
對於第二個問題,Kroma 將使用基於 ZK 的無信任推導。具體工作方式如下:
(使用 ZK 的無信任推導 | 來源:Lightscale Notion)
想象一下,我們想證明特定的 L2 區塊 T 是正確執行的。在生成 ZK 證明之前,我們必須驗證區塊 T 的交易數據是否基於 L1 批量數據正確構建。
在這裡,Kroma 打算通過 ZK 驗證批量數據是否從 L1 正確提取。如果數據只是通過 ZK 程序外部的可信 RPC 獲取,那麼就無法確認批量數據是否被篡改。可以通過生成區塊哈希的連接性 ZK 證明來驗證程序是否訪問了正確的區塊並提取了批量數據,這些區塊從區塊 O(L2 區塊 T 的 L1 來源)到區塊 C(創建質疑時的 L1 區塊)。如果質疑者基於錯誤的批量數據構造 L2 區塊 T,則質疑者提取批量數據所引用的 L1 區塊哈希將與實際包含批量數據(包括 T1)的 L1 區塊哈希不同,並且它也不會與區塊 C 相連接。因此,只要沒有哈希衝突,通過 ZK 驗證 L1 區塊的連接性可以證明質疑者是從正確的批量數據構造了 L2 區塊。
Kroma 計劃使用 ZK 驗證批量數據的準確性,這可以檢查從 L1 區塊 O 到 C 的區塊哈希連接性。如果質疑者基於錯誤的批量數據構造 L2 區塊 T,他們引用的 L1 區塊哈希將與包含正確批量的 L1 區塊不同,並且不會連接到區塊 C。由於沒有哈希衝突,質疑過程可以使用這種方法驗證正確的批量數據。
通過這些改進,Kroma ZKFP 將能夠進入階段 1。然而,要達到階段 2,Kroma 需要額外的解決方案來防範 Sybil 攻擊,包括將質疑協議改為所有對所有(All-vs-All)並重新設計保證金機制。
4.2. 總結
5. 欺詐證明的未來
5.1. 階段 2 Rollup - 您的資金是安全的
如上所述,Optimistic Rollups 正在朝著階段 2 發展。Arbitrum 正在基於 BoLD 努力實現階段 2。BoLD 的實施方案已經在治理論壇上發佈,並獲得了大量支持,目前已經在測試網上部署。如果沒有發現重大安全問題,Arbitrum 很可能會在今年年底之前通過 BoLD 實現階段 2。
Optimism 也在努力實現階段 2。為了讓 OP 主網達到階段 2,必須完成爭議遊戲 V2,並且需要有多種證明機制支持多重證明。儘管標準仍在完善中,但爭議遊戲 V2 有效地解決了現有 OPFP 的弱點,提供了強有力的防護,以抵禦 Sybil 攻擊,使其更接近階段 2。此外,各種團隊,包括 OP Labs、Succinct、Kroma 和 Kakarot,正在積極開發多重證明,投入了大量研發資源來創造多樣化的 OP Stack 證明方式。因此,除非出現重大問題,Optimism 預計也將在明年上半年邁向階段 2。
這兩個 Rollup 過渡到階段 2 可能會對 Rollup 生態系統產生重大影響。Arbitrum 和 Optimism 各自擁有自己的 Rollup 框架,分別是 Arbitrum Orbit 和 OP Stack。它們的階段 2 過渡意味著所有使用這些框架的 Rollup 也可以轉向階段 2。
因此,從今年年底到明年,用戶基礎龐大的主要 Rollup,如 Arbitrum、OP 主網和 Base,預計將過渡到階段 2,繼承以太坊的完整安全性。這很可能會平息諸如“Rollup 只是多重簽名”或“Rollup 隨時可以拿走您的資金”的批評。
5.2. ZK 欺詐證明是未來
大多數討論的協議都可以通過實施 ZK 欺詐證明獲益。例如,將 ZK 應用到 Arbitrum BoLD 中可以提高資源比率,使其對 Sybil 攻擊更具抵禦能力,而 Cartesi Dave 則可以使其不那麼容易受到延遲攻擊。OPFP 也在研發中投入了 ZK 以支持多重證明系統,這可能減少保證金金額並提高協議安全性。
值得注意的是,ZK 欺詐證明不僅僅意味著減少驗證者之間的交互。較少的交互意味著驗證者所需的資源顯著減少,從而降低保證金金額,使更多參與者能夠加入協議。此外,這也減少了最大可能的延遲,提高了整體協議安全性。
通過這種方式,ZK 欺詐證明在 Optimistic Rollup 的安全性和去中心化方面發揮著關鍵作用。
5.3. ZK Rollup 表現如何?欺詐證明會變弱嗎?
此時,一些讀者可能會問: 如果欺詐證明和質疑機制如此複雜,ZK Rollups 是否會是更好的選擇? 在一定程度上,這是正確的。在 ZK Rollups 中,達到階段 2 不需要考慮複雜的經濟因素,用戶的資金在 L1 審查事件中不會面臨被盜的風險,用戶可以在幾小時內提取資金。
Optimistic Rollups 向 ZK Rollups 的過渡可能會比預期更快。這是因為 ZK Rollups 的主要缺點——很高的證明生成成本和時間——正在迅速改善。最近,Succinct Labs 推出了 OP Succinct,這是一種基於 OP Stack 的 ZK 版本,提供了一個輕鬆啟動 ZK Rollups 的框架。
OP Succinct 簡介 | 來源:Succinct 博客
不過,仍然有幾個需要考慮的因素。首先是成本。在 OP Succinct 中,生成一個區塊證明的成本約為 $0.005-$0.01,而運行證明器的每月成本估計在 $6,480 到 $12,960 之間。如果鏈的交易每秒處理量(TPS)較高,這些成本可能會進一步增加。
(各網絡證明成本基準 | 來源:Succinct 博客)
例如,在 OP Succinct 的 Base 網絡上,每個區塊的平均證明生成成本約為 $0.62。根據這個數字計算,月成本將達到 $803,520。這是 Optimistic Rollups 所沒有的額外成本,即使 ZK 成本降低,ZK Rollups 的運營成本也始終會高於 Optimistic Rollups。
第二個考慮是對去中心化的影響。在 ZK Rollups 中,驗證者需要運行證明器,這比在 Optimisitic Rollups 中運行欺詐證明程序更困難且成本更高。此外,由於 ZK 系統中的證明生成時間較慢,用戶無法實時驗證交易。雖然更高的硬件標準可以提高證明生成速度,以匹配交易執行速度,但這意味著運行證明器需要高標準的計算環境。理想情況下,任何人都應該能夠運行一個節點以確保鏈的安全,但 ZK 目前還沒有達到這個水平。
最後,ZK Rollups 基於高度複雜的數學和密碼學,這種複雜性超出了欺詐證明和質疑協議的範圍。因此,在可以安全地用於生產前,ZK 系統需要進行廣泛的測試。
Arbitrum 正在追求一種結合 ZK 和 Optimistic 方法的混合協議作為其最終目標。該協議主要作為 Optimistic Rollup 運作,僅在需要快速提現時生成 ZK 證明。這對於需要快速在鏈之間重新平衡資金的場景(例如交易所或跨鏈橋)非常有用,也有助於實現鏈之間的互操作性。
總之,目前 Optimistic Rollup 方法似乎是有效的,同時採用 ZK 作為混合方案。但隨著 ZK 證明生成成本和速度的持續改善,未來更多的 Optimistic Rollups 可能會認真考慮轉向 ZK。
5.4. 欺詐證明僅適用於 Rollup 嗎?
我們已經研究了以太坊的 Optimistic Rollups 及其欺詐證明機制。那麼,這種欺詐證明還有哪些其他應用場景呢?
Eigenlayer 是一種允許通過再質押出租以太坊安全性的服務。在 Eigenlayer 中,運營商可以根據 Eigenlayer 內的委託合約,存入 ETH 或用戶的 LST,並通過選擇多個 AVS(主動驗證服務)參與驗證。通過 Eigenlayer,協議可以輕鬆構建 AVS,並減少初始驗證者的引導成本。
與任何其他區塊鏈一樣,AVS 會對成功驗證的運營商進行獎勵,並且在他們採取惡意行為時必須對其進行懲罰。這就是欺詐證明可以在罰沒過程中使用的地方。
AVS 的罰沒示例 | 來源:Eigenlayer GitHub**
以橋接 AVS 為例。橋接 AVS 的前提是必須正確地將用戶的資金轉移到目標鏈,任何惡意操縱交易的運營商都應受到罰沒。如果發生此類操縱,發現不當行為的質疑者可以在爭議解決合約中創建一個帶有欺詐證明的質疑,聲稱運營商在橋接操作中執行不當。如果欺詐證明被認為有效,AVS 可以調用 Eigenlayer 中的罰沒合約,暫停該運營商的任何獎勵。
儘管這一罰沒功能在 Eigenlayer 中尚未實施,但他們最近宣佈了共享安全模型,計劃在下一個版本中包含罰沒功能。這將使欺詐證明可以用於罰沒。
輕客戶端應該能夠在不下載區塊鏈所有數據的情況下,驗證一個區塊是否得到了大多數(超過 67%)驗證者的認可。然而,輕客戶端很難為每個區塊驗證所有驗證者的簽名,並且隨著驗證者數量的增加,這幾乎變得不可能。
在這方面,Celestia 提出了一個有趣的概念。在 Celestia 中,即使大多數驗證者是惡意的,它也提出了一種方法,允許單個誠實的全節點告知輕客戶端拒絕有缺陷的區塊。這個單一的誠實全節點可以通過欺詐證明來保證其“誠實性”。
Celestia 中的欺詐證明有兩種類型:
首先,數據的欺詐證明的工作原理如下:Celestia 允許輕節點在不直接下載區塊內所有數據的情況下,驗證驗證者是否持有正確的數據。為了實現這一點,Celestia 使用了一種稱為數據可用性抽樣(Data Availability Sampling,DAS)的技術。
Celestia 的數據可用性抽樣 | 來源:Celestia 文件
Celestia 的驗證者將交易數據結構化為一個 k x k 的矩陣,然後使用稱為 2D Reed-Solomon 編碼的技術將其擴展為 2k x 2k 的矩陣。他們隨後計算每行和每列的總共 4k 個默克爾根,並將進一步哈希這些默克爾根的結果包含在區塊頭中並傳播。
僅憑區塊頭中的默克爾根信息,輕節點就可以驗證 Celestia 的驗證者是否持有正確的數據。輕節點從 2k x 2k 矩陣中的隨機點請求數據,同時從驗證者獲取對應行和列的默克爾根。如果這些數據能夠與區塊頭中的值進行驗證,則可以信任這些驗證者持有正確的數據。
然而,一個重要的考慮因素出現了:如果驗證者惡意執行 Reed-Solomon 編碼呢?Celestia 通過實施一種稱為“壞編碼欺詐證明”的機制來解決這個問題。如果 Celestia 的全節點在區塊恢復過程中發現編碼不正確,它會生成一個包含區塊高度、錯誤編碼部分和故障證明的欺詐證明,並將其傳播給輕節點。輕節點驗證該證明,以確認數據確實編碼錯誤,從而停止使用錯誤的數據。
此外,Celestia 還提出了狀態轉換的欺詐證明機制。
Celestia 區塊的架構 | 來源:Contribution DAO 博客
Celestia 的區塊結構包括在各個時間間隔的交易追蹤數據。這使得全節點能夠輕鬆構建欺詐證明,輕節點可以在不執行整個區塊的情況下檢測不正確的狀態轉換。然而,由於複雜性問題,這一機制尚未在 Celestia 主網上實施。
總之,數據可用性層中的欺詐證明可以在不依賴共識的情況下過濾不正確的數據和狀態轉換。
將機器學習應用於區塊鏈的主要原因如下:
這裡的關鍵因素是驗證機器學習模型是否經過正確訓練。然而,機器學習計算高度密集,這使得在區塊鏈運行環境中完全執行這些計算幾乎不可能。因此,像 opML 和 zkML 這樣的框架應運而生,以有效驗證區塊鏈環境中的機器學習模型訓練。opML 採用樂觀的方法進行模型訓練,將結果記錄在區塊鏈上,並通過質疑機制糾正錯誤。
讓我們更仔細地看看 ORA 提出的這一方法,ORA 是一個提供區塊鏈上人工智能基礎設施的項目。opML 的挑戰過程與 rollup 挑戰非常相似,由以下三個關鍵組成部分構成:
ORA opML 上的驗證遊戲 | 來源:ORA 文件
通過這一欺詐證明機制,opML 利用區塊鏈的安全性和可信度,同時為機器學習模型的訓練和驗證提供了一個具成本效益的環境。
6. 結論
Optimistic Rollup 正在投入大量精力改進欺詐證明和質疑協議,以繼承更多以太坊的安全性,並創建一個更少信任的鏈。Arbitrum 預計將在今年年底通過 BoLD 達到階段2,Optimism 也在朝著階段2努力,依賴於爭議遊戲 V2 和多證明機制。到明年,Optimistic Rollup 的用戶將能夠以更高的安全性與網絡互動,無需擔心“Rollup 可能會拿走他們的資金”。此外,Vitalik 在他的博客中提到階段1及以上的 Rollup 數量預計也會增加。
然而,每個協議仍有改進的空間,許多方面可通過 ZK 欺詐證明來增強。Kroma 已經在此基礎上推進其協議,而其他協議如 Arbitrum、Optimism 和 Cartesi 也可以利用 ZK 欺詐證明保持更安全、更去中心化的方式。
在欺詐證明這一領域,不僅 Rollup 還包括其他協議正在投入大量研發資源。在“只需要一個誠實參與者”的前提下,欺詐證明與 ZK 相結合,可助力構建一個信任最小化的區塊鏈架構,其影響終將成為我們切身可感的現實。
7. 參考資料
(https://l2beat.com/scaling/summary)[L2Beat]
欺詐證明戰爭 | Luca Donnoh at L2Beat
Arbitrum 文件
Optimism 文件
Optimism 規格
無權限裁判的比賽 | Cartesi
Kroma 規格
BoLD:快速且低成本的爭議解決
BoLD 的經濟學
為什麼樂觀 Rollup 的挑戰週期是 7 天? | Kelvin Fichter at OP Labs
欺詐證明已崩潰 | Gabriel Coutinho de Paula at Cartesi
樂觀時間旅行 | Yoav Weiss
關於 Kroma 主網首次成功質疑的介紹
解讀基線去中心化的進展 | OP Labs
對基於欺詐證明的 Layer2 協議的不可歸因的審查攻擊
OP Labs 審計框架
無信任的推導 | Kroma
介紹 OP Succinct:在 OP Stack 上的完整有效性證明 | Succinct
Eigenlayer GitHub
Celestia 文件
Contribution DAO 博客
ORA 文件
聲明: