WATS Wallet logoWATS Wallet
技术6 分钟阅读

什么是滑点?为什么你的兑换以另一个价格成交

你看到的是一个价格,拿到的却是另一个。滑点就是报价与成交之间的差距——本文讲解它究竟从何而来、滑点容忍度设置真正控制什么、它与价格影响和手续费有何不同、何时会变得危险,以及让你的兑换保持诚实的设置方法。

滑点是兑换被报价的价格与它实际成交的价格之间的差额。它之所以出现,是因为自动做市商是根据其池中的代币余额来定价的,而这些余额可能在你拿到报价的那一刻与你的交易被打包进区块的那一刻之间发生变化——别人的交易先落块,把池子推动了。滑点不同于价格影响——后者是你自己订单的规模对池子深度造成的价格移动;也不同于手续费——手续费在交易前就已知晓。滑点容忍度设置是护栏而非预测:它要求兑换合约在你将收到的数量低于设定的最少收到时直接回滚。没有任何钱包能取消滑点,但在 WATS 中,兑换是在一个完全非托管的钱包内签名的——钥匙由你持有,WATS 从不持有任何钥匙——并且报价、容忍度和最少收到数量都会在签名前展示。

你看到的价格 vs 你拿到的价格

每个做兑换的人迟早都会遇到:报价显示一个汇率,确认页却是另一个。这个差距就是滑点(slippage)——报价价格与交易实际成交价格之间的差异。它不是骗局,通常也不是 bug,而是链上市场运作方式的结构性属性。但若放任不管,它会悄悄对你的每笔交易抽税——最坏的情况下,它是攻击者走进来的那扇门。

滑点从何而来

大多数链上兑换是对着自动做市商(AMM)进行的——价格由代币余额函数决定的流动性池。由此产生两个后果。第一,你自己的交易会推动价格:从池中买入让该资产在池中更稀缺,你的订单成交过程中边际价格不断上升——交易相对池子越大,平均成交价越差。第二,别人也在交易:从你拿到报价到交易进入区块之间,其他兑换可能已经移动了池子。报价时价格与执行时价格,只是在一个移动市场上的两个不同时刻测得的,而两者之间的等待并非瞬间完成:在 EVM 链上,你的交易会停留在公开的 mempool 里,直到区块构建者把它打包;在那些把交易直接送给下一个出块者的链上,等待同样存在,只是没那么显眼。

滑点容忍度:这个设置究竟做什么

兑换界面里的滑点设置是护栏,不是预测。设为 0.5% 是在告诉合约:只有当我至少收到报价输出的 99.5% 时才执行——否则回滚。回滚是一个功能。失败的兑换让你损失一笔网络费但保住代币;比报价低 12% 成交的兑换则让你损失真金白银且无处申诉。签名前真正该读的数字是最少收到(minimum received)——你正在同意的最坏情况,用代币而非百分比表示。多数路由器还会给它配上一个截止时间(deadline):过了这个时间戳兑换就不能再执行,这样一笔卡了一小时的交易,就不会突然对着一个早已把你甩在身后的市场成交。

滑点 vs 价格影响 vs 手续费

三样不同的东西在减少你的所得,而界面经常把它们混成一个数字。手续费——池子的抽成和网络费——事先已知。价格影响是你自己交易规模对池子深度造成的价格移动;即使市场完全平静、没有别人在交易,它也依然存在。滑点是报价与执行之间由其他所有人造成的移动。手续费你接受,价格影响你通过缩小交易或走更深的池子路由来降低,滑点你用容忍度来封顶。诊断出是哪一个伤了你,就知道该拉哪根杠杆:调高容忍度对价格影响毫无作用,拆分交易对一个飞速变动的市场同样毫无作用。

滑点何时变得危险

两种情形值得敬畏。稀薄流动性——小池子、新代币、冷门交易对——温和的交易也会造成两位数的价格影响,慷慨的容忍度会悄悄授权一次糟糕透顶的成交。以及敌意流量:在拥有公开 mempool 的链上,待确认交易在确认前对任何人都可见,因此高滑点容忍度等于邀请三明治机器人抢在你前面买入、让你的订单把价格推高、再回头卖出——吃掉的几乎正好是你允许出去的那部分。经验法则:容忍度不是便利设置,而是你预先批准的损失规模。

行之有效的实用设置

深度好、稳定的交易对,把容忍度收紧——百分之零点几——让偶尔的回滚保护你。波动大或流动性薄的代币,有意识地小步上调,清楚自己在让渡什么。把异常大的交易拆分,让每一份的影响更小;即使表面报价看起来略差一点,也优先选择经过更深流动性的路由。并且把签名前读最少收到变成条件反射——它是屏幕上信息量最大的一个数字。钱包内兑换的更完整机制见如何安全地跨链兑换代币,多链版本见跨链兑换与桥接

WATS 在其中的位置

滑点是市场的属性,任何钱包都无法取消它;钱包能决定的,只是签名之前护栏是否摆在你面前。WATS 把兑换留在一个完全非托管的钱包内——钥匙由你持有,WATS 从不持有任何钥匙——并在签名前展示报价、滑点容忍度和最少收到数量,覆盖 Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 和 TON。它还消除了那种把人逼到草率重试的失败模式:每个操作——转账、兑换、质押——都用同一种代币 ATS 计费,而不是各条链的原生 gas 代币,在 EVM 上通过 ERC-4337 paymaster,在 Solana 和 TON 上通过等效的代付者,因此兑换绝不会因为你恰好在交易的那条网络上缺 gas 而卡住。这不是折扣:ATS 费用跟随实时网络成本,它改变的是由哪种代币来付,而不是这笔交易花多少钱。ATS 是 LayerZero OFT,因此在三个生态里是同一个余额;收取的 ATS 会从 1 亿供应量向 3000 万下限销毁——WATS 是第一个也是唯一一个把 ERC-4337 与 OFT 单代币手续费和这一销毁机制结合起来的钱包,详见 ATS 费用页面。如果你希望本文这套纪律成为默认设置,而不是每次都得自己记住——容忍度有意识地设定、每次签名前都读最少收到、不必在交易途中手忙脚乱地找 gas 代币——那么在 WATS 里执行兑换就是把它落到实处的具体办法。

常见问题

多少滑点设置算合适?

对深度好、流动性强的交易对,百分之零点几的紧容忍度通常是对的——偶尔的回滚正是保护在起作用。波动大或成交稀少的代币可能需要更高,但要有意识地上调:你的容忍度就是你预先批准的最坏损失,而高设置也扩大了三明治机器人能榨取的空间。签名前务必核对最少收到数量,因为那是用代币而非百分比表述的最坏情况。

滑点是一种手续费吗?

不是。手续费——池子抽成和网络费——在交易前已知。滑点是你的报价与执行之间、由先落块的其他交易造成的价格移动;价格影响则是你自己交易规模对池子深度造成的移动。它们通过不同机制减少你的所得,各有各的对策:接受手续费,用更小的交易或更深的池子降低影响,用容忍度封顶滑点。

为什么我的兑换因滑点错误而失败?

因为执行时池子已无法交付至少你的最少收到数量,合约选择回滚而不是以更差的价格成交——护栏尽了职责。这通常意味着市场变动很快,或池子太薄。你可以重试、小步略微上调容忍度,或拆分交易;在流动性薄的代币上反复失败,应当作对其流动性的警告,而不是硬闯的障碍。

我用哪个钱包会影响我付出的滑点吗?

没有任何钱包能消除滑点——它来自池子,而不是应用——但 WATS 把控制项摆在签名之前:报价、滑点容忍度和最少收到数量都在你签名前展示,而且钱包完全非托管,钥匙由你持有,WATS 从不持有任何钥匙。WATS 还用单一代币 ATS 收取网络费,在 EVM 上通过 ERC-4337 paymaster,在 Solana 和 TON 上通过等效的代付者,因此在 Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain、Solana 或 TON 上的兑换不会因为你缺少那条链的原生 gas 代币而卡住。这在实践中很重要,因为交易途中手忙脚乱地找 gas,恰恰就是人们草率调高容忍度的时刻。