以太坊(ETH)出現一項在交易執行後檢查結果的提案,但若檢查標準過於寬鬆,非預期結果仍可能通過。EIP-7906若要成為實際的安全防護,錢包與協議必須強制執行檢查,並防止交易建構者降低標準。
以太坊基金會於10月5日公布「交易斷言」(transaction assertion)研究,探討在交易執行後檢查餘額、儲存空間變化與事件。候選實作方案EIP-7906提出一種唯讀的POST_TX框架,在交易結束後執行。目前仍處於草案階段,是否納入Hegotá升級尚未確定。
交易簽名包含使用者核准的請求,但不會固定執行結果。若執行前的程式碼或區塊鏈狀態改變,實際結果可能與預期不同。以太坊基金會以交易排序造成兌換價格變動的三明治攻擊,作為結果不一致的例子。
EIP-7906設計TXTRACE列出交易的淨變化與事件,並透過TXDIFF確認特定地址及儲存空間的初始值與最終值。事件資料則使用EVENTDATACOPY讀取。即使儲存空間多次變動,系統也只保留最初與最後的值,不會記錄所有中間變化。
具備檢查功能,不代表所有交易都會自動受到保護。提案不強制每筆交易加入斷言,必要的檢查必須由錢包納入交易。若要在協議層級提供保護,就必須要求受保護功能執行指定的POST_TX檢查,並拒絕缺少檢查或加入其他檢查的交易。
以太坊基金會在研究說明中指出,若建立交易的前端遭到入侵,攻擊者可能加入寬鬆到足以放行攻擊的規則。現有兌換交易的最低收款數量設定,也呈現類似限制。Uniswap開發者文件警告,將最低收款數量設為0的範例在實際服務中有風險;文件也說明,設定較安全的數值時,可使用SDK或價格預言機等外部資料來源。即使設有條件,若門檻過低,略高於門檻的結果仍可能獲准。
檢查失敗時,已使用的交易成本不會退還。EIP-7906草案指出,POST_TX檢查失敗時,執行主體會回滾,但交易仍以失敗狀態留在區塊中,使用的Gas費用也必須支付。在驗證階段確定的變化則會保留。
以太坊基金會表示,應將希望受到保護的操作放在可回滾的執行主體中,並避免在驗證階段執行不受信任的操作。若檢查所需的Gas不足,斷言也會判定失敗。要保護交易結果,除了檢查邏輯,也必須考量失敗時哪些操作可以回滾。
檢查所參照的價格預言機或登錄表狀態,也可能在交易執行期間改變。提案文件提出,可在簽署時固定數值,或參照交易開始時的狀態;但同一區塊中、交易開始前價格變動的風險仍然存在。
EIP-7906以定義框架交易的EIP-8141為基礎。以太坊基金會公布的狀態顯示,EIP-8141列為預計納入Hegotá的提案,EIP-7906則仍在審查階段。實際上錢包與協議將採用哪些部分,目前也尚未確定。
先前曾介紹以太坊基金會探索在交易執行後確認狀態變化的方案。這次草案的細節顯示,僅有確認交易結果的功能並不足以完成防護;關鍵在於由誰設定使用者核准的標準,以及如何防止交易建構者削弱這些標準。
留言 0