所有文章
指南

Solana 滑点设置:这个数字怎么定

滑点设置由池子深度和下单大小决定。按场景和按路径的具体数字、200 个钱包共用一个上限的做法,以及兑换一直失败时怎么查。

8 分钟阅读 J Tools Editorial
一张编辑插画:Solana 兑换里的价格容忍度,用来配合这篇讲滑点设置的指南

滑点设置调得太紧,兑换会在链上失败:网络费照付,代币一个也没到。

调得太松,盯着池子的机器人会把这段余量拿走。Jupiter 的「Auto」只是按最近的波动猜一个数,它不知道你的单子有多大,也不知道这个池子上趴着多少机器人。真正决定数字的是三件事:你的单子相对池子有多大、这个代币最近波动多厉害、这个池子上的机器人压力有多重。像 Solana 多钱包批量兑换工具这种一个上限套到几百个钱包的场景,第三件最要命。

滑点设置到底是什么

滑点是你允许价格浮动多少、超过就自动取消这笔兑换。收紧就是价格条件更严,放宽就是更容易成交,代价是可能成交在更差的价位。

容易混的是价格冲击。价格冲击是你自己这一单对池子的影响,签名之前界面上就写着。滑点是另一半:报价到成交之间,你控制不了的所有东西留出的余量。所以滑点设置的算法是「价格冲击加一点余量」。余量在很深的 SOL/USDC 上是 0.1% 到 0.2%,在刚出生的模因币上是 2% 到 5%。

判定发生在链上,不在钱包界面里。Solana 官方文档对交易的说明写得很清楚:一笔交易要么整笔成功,要么整笔回滚,而网络费两种情况都照收。

设太紧会失败,设太松会被夹

给一个走得很快的代币设 0.1%。报价到执行之间的半秒里价格挪了 0.12%,下限被击穿,兑换取消。你付了一点网络费,代币没到。真正贵的不是这点费用,是错过的那段行情。

反过来一样贵。开到 5% 再发一笔 50 SOL 的 USDC 买单,盯池子的机器人会抢在你前面买进,把价格推上去,让你在高位成交,然后立刻卖掉。价格没越过你自己写的上限,所以链上记录是成功的。

三明治机器人专挑上限开得大的大单。在 SOL/USDC 这种深池上用 5% 发大单,等于告诉它们钱在这里。50% 更是任何场景下都不对:那是「多少钱我都要」的信号,滑点设置写到这个数就是投降。

池子深度决定这个数字

流动性深度示意图:左边宽漏斗里的琥珀色液体顺畅流过,右边窄漏斗溢了出来,对比深池和浅池

别先问「我能接受亏多少」,先问「我这一单会把这个池子的价格推多少」。单子占池子资金的 1%,价格冲击很小,上限也可以收紧;占 10%,光是自动定价曲线就会把价格推上去,上限盖不住这一块就会失败。读懂深度,是滑点设置的起点。

界面上价格冲击和容忍度是分开两行的。大单之前,用 Solana 持币快照工具看筹码分布,用流动性添加与移除工具读现在的池子厚度。深度本身怎么读,写在流动性池的深度与风险里。

按场景看滑点设置

下面是操作层面的经验值,不是协议规则。界面上的价格冲击要一起看。

场景建议值原因
稳定币之间(USDC 与 USDT)0.1% 到 0.3%池子非常深,几乎没有波动
SOL/USDC 的中小单0.5% 到 1%池子深,但三明治压力是真的
SOL 与中型代币(例如 JTO)1% 到 2%流动性还行,价格会动
SOL 与老牌模因币(BONK、WIF)2% 到 5%波动大,深度中等
SOL 与刚从 Pump.fun 毕业的模因币5% 到 15%池子很浅,每分钟都在大幅摆动

同一天的两笔单子。第一笔是 200 美元的 USDC 换 USDT,池子又大又稳,滑点设置写 1% 顺利成交,实际价差只有 0.05% 左右。

第二笔是浅池里的新模因币,同样写 1%。报价到兑换之间价格走了 5%,下限被击穿,单子取消。同一个数字,两个结果;这一笔要 10% 才进得去。单钱包进场用Solana 兑换工具,滑点那一栏摆在明面上,手填就行,不必交给 Auto。

按路径看滑点设置

同一个代币,单子在哪成交,需要的数字就不一样,因为定价的机制不同。

路径价格怎么定起步值5 SOL 买单的冲击
Raydium 等 AMM 池两边储备的比例(x 乘 y 等于 k)深池 0.5% 到 1%,浅池 3% 到 8%SOL 一侧约 500 SOL 时约 1%,约 60 SOL 时约 8%
Jupiter 路由把单子拆到几个池子多数中等单子 0.3% 到 1%拆到三个池子,合计冲击能降到 0.5% 左右
Pump.fun 联合曲线每笔买入把下一笔价格顶高5% 到 15%新曲线上 5 SOL 大约推 8% 到 12%

用 5 SOL 买同一个代币走一遍:走很深的 Raydium 池,成交价贴着报价,1% 很舒服;走 Jupiter 会被拆单,报出来的冲击更小,0.5% 也能成。三家怎么选,写在Jupiter、Raydium 与 Orca 的对比里。

不过路由可能在最后一刻改路径,报价就会偏,所以容忍度不能写成零,参数本身的定义在 Jupiter 的开发者文档里。还在联合曲线上的币,5 SOL 这一单自己就会把价格顶起来,同一个区块里排在你前面的买单,已经把曲线往上走过一段。毕业之后它就在普通池子里交易,这一段写在毕业之后在 PumpSwap 怎么交易里。

Auto 模式和「0.5% 万能」的说法

Jupiter 的 Auto 按最近的波动挑数字。深池和稳定币上挑得还算合理;刚迁移过来的模因币上,哪怕这一单真实的价格冲击只有 2%,它也经常跳到 5% 到 15%。开得越大,你在机器人眼里越值钱。Auto 不知道你的单子大小,也不知道这个池子上的机器人密度。

Discord 里传的「0.5% 万能」是同一类想当然。真正成立的只有一种情况:深池、有 MEV 保护的路径、大小中等的 SOL/USDC。模因币上 0.5% 会一直失败;10 万 USDC 的买单,光是这一单自己的价格冲击可能就超过 0.5%;多钱包批量执行时,后半程的钱包会失败一半。

下单前问自己三句:我要吃掉池子的多少、这个池子上的机器人压力有多大、我这轮要跑几个钱包。滑点设置就是这三句的答案。

多个钱包,一个上限

多钱包滑点示意图:一排钱包依次排开,前面几个是亮的,后面的越来越暗,下面是一条从左往右上扬的价格曲线

想象 200 个钱包同时打一个新币。Solana 多钱包批量兑换把同一个滑点设置套到这一轮的每个钱包上。坑在这里:第 1 个钱包和第 200 个钱包之间,池子已经走了。收紧到第 1 个钱包刚好成交,第 200 个就会失败;放宽到能救第 200 个,第 1 个钱包那边等着的机器人就有饭吃。

实操上两条路:按这一轮最后那个钱包定上限,接受前面的钱包多付一点;或者把这一轮拆成 2 到 3 批,每批按当时的池子重新定一次。要在同一个区块里买,打包交易工具把这些单子塞进一个 bundle,抢跑机器人能用的那段窗口就被压窄了。对面怎么动手,写在狙击机器人是怎么运作的里。

出现「slippage tolerance exceeded」怎么办

Phantom 弹这一句,意思是报价到落地之间价格越过了你的下限。这是护栏在起作用,不是 bug。常见原因三个。

  1. 池子浅、走得快。刚发的代币一个区块能走好几个百分点,稳定币那套上限跟不上。
  2. 报价过期。你在确认页上多想了几秒,池子已经走远了。刷新报价再签。
  3. SOL 不够付费。这是另一种失败,但钱包可能只给一个笼统的警告,最容易混。

修法不是「调到 50%」。按池子一档一档往上调,刷新报价;必须在一个区块里成交的单子,用原子执行把报价到成交的窗口压到最小。

滑点设置常见问题

滑点应该设 1% 还是 5%?

看池子,不看规矩。深度好、成交活跃的交易对,0.5% 到 1% 能成交,也挡得住坏价格。刚上线的浅池或者还在曲线上的币,1% 会一直失败,现实区间是 3% 到 5%。要 5% 以上才通得过,说明池子太浅,该缩单子而不是放上限。

Auto 滑点安全吗?

深池上的日常单子,它挑的值一般没问题。风险在波动大或者很浅的代币上:Auto 可能把上限开得比这一单真实的价格冲击大得多,你就成了好捏的三明治目标。买新币或者下大单,自己填。

多钱包批量执行怎么设滑点?

一个上限套所有钱包,但钱包是依次成交的,价格一路在走,最后一个钱包看到的价最差。按最后那个钱包定,或者拆成两三批,每批按当时的池子重新定。

滑点和价格冲击有什么区别?

价格冲击是你这一单对池子的影响,由单子大小和池子深度决定,签名前就能看到。滑点是报价到成交之间、你管不着的那部分留的余量。界面显示 2% 冲击的单子写 0.5%,还没到机器人那一层就先回滚了。

为什么兑换一直失败?

多半是三件事之一:池子又浅又快、报价过期、SOL 不够付费。前两件靠滑点设置和刷新报价解决,第三件是余额问题,上限调多大都没用。

设得太高会怎样?

单子会成交,但成交得难看。开得大的上限,等于把余量直接送给抢跑的机器人。就算是刚出生的模因币,也用不到 50%。

滑点设置是每笔单子的判断

滑点设置没有唯一正确的数字,它是每笔单子重新算一次的判断。另一个每次都要定的数字是优先费,写在Solana 优先费该给多少里;深度和波动怎么读,写在DexScreener 怎么用里。

J
作者
J Tools Editorial

来自 J Tools 团队的文章。

查看 J Tools Editorial 发表的所有文章 →

相关文章