把滑点底线从签名时搬到执行时:ERC-8377 参照相对滑界
代币兑换被盗 sandwich 攻击的人不陌生:你设的最低价按几分钟前的报价算死,攻击者在这一笔交易的包前后夹击池子,只要吞掉的差价没顶到你的底线,损失就成立。ERC-8377(Reference-Relative Slippage Bounds)想把底线变成活的:不再在签名时锁死一个 minAmountOut,而是随交易交一份滑点策略,执行瞬间参照实时报价现算地板。按 ercs 仓库记录,提案状态为 Draft,创建于 2026 年 8 月 5 日。
策略里的五个字段各挡什么
策略结构 SlippagePolicy 有五个字段。quoteOracle 指向一个 ERC-7726 报价预言机,提供中间参考价——标准明确要求它不能是成交所在池自己的现货价,否则攻击者推池子就连地板一起推,保护变成自我指涉。expectedCostBps 把”正常的执行成本”单列:池费加这一单体量应有的价格冲击,都算已知开销,与攻击无关;把它从滑点容差里拆出来,诚实成交就不会被误伤。maxDeviationBps 是超出预期产出之外还能容忍多深的逆向偏移,标准特意解释了这个拆分与 ERC-5143 单一容差带的区别:费用、冲击、漂移揉进一个数字,等于重建了这条提案想拆掉的宽带。hardFloor 是无论参考价怎么算都要守的绝对底线。deadline 给这份意图设过期秒数,为 0 表示不设——地板在执行时重算不会过期,但”要不要做这笔交易”这个决定会。
执行入口是 swapWithPolicy,规则写成硬顺序:deadline 非零且已过期就先 revert DeadlineExpired,再读 ERC-7726 报价、算预期产出、算地板,然后以收款人代币余额差衡量实际产出,低于地板 revert SlippageExceeded。

预言机是新的承重墙
把保护从静态数字换成实时参照,等于把安全重心压到报价源上。标准因此写了两条不容商量的前提:预言机必须自带新鲜度约束、给不出可靠报价就 revert,实现不得把来源不明的报价当有效;参照必须独立于成交场所。换句话说,“用哪家的 ERC-7726”取代”设百分之几滑点”成为新的关键决策,而钱包界面未必会把前者讲清楚。
一个数字例子与三条使用守则
用一个简化算例把字段间的关系摆出来:设参考价折出一单位输入应收一万枚输出,expectedCostBps 声明为 0.3%(池费加冲击),maxDeviationBps 给 0.1%,则地板为一万乘以 0.997 再乘 0.999,约 9960 枚;攻击者若想夹这笔交易,可提取空间被压到地板与诚实执行价之间那条窄缝,而旧式设 1% 滑点的同量交易,地板只有一万乘以 0.99 约 9900 枚,缝宽出几倍——两个拆分参数各司其职的效果在数字上是可见的。使用守则由此得三条:其一,永远要求引用与成交场所相互独立的报价源,链上聚合价预言机与自家池内现货都不可作为参照,标准把这条写成 MUST 级别不是建议;其二,deadline 按策略的真实有效期设定,不设等于允许一笔意图无限期等待执行,行情剧变时反成风险敞口;其三,在钱包里确认失败行为是 revert 而非静默重报价,回滚的失败只是摩擦,自动”再试一次”的失败才是漏水的阀门。三明治攻击的经济学靠提取空间存活,任何把空间变窄的机制都在降低发案率,这是这类标准最朴素的价值坐标。
对 NFT 交易场景,这套机制同样适用:以代币计价的挂单、扫合约内部的兑换、任何”签名与执行隔着区块”的交易,都吃同一种时序亏。普通用户的现实路径是等钱包与聚合器把它做成默认选项,并在设置里看清两件事:引用的报价源是什么,freshness 失败时的行为是回滚还是静默降级。在没有标准化之前,它提醒所有人一个原则:静态滑点保护永远存在”报价到执行”的空窗,空窗期长短就是可被提取的利润。本文为机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。