交易實戰
鏈上兌換被三明治夾了?看懂路由、MEV 與送出前的防護設定
兌換成交價總是貼著最低收到,區塊裡有人在你前後買賣?本文依以太坊官方文件說明三明治攻擊如何運作、路由與滑點為何影響被夾機率,以及送出前的設定與成交後的核對方法。
在鏈上兌換頁按下確認後,成交結果比報價差了一截,區塊瀏覽器上還看到同一個區塊裡,有地址在你前一筆買入、後一筆賣出——這多半就是所謂的「三明治攻擊」,屬於 MEV(最大可提取價值)的一種。本文說明兌換交易從送出到上鏈經過哪些環節、路由為什麼會影響你被夾的機率,以及送出前能做的幾項設定和成交後的核對方法。
適用讀者與前置條件
適合已經會在去中心化交易所(DEX)或錢包內建兌換功能換幣,想知道「為什麼成交價總是貼著最低收到」的讀者。
開始前請準備:
- 一個自託管錢包和少量支付網路手續費的原生代幣;
- 看得懂兌換確認頁的「最低收到」與「滑點容忍度」——還不熟可以先讀滑點容忍度與最低收到的算法;
- 會用區塊瀏覽器以交易雜湊查交易,不熟的話先看用 TxID 查轉帳進度。
MEV 是什麼:交易送出後、上鏈前的空檔
在以太坊這類公開鏈上,你簽好的交易通常先進入公開的交易池(mempool),等待被打包進區塊。打包的一方可以決定同一區塊裡交易的先後順序。所謂 MEV,指的就是透過加入、排除或重新排序區塊內交易,能額外拿到的價值。
對一般使用者來說,最直接相關的是三明治交易。以太坊官方開發者文件這樣描述它:

整理成三步:
- 搜尋者(searcher)在交易池裡看到一筆會明顯推動價格的大額兌換;
- 在這筆交易之前插入自己的買單,先把價格推高;
- 讓你的交易以較差的價格成交,緊接著在之後賣出,賺走中間的價差。
來源:ethereum.org — Maximal extractable value (MEV)。
為什麼滑點容忍度決定了你最多被夾多少
攻擊者能把價格推多高,受你設定的「最低收到」限制:如果他推得太多,你的交易成交數量會低於最低收到而失敗,他自己的前置買單就白做了。所以,你設定的滑點容忍度,等於公開告訴對方你最多能接受被拿走多少。
這也解釋了兩個常見現象:
- 滑點設得很高(例如 5% 以上)時,成交結果常常剛好落在最低收到附近;
- 交易量相對池子越大,價格影響越明顯,越容易成為目標;小額兌換的可得利潤通常不足以抵過攻擊者自己的手續費。
路由會怎樣影響被夾的機率
兌換頁上的「路由(Route)」顯示你的幣會經過哪些池子換過去,例如直接 A→B,或 A→ETH→B,甚至拆成幾條路同時成交。聚合器會為了更好的報價自動選路。
和 MEV 有關的觀察點:
| 你在確認頁看到的 | 代表什麼 | 怎麼處理 |
|---|---|---|
| 路由經過流動性很小的池子 | 這一段價格影響大,容易被推價 | 改用流動性較深的交易對,或把金額拆小 |
| 價格影響明顯高於滑點設定的一半 | 你的單子本身就在推動價格 | 先降低金額,不要用調高滑點解決 |
| 跳數很多、繞了好幾個池子 | 每一段都要付池子手續費,也多一段暴露 | 比較一條直接路由的報價再決定 |
路由本身不是攻擊,問題在於:經過的池子越淺、你的交易越大,可被拿走的價差就越多。
送出前的四項設定
照這個順序檢查:
- 看價格影響:確認頁的價格影響如果已經很高,先把金額拆成幾筆小額,或換到流動性更深的交易對。
- 把滑點容忍度設低:主流幣對先用介面預設值,不要一失敗就往上加。多次失敗時先檢查是不是價格影響過大或代幣本身有轉帳稅,再決定是否調整。
- 縮短交易有效期限(Deadline):部分兌換介面可以設定交易在多少分鐘內未成交就作廢,避免低手續費交易在池裡久候,最後以過時價格成交。
- 考慮改用私有交易通道:有些服務把交易送到不公開的交易池,再直接交給區塊建構者,公開交易池裡的機器人看不到你的單子。
以 Flashbots Protect 為例,它的官方說明寫明:交易送到私有交易池,不會被搶跑與三明治機器人看到;交易只有在不會執行失敗時才會被打包,因此失敗交易不收手續費。

來源:Flashbots Docs — MEV Protection Overview(頁面標示更新日期 2025-11-17)。這類服務目前主要支援以太坊主網,用法是在錢包的自訂網路裡改用它提供的 RPC 位址。改 RPC 等於讓你的交易先經過第三方,請自行讀過該服務的隱私說明再決定;它也不能讓價格影響變小,只是讓交易不在公開池裡曝光。
成交後怎麼確認自己有沒有被夾
- 在錢包活動紀錄裡找到這筆兌換,打開區塊瀏覽器的交易頁。
- 記下交易所在的區塊號與「區塊內位置」(Position / Index)。
- 打開該區塊的交易清單,看你前一筆和後一筆交易:如果是同一個地址、在同一個池子,先買入你要買的代幣、再在你之後賣出,就符合三明治的樣子。
- 對照你收到的數量與確認頁的「最低收到」:被夾的交易通常落在最低收到附近,而不是預估收到附近。
確認被夾後,鏈上交易已經不可撤銷,沒有申訴管道能把差價拿回來;能做的是調整下一次的金額、滑點與送出通道。如果交易一直卡著沒上鏈,可以參考Gas 與網路手續費怎麼算判斷是不是手續費出價太低。
常見問題
Q:小額兌換也需要擔心 MEV 嗎? 通常風險較低,因為攻擊者也要付兩筆交易的手續費,價差太小不划算。但在流動性很淺的池子裡,即使金額不大,價格影響也可能很高。
Q:滑點設 0 不就安全了? 在大多數池子裡,價格在你送出到成交之間本來就會小幅變動,設 0 容易讓交易失敗並白付手續費。合理做法是保持低滑點,同時控制單筆金額。
Q:在其他鏈上也會遇到嗎? 任何讓排序者能看到待處理交易並決定順序的鏈,都可能出現類似行為;各鏈的交易池設計不同,具體程度要看該鏈與所用介面的說明,本文的私有通道例子只針對以太坊主網。
