兑换界面默认按你输入的数量报价:我给你这么多 A,预计换回这么多 B。另一种语义你可能很少注意到:锁定输出——无论花多少 A,我要拿到这么多 B。两者的报价方向相反,合约里的函数名也各成一组,而失败的方式和成本的分布,全从这个方向差里长出来。
固定输入的语义是:我确定投入量,接受输出在一个滑点下限之上的任何结果。路由替你找路径组合,最终只要求换回的 B 不低于 minOut 这个门槛,低于门槛整笔回滚。它天然有一个成本上限——你投入的 A 就是最坏情况里最大的支出,额外损失最多是换回的 B 比报价少一些。固定输出的语义则相反:我确定要拿到多少 B,愿意付出的 A 不超过某个上限。路由为凑足输出量,可能一次探测多条路径、多段池子,若最优组合的总输入仍然超过 maxIn 上限,交易失败。同样的滑点百分比设置在两种语义下的含义并不对称:固定输入下它保护你不被多收钱以外的损失,固定输出下它同时决定你能不能成交,价格影响与多路径开销会更快撞破这个限制,导致一笔看上去只差一点点的报价反复失败。
固定输出还有两个不那么直观的成本面。第一是资金占用与拆分:为凑输出量,路由可能让你的一部分资金走一条池子、另一部分走另一条池子,其中任何一腿遇到余额不足或池子状态变化,整笔回滚,你只损失那一笔的 gas。第二是零头行为:固定输入允许留下零头没换完,固定输出则强制精确,为精确可能牺牲汇率——多付的那点成本藏在凑量的路径里,报价页往往只显示最终预计输入,不显示为凑量多绕的损耗。两种语义对大额交易还有一处差异:固定输入下你的买单对池子价格的推动与成交即时相关,固定输出下为达到目标量路由可能更激进地吃深度,成交后你回头用同一池子验算,会发现均价比单池报价更差。
选择上没有绝对优劣,按方向定:你是带着确定数量的资产来,想控制成本上限,用固定输入并设好可接受的最低输出;你是为了还一笔确定数额的债或凑足一份抵押,必须拿到那个数才安心,用固定输出并把最高支出设到你能承受的最差值,别拿输入侧的默认滑点数字直接套过去。判断标准可以简单到一句话:失败时你心疼的是钱还是没凑到的量,心疼钱用前者,心疼量用后者。
下单前的清单包括:确认当前界面用的是哪种语义,不同前端默认值不同,别凭旧习惯盲点;用固定输出时把最高支出上限手工设定,别留空或留默认,留空意味着你接受任意成本完成成交;检查路由明细里有没有你完全陌生或余额明显不足的路径腿;成交后对账时把两种语义的差异纳入对比基准,拿两笔语义不同的交易比滑点数据,比出来的差异多半是语义造成的,不是行情。报价语义是执行风险里最便宜的一课,因为它只在下单那一秒需要你多想一步。
两种语义还有一种不对称值得写进笔记,失败时的损失函数不同。固定输入的失败通常发生在执行瞬间,损失只有那一笔 gas;固定输出的失败更常发生在路由凑量阶段,可能多烧一些探测开销,且反复重试会在同一时段持续抢同一段池子深度,越重试越难成。有经验的用法是按场景固定默认,平时兑换用固定输入,临近截止的还款场景用固定输出,并把两种语义各自最差情形的成本都提前算一遍,正常行情下两者的成本差异其实很小,差距几乎都发生在极端时段。
风险提示:兑换的实际成交受池子深度、价格波动与路由拆分影响,任何报价均为瞬时估算不代表最终成交;本文只解释两种报价机制的差别,不构成投资建议,不承诺成交结果。

发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。