KeyFrame內部研究專用

Ethereum Forks And Their Impact On Smart Contract Security

DeFi Security Summit - DSS·11月24日週一·16 min英文

三句話摘要

以太坊 Fusaka 硬分叉即將上線,開發者與安全工程師必須了解哪些 EIP 會破壞現有智能合約。 智能合約不可篡改,但 EVM 會持續改變——永遠不要寫死 gas 數值,永遠要為可能不支援新功能的 L2 留後路。 智能合約不可篡改,但 EVM 可以改變:每次硬分叉都可能讓原本有效的合約行為失效,尤其是依賴特定 gas 成本或輸入格式假設的合約,任何寫死 gas 數值的設計都是危險的。

重點整理

重點
  • 1

    智能合約不可篡改,但 EVM 可以改變:每次硬分叉都可能讓原本有效的合約行為失效,尤其是依賴特定 gas 成本或輸入格式假設的合約,任何寫死 gas 數值的設計都是危險的。

  • 2

    mod_exp 的兩項變更合力製造 DoS 風險:輸入大小限制 + gas 成本上調,若現有合約固定傳入大型輸入或固定 gas 呼叫 mod_exp,Fusaka 啟動後將直接 revert,導致合約功能永久癱瘓。

  • 3

    交易 gas 上限縮減三倍,高耗能函式需重新設計:批次迴圈操作(如清算多個倉位)若無分頁參數,可能在 Fusaka 後無法完整執行;需改為支援 `startIndex + limit` 的分段呼叫模式。

  • 4

    新 opcode/預編譯在 L2 上存在時間差風險:CLZ 與 P256 在主網啟動後,部分 L2 不會同步支援;若合約同時含有「不用新功能的存款」與「用到新功能的提款」,將導致資金鎖死在合約內。

實用技巧與重點

乾貨
  • Fusaka 時間表:演講當時預計兩週內啟動(2025 年)
  • mod_exp 輸入限制:每個輸入最大 8,192 位元(目前無限制)
  • mod_exp gas 變更:最低成本 → 500;總成本 × 2;>32 bytes 額外收費
  • 交易 gas 上限:4,500 萬 → 1,600 萬(縮減約 3 倍)
  • 歷史數據:主網上從未成功以超過 513 位元輸入呼叫 mod_exp;多數呼叫使用 329、28、256 位元
  • 新增 opcode:`CLZ`(Count Leading Zeros,計算前導零數量)
  • 新增預編譯:P256 ECDSA 簽名驗證(secp256r1 曲線),介面類似 `ecrecover`,無效輸入返回空資料
  • P256 底層呼叫陷阱:若 L2 不支援此預編譯,`call` 預設成功返回但無資料,易造成誤判
  • Solidity 現況:CLZ 僅在預發布版本的 assembly 區塊中可用;P256 需手動底層呼叫
  • Glamsterdam(下一個分叉):預計明年,目前約 50 項 EIP 提案,含 ePBS、區塊級 access list,主要影響分類:新 opcode、新預編譯、gas 調整
  • EIP-7702(PCRA 已上線):`msg.sender == tx.origin` 的 EOA 檢查已被破壞,可加 code size 檢查作為替代方案;目前尚無實際攻擊案例但有多個專案被迫更新

結論

結論

智能合約不可篡改,但 EVM 會持續改變——永遠不要寫死 gas 數值,永遠要為可能不支援新功能的 L2 留後路。

完整解析

詳細

講者唐(Signal Prime 安全工程師)在這場演講中,從實際安全工程師的角度系統性地梳理了以太坊即將到來的 Fusaka 分叉對智能合約的潛在衝擊。演講的核心前提很簡單卻容易被忽視:智能合約部署後無法修改,但它們底下的 EVM 卻持續在演進。就像積木塔的底層被抽換,上層再穩固也可能崩塌。

Fusaka 中真正會影響現有合約的有三項。第一,mod_exp 預編譯(用於 RSA 驗證等密碼學操作)將新增輸入大小上限 8,192 位元,超過者直接消耗全部 gas 並回滾;第二,mod_exp 的 gas 費用同步調漲,最低成本從原本標準拉高到 500,整體翻倍,固定 gas 呼叫的合約將中途耗盡。第三,也是影響最廣的一項:單筆交易的 gas 上限從等同整個區塊的 4,500 萬縮減至 1,600 萬,任何需要對大型陣列做全量迭代的函式(典型如清算所有倉位、批次結算)可能從此無法完整執行,永遠 revert。講者特別強調,解法是在函式加入 `startIndex` 和 `limit` 參數以支援跨交易的分段呼叫,這個設計模式對視圖函式早已是常識,但對複雜的狀態變更函式仍普遍被忽略。

另外兩項只影響新合約:CLZ opcode(計算 256 位元堆疊元素中的前導零數量)與 P256 預編譯(secp256r1 曲線的 ECDSA 驗證)。這兩者的共同危險不在功能本身,而在 L2 的支援時間差。主網啟動後,各 L2 不一定同步跟進。若一個合約同時包含「不依賴新功能的存款路徑」和「依賴新功能的提款路徑」,用戶存入後嘗試提款將遭遇 revert,資金因此被鎖死。P256 的底層呼叫還有額外陷阱:若 L2 上該預編譯不存在,EVM 預設仍會讓 `call` 成功返回,只是無資料,開發者若未嚴格檢查返回值長度,很容易把「不支援」誤判為「驗證通過」。

展望下一個分叉 Glamsterdam,目前雖有約 50 項提案,但核心兩項(ePBS 與區塊級 access list)對智能合約層無直接影響。可以預期的是,新 opcode、新預編譯與 gas 調整的組合仍然會到來,L2 支援時間差問題也將持續存在。講者以一句話作結:永遠不要假設 EVM 中任何操作的 gas 成本是固定不變的,這是貫穿所有分叉的最核心原則。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵