以太坊錨定系統中的理性終局性停滯與預終局操作風險
本文探討驗證者如何透過刻意延遲以太坊協議終局性,利用二層網路和跨鏈橋在達到真正終局前僅依賴啟發式確認信號進行操作的漏洞,進而獲取經濟利益。
內容摘要
一些以太坊錨定系統(例如 L2 和跨鏈橋)在協議最終性(finality)達成前就執行操作,依賴於諸如確認深度之類的啟發式信號。我們描述了一種理性最終性停滯(rational finality stall),即驗證者在不破壞共識的情況下暫時延遲最終性的達成。在此窗口期間,以太坊錨定系統可能會根據隨後可能被重組(reorganized)的非最終狀態採取行動。
代表性跨鏈橋使用的啟發式確認規則
(i) 大多數系統在固定的區塊確認數後觸發結算,而不是等待以太坊最終性(兩個 epoch)。
(ii) 延遲時間是根據以太坊平均區塊時間 ≈12 秒估算的,即:延遲 ≈ 區塊數 × 12 秒。
確認閾值取自官方文檔。
| 項目 | 結算機制 | 確認規則 | 區塊數 | 延遲 (分鐘) |
|---|---|---|---|---|
| Gnosis Bridge | 多簽驗證者委員會 | 確認後多簽批准 | 8 | 1.6 |
| Avalanche Bridge | Intel SGX 飛地 + 守衛者 | 確認後飛地證明 | 96 | 19.2 |
| Circle CCTP | 原生 USDC 銷毀/鑄造 + 證明 | 證明的確認閾值 | 65 | 13 |
| LayerZero | 預言機 + 中繼器雙路徑驗證 | 預言機報告的確認閾值 | 15 | 3.0 |
| Stargate | 流動性池 + LayerZero 消息傳遞 | 經由預言機/中繼器的軟確認 | 15 | 3.0 |
| deBridge | 驗證者網絡 + 提款驗證 | 驗證者觀察到的確認數 | 12 | 2.4 |
| Celer cBridge | 流動性池 / 鎖定與釋放 | 中繼器觀察到的確認數 | – | 5–20 |
動機
許多以太坊錨定系統在採取行動前並非真的在等待以太坊協議最終性。相反,它們通常依賴於啟發式信號,例如固定的區塊確認數或固定的時間延遲。例如,許多跨鏈橋在固定的區塊確認數後觸發結算,而不是等待以太坊協議最終性(兩個 epoch)。
在正常情況下,這些信號往往與以太坊最終性相關聯,應用程序可能會將它們視為大致可互換。然而,這些信號代表了不同的安全邊界。
因此,區分以下兩個問題是有用的:
-
鏈是否在繼續增長?
-
相應的狀態是否達到了以太坊協議最終性?
在普通的網絡條件下,這些信號可能看起來高度一致,但它們並不等價。
以太坊協議最終性代表了協議中可用的最強結算保證。如果一個以太坊錨定系統提前採取行動,它實際上是在隱含地依賴於一種較弱的結算規則。
理性最終性停滯
我們將理性最終性停滯定義為:驗證者聯盟出於經濟動機,有意在有限時間內延遲以太坊協議最終性的達成。
在這種情況下:
-
驗證者扣留最終化所需的證明(attestations),
-
鏈繼續正常增長,
-
最終性被暫時延遲,但不會撤銷任何已最終化的區塊。
攻擊者的目標不是破壞以太坊共識本身,而是創造一個窗口期,使以太坊錨定系統根據非最終狀態採取行動。
一個簡化的序列可能如下所示:
-
擁有足夠質押量以阻止最終性的聯盟扣留了最終化所需的投票。
-
鏈繼續正常延伸。
-
依賴確認深度或時間延遲的以太坊錨定系統將增長的鏈解釋為足夠穩定。
-
這些系統執行具有外部意義的操作。
-
隨後發現,該操作是在一個從未達到協議最終性的前綴(prefix)上執行的。
重要的是,攻擊者不一定需要撤銷已最終化的歷史。
只要能創造一個窗口,讓下游系統願意在最終性達成前採取行動,可能就足夠了。
經濟視角
這種情況可以通過簡單的經濟視角來觀察。假設一個以太坊錨定系統在 k 次確認或 t 分鐘後觸發操作。理性攻擊者只需要最終性停滯持續足夠長的時間,直到觸發該操作。
因此,相關的比較變為:
誘導預最終化行動所能提取的價值,是否大於攻擊者維持停滯的成本?
攻擊者的成本可能包括:
-
放棄的驗證者獎勵:扣留證明的驗證者會失去正常的證明獎勵,並可能面臨處罰。
-
怠工懲罰(Inactivity leak)損失:如果最終性失敗持續多個 epoch,怠工懲罰機制會逐漸減少非最終化方驗證者的質押量。
-
協調與機會成本:一個足以使最終性停滯的聯盟必須協調行為並承擔資本風險。
攻擊者的潛在收益可能來自該窗口期內觸發的行動,例如:
- 資產釋放
- 代幣鑄造
- 跨鏈消息執行
- 流動性墊付
- 賬目更新
攻擊者不需要破壞以太坊最終性本身。只要能延遲最終性足夠長的時間,讓以太坊錨定系統中的預最終化觸發器啟動即可。
從這個角度來看,該問題最好被理解為對抗性經濟學下的延遲與結算權衡。
來自 Beaconcha.in 的最新數據顯示,Lido 目前保持著 21.14% 的質押份額。全網總質押量約為 38,029,806.48 ETH。
要達到啟動最終性停滯所需的 1/3 閾值,必須填補約 12.19% 的總質押缺口(4,635,833.41 ETH)。
假設每個驗證者的質押量為 32 ETH,則需要額外 14,487 個驗證者參與攻擊。
攻擊者需要提供至少相當於這些額外驗證者所損失獎勵的賄賂,以激勵他們參與停滯。
根據以太坊基礎獎勵計算模型,在由攻擊引起的 94 個區塊重組事件中,一個理性驗證者可以賺取約 30,846.69 Gwei 的基礎獎勵。
因此:
- 12.19% 驗證者的總獎勵 ≈ 4,468,752,870.41 Gwei
- 等值 ≈ 4.47 ETH
使用 2.778% 的以太坊質押年利率(來源:以太坊質押:它是如何運作的?),這些驗證者賺取的總獎勵約為 4.61 ETH。
因此,為了使最終性停滯在經濟上可行(假設 Lido 是攻擊者),從目標系統中提取的價值必須超過約 4.61 ETH 的賄賂成本,這還不包括額外的協調和資本風險。
免責聲明: 此處使用 Lido 僅作為說明性示例,因為其質押份額較大。
此分析並不暗示 Lido 會嘗試此類攻擊。
其目的僅在於表明,鑑於目前的質押分佈,協調臨時最終性停滯的經濟障礙可能比通常假設的要低。因此,該示例旨在說明在現實網絡條件下該場景的潛在可行性。
結論
以太坊協議最終性的存在是為了提供強大的結算邊界。然而,一些以太坊錨定系統出於延遲或資本效率的考慮,可能會選擇提前採取行動。這樣做會引入額外的重組風險。
從協議設計的角度來看,最安全的默認做法是盡可能將應用程序的結算規則與以太坊協議最終性對齊。因此,我們強烈建議以太坊錨定系統在設計結算機制時,明確考慮這些風險,特別是在依賴區塊深度或時間延遲等啟發式確認規則時。
1 則貼文 - 1 位參與者
[閱讀完整主題](https://ethresear.ch/t/rational-finality-stalls-and-the-risks-of-pre-finality-actions-in-ethereum-anchored-systems/24416)