僅供教育參考,不構成安全或投資建議。滑點控制與私有路由可降低夾擊風險,但不能保證成交品質、納入區塊、最終性或追回損失。
直接答案
夾擊攻擊是一種有害的最大可提取價值行為:攻擊者在使用者兌換前緊接著放入一筆交易,並在其後再放入一筆。第一筆交易把資金池價格推向不利於使用者的方向,使用者以較差匯率成交,最後一筆交易則按部分由使用者訂單造成的價格平掉攻擊者部位。
攻擊成立需要攻擊者提前看到使用者意圖或擁有排序優勢,訂單須產生足夠價格影響,而且使用者的執行限制仍允許兌換成功。它最常見於自動做市商兌換,但更廣泛的風險是:任何可預測的狀態變化,只要排序能讓他人提取價值,就可能受影響。
運作原理
使用者簽署並廣播兌換。若詳細資訊在納入區塊前進入公開交易池或其他可觀察訂單流,搜尋者便可解碼資產、數量、路徑、最低輸出和截止時間,並模擬不同交易順序。
對於 AMM 資金池中的買入,搜尋者先行買入。該搶跑交易改變儲備並提高使用者的成交價格。只要結果仍符合使用者的最低輸出條件,使用者隨後會獲得少於交易前報價的輸出代幣。搜尋者再在使用者之後賣出,透過尾隨交易捕獲部分價格變動。
總回款不等於利潤。攻擊者還須支付兩次兌換費、Gas 或構建者費用,並承擔失敗嘗試和庫存風險。競爭、其他交易、使用者兌換回滾或區塊順序變化都可能使整組交易虧損;夾擊並非天然原子化,也不保證成功。
滑點保護限制的是可接受的最差輸出,並不阻止排序。容忍度過寬會給不利成交留下更多空間,過緊則可能在波動中讓正常兌換回滾。應用程式和整合合約應執行基於目前報價、經使用者認可的最低輸出和適當截止時間,不能使用零值或陳舊的硬編碼值。
私有提交、受保護訂單流、批次拍賣、基於意圖的執行和拆單在某些系統中可降低暴露。保護效果取決於哪些中間方能看到訂單、構建者覆蓋、回退行為、流動性、費用和實作方式;「私有」或「MEV 保護」標籤並非通用保證。
範例
使用者提交一筆可見兌換,準備從 AMM 資金池用代幣 A 買入代幣 B。搜尋者模擬後發現,訂單足以推動資金池價格,而使用者設定的最低輸出也容許價格向不利方向變動後繼續成交。
搜尋者先買入代幣 B,使用者隨後以惡化後的匯率買入,搜尋者緊接著賣出代幣 B。使用者仍收到不低於簽名時設定的最低數量,卻少於之前的報價;搜尋者只能保留扣除兌換費、排序費用和執行成本後的餘額。
風險
使用者受到的直接損害是成交較差、實際滑點較高。在會對失敗執行收費的鏈和交易設計中,兌換回滾後還可能消耗 Gas。流動性薄弱、可見大單、寬鬆限制、市場波動和可預測路徑會增加暴露,但不存在一個能證明攻擊必然發生的單一門檻。
緩解措施也有取捨。拆成小單可能增加總費用或洩露重複策略;嚴格限制會增加回滾;私有路由帶來信任、審查、日誌和回退問題;受保護介面也可能只涵蓋部分鏈或路徑。應核驗簽名中的最低輸出、截止時間、路徑、端點政策、收據和所需最終性,而不能只相信保護標識。
常見誤解
- 每次不利價格變動都是夾擊攻擊。 正常價格影響、市場波動、路由變化和套利也會使成交偏離報價;判斷夾擊需要交易排序證據。
- 攻擊者只是從錢包裡偷走代幣。 典型夾擊是在使用者授權兌換前後改變資金池狀態,並不要求攻擊者的交易直接從使用者錢包轉出資產。
- 設定任意滑點容忍度就能阻止攻擊。 最低輸出只能限制可接受的惡化程度,搜尋者仍可能最佳化夾擊,使兌換貼近該邊界成功。
- 私有提交會消除 MEV。 它可對公開池隱藏訂單,但 RPC 營運者、中繼、構建者、求解器或公開回退仍可能觀察或影響訂單。
- 成功收據證明成交公平。 成功只證明合約條件通過,不證明使用者獲得了最佳可用價格或避開了有害排序。
相關主題
來源
- Maximal extractable value (MEV) - Ethereum.org (accessed: 2026-08-21)
- What is a sandwich attack? - Uniswap Labs (accessed: 2026-08-21)
- SCWE-090: Missing Slippage Protection in Automated Token Swaps - OWASP Smart Contract Security (accessed: 2026-08-21)