交易被三明治夹了?滑点设置与防夹通道讲解 图 1
交易被三明治夹了?滑点设置与防夹通道讲解 · 图 1

你的交易被”三明治”之前发生了什么

在交易拥堵时你常常有这种感觉:滑点明明设了百分之一,成交回来却吃了三个点的损失。如果交易记录里的价格曲线在”成交前拉升、成交后回落”,你大概率被三明治了。它的前提是多数 EVM 链的公共内存池是透明的:你广播的那笔买单,在打包之前对所有人可见,包括专门扫描内存池的套利程序。一个完整的三明治有三拍:攻击者抢在你前面买入,把池子里的价格抬上去;你的买单以被抬高后的价格成交,成为他抬价的”接盘方”;他随即卖出退出,价格回到原点,中间的差价是他的利润。整个过程不需要访问你的账户,也不需要任何授权——它利用的只是”订单公开排队”这个规则本身。

交易被三明治夹了?滑点设置与防夹通道讲解 图 2
交易被三明治夹了?滑点设置与防夹通道讲解 · 图 2

滑点:保护你的那个数字怎么调

滑点(价格影响容忍度)是你的成交护栏:设 1%,意味着”如果执行价格比报价差超过百分之一,我宁可让这笔交易失败”。它是对抗三明治的第一道闸:容忍度越高,攻击者可插队的价差空间越大;越低,三明治越难吃到你,但普通价格波动也可能让你交易失败、白付一次 Gas。取值的逻辑跟着流动性走:深度充足的主流交易对,日常波动被大池子吸收,低滑点也能高成交;小交易对池子浅,你的单子本身就冲击价格,这时被迫放大滑点的同时,更该做的是把一笔大单拆成几笔错时执行。记住一个方向性的结论:滑点不是越宽松越好,也不是成交失败等于被针对,先查池子深度再调参数。

藏单与通道:让订单不排队

第二道闸是不进公共队列。以 Flashbots Protect 为代表的私有提交通道与各类”防夹”RPC,把你的交易绕开公开内存池直接递给出块方,攻击者看不见就无法夹。不少交易聚合器与钱包的”高级设置”已内置这类通道或自动保护选项,使用前在产品的官方文档确认它实际走的是哪条路径即可。此外,选择流动性更好的交易对与更活跃的时段,本身就是最朴素的防夹策略——可夹的价差越小,三明治的经济动力越弱。

事后核验与风险提示

事后判断很简单:在区块浏览器打开你这笔交易的输入与输出数量,对比发起时的报价,再看价格曲线是否走了”拱形”。如果你的交易确实被夹了,值得记住的一点是它不意味着你的密钥或授权出了问题——攻击完全发生在公开市场层面,属于可优化的执行成本,而不是需要换钱包的安全事件。此时该做的三件事依次是:降低该交易对的滑点设置、改用私有提交或防夹通道、把大额单子拆成多笔错时执行;等到你发现同一交易对反复吃亏时,多半是你的金额相对池子深度已经过大,拆单的优先级高于任何参数调整。

常见疑问

问:被夹了要换钱包或撤销授权吗? 答:不需要。三明治攻击不接触你的账户,只从你的执行价格里抽水,改的是执行策略而不是密钥。

问:Gas 拉高能不能防夹? 答:在按费排序的链上提高优先费可以让你的单更靠前排进区块,压缩攻击者的插队空间,但这会抬高成本,收益不稳定,不是通用方案。

风险提示

本文是链上交易机制科普,不构成投资建议,也不构成收益承诺;各链的内存池与排序器机制存在差异,请以目标链的官方文档为准。