發生什麼:基金會想讓「交易結果」也能被簽名約束
以太坊基金會 Access 團隊 10 月 5 日在官方部落格發表研究文章,討論「原生交易斷言」(native transaction assertions)。文章指出,基金會的 Trillion Dollar Security(1TS)計畫已把盲簽與交易結果不確定列為使用者體驗風險;目前以太坊「沒有一般性的機制,讓鏈上程式檢查一筆交易產生的全部淨狀態變化」,交易斷言就是要補這個缺口。
做法是:使用者簽名時,把一條結果規則和交易一起簽下;交易中的實際操作執行完後,由唯讀邏輯比對執行前後的值,規則不成立就回滾這些操作。規則可涵蓋餘額、儲存、合約程式碼、新部署的合約與事件,基金會舉的例子包括兌換的最低收到數量、支出上限、禁止新增代幣授權,以及保持帳戶的控制邏輯不被改動。
這是研究階段的構想,不是已上線功能。文章明說設計仍在進行,也沒有宣布任何上線時間。
為什麼需要:前端被駭與「看到了還是簽下去」
基金會把簽名出錯分成兩類。第一類是「意圖不符」:使用者核准的內容和自己以為的不同,文章舉 Bybit 事件(Safe 合約實作被替換)與 BadgerDAO 攻擊(被加上未授權的代幣花費權限)為例,兩者都涉及前端遭入侵。第二類是「結果不符」:使用者簽的就是畫面顯示的內容,但結果違背自己的目標。
第二類的例子是今年 3 月 12 日的 Aave/CoW Swap 事件。依 The Block 3 月 15 日報導,一名使用者在 Aave 介面中、由 CoW Swap 驅動的兌換工具裡,把約 5,040 萬美元的 aEthUSDT 換成只值約 3.6 萬美元的 aEthAAVE;介面曾顯示 99.9% 價格衝擊警告,並要求勾選接受可能損失全部價值。Aave 事後推出預設阻擋價格衝擊超過 25% 的 Aave Shield,CoW Swap 則在事後檢討中指出寫死的 1,200 萬 gas 上限擋掉了較好的報價等多項失誤。
基金會認為既有防線各有缺口:清楚簽名(Clear Signing)仰賴解碼正確,也仰賴使用者自己看出不對;交易模擬會因鏈上狀態在打包前改變而過期,且簽出的交易可能和模擬的不同,文章以 Radiant Capital 案中惡意程式在簽名當下替換內容為例;Uniswap 的最低收到數量、Safe 的執行後檢查等合約層保護,則必須事先知道要檢查哪些狀態,看不到全部淨變化。
技術上怎麼做:EIP-7906 在框架交易尾端加一道唯讀檢查
基金會提到的一種具體方案是 EIP-7906「透過狀態差異操作碼的交易斷言」。EIPs 網站顯示它是 2025 年 2 月建立的 Draft(草案),作者包括 Yoav Weiss、Alex Forshtat 等人,並依賴 EIP-8141。EIP-8141 定義新的「框架交易」(交易類型 0x06),把一筆交易拆成多個框架,分別負責驗證、決定由誰付 gas 與執行操作,作者包括 Vitalik Buterin 等人,定位是實現原生帳戶抽象。
EIP-7906 在框架交易最後加上唯讀的斷言框架(規格稱 ASSERT 模式,基金會文章稱 POST_TX frame)。依 EIP-7906 現行草案,它新增兩個只能在此框架內使用的操作碼:TXTRACE(0xb6)依參數逐欄讀取這筆交易的淨狀態差異,包括餘額、儲存槽、合約程式碼雜湊與 nonce 的「執行前/執行後」值,以及發出的事件、gas 預扣額與付款方;EVENTDATACOPY(0xb7)把事件的非索引資料複製到記憶體。基金會文章的描述略有不同,列出 TXTRACE、TXDIFF、EVENTDATACOPY 三個操作碼,其中 TXDIFF 負責查詢指定地址或儲存槽的起始與最終值;但現行規格沒有 TXDIFF,這項功能由 TXTRACE 的參數承擔。操作碼的數量與名稱仍可能隨草案修訂改變。基金會文章也說,同一個儲存槽即使被寫入五次,也只會以一筆「起始值與最終值」呈現。
斷言失敗時,整個執行部分回滾到設定付款方的驗證框架之後的狀態,驗證階段的變更保留,被回滾操作發出的事件也會丟棄;交易仍會被打包、以失敗狀態記錄,付款方要付到失敗為止已用掉的 gas。基金會與規格都解釋,這是為了避免攻擊者逼區塊建構者免費執行注定失敗的交易。
進度與限制:只是「考慮納入」,不是強制
時程上要分開看。依以太坊研究者 Christine Kim 8 月 28 日的 ACDE #244 會議紀錄,核心開發者已把 EIP-8141 框架交易「排定納入」(SFI)Glamsterdam 之後的下一次升級 Hegotá;基金會文章則說 EIP-7906 在 Hegotá 規劃中屬「考慮納入」(CFI),尚未確定。Hegotá 沒有官方主網日期;連 Glamsterdam 本身也還沒有:基金會 10 月 22 日公告,原訂 10 月 26 日的 Hoodi 測試網升級已延期、新日期未定,且該公告並未設定 Glamsterdam 主網日期(10 月 16 日公告的 Hoodi 時程已被取代)。
基金會文章也列出限制:EIP-7906 不強制使用斷言,交易建構者可以不加;要發揮作用,錢包得在自家交易中加入必要斷言,協議則要檢查呼叫是否來自帶有指定斷言的框架交易。已部署的不可升級合約無法加上這種檢查;呼叫方與整合方都要支援框架交易;保證只在單一鏈的單筆交易內成立,不涵蓋跨鏈路徑。EVM 該揭露狀態變化還是事件、操作碼可在哪些交易類型或階段使用等設計選擇,也仍未定案。
文章特別強調「規則的來源和檢查本身一樣重要」:規則必須來自使用者獨立核准的意圖、帳戶的常設政策,或被駭元件改不了的協議邏輯。基金會把斷言定位為 5 月推出的清楚簽名標準(ERC-7730 等)的互補,而不是取代:清楚簽名說明 calldata 要做什麼,斷言則在執行後強制檢查結果。
AI 觀點分析與推論
AI 觀點:真正的價值在 AI 代理與錢包政策,不在單次兌換
我傾向認為,交易斷言最重要的應用不是保護一般人的單筆兌換,而是替「代你簽名的程式」設上限。基金會文章列出的用途之一就是代理委託:對每個代理動作的結果設限制。當錢包讓 AI 代理或自動化策略代為操作時,使用者很難逐筆看懂 calldata,但可以事先寫下「這個帳戶每筆淨流出不超過多少、不能新增授權、帳戶邏輯不能被換」這類常設政策。若這些政策由錢包或帳戶合約保存、而不是由每次互動的前端產生,前端或代理被入侵時,單筆損失就有可計算的上限;至於多筆累計的損失,單筆上限本身擋不住,還需要另設跨交易的額度政策。
反過來說,若規則仍由同一個網頁介面即時產生,斷言對 Bybit 類的前端攻擊幾乎沒有幫助:攻擊者換掉交易內容時,也能一併換掉規則。這正是基金會強調規則來源的原因。對 Aave/CoW 這類「警告已顯示、使用者仍確認」的案例,斷言也未必能救:如果使用者在同一個畫面上確認了極低的最低收到數量,鏈上檢查只會忠實執行這個錯誤規則。我認為真正有用的組合,是錢包端的常設政策加上像 Aave Shield 那種預設擋下極端價格衝擊的設定。
受益者主要是錢包、帳戶抽象服務商與做代理交易的團隊;受影響的是不可升級的舊協議與不支援框架交易的整合方,它們短期內得不到這層保護。會讓我改變判斷的訊號有三個:EIP-7906 是否在 Hegotá 從 CFI 升為 SFI;主流錢包是否承諾把斷言做成預設帳戶政策,而不只是進階選項;以及 Hegotá 的實際時程。若 EIP-7906 最終沒有進入 Hegotá,斷言就只能停留在各錢包、各協議自行實作的合約層檢查,覆蓋面會小很多。
對讀者的影響與下一步觀察
對一般 ETH 使用者,現在不需要做任何事,交易斷言也還沒有可用的錢包功能。短期內真正可用的防線仍是:使用支援清楚簽名的錢包、重視價格衝擊與授權警告、簽名前核對要授權的合約與額度。對開發者,基金會建議關注 EIP-7906 在 Ethereum Magicians 的討論與 Hegotá 的範圍決定;同時留意 Glamsterdam 的進度:基金會 10 月 22 日公告說,Hoodi 升級延期是為了進一步調查 EIP-8037 與主網智慧合約的互動,調查仍在進行中,結果與新日期都尚未公布。
後續可觀察的是:Hegotá 範圍會議對 EIP-7906 的決定、EIP-8141 的客戶端實作與測試網進度,以及錢包團隊是否公布以框架交易為基礎的帳戶政策設計。本文依以太坊基金會文章、EIP 規格與會議紀錄整理,提案內容在定案前仍可能改變。




