自持钱包 · 兑换
Best quote in./Minimum out, or nothing./Never retry a stale price.
手机上可以左右滑动看全图。
异常处理
异常处理
| 问题 | 方案 |
|---|---|
| 报价过期 | 结论:过期就刷新报价,不拿旧价成交 现象:用户点确认时,报价已过期 做:确认按钮变成「刷新报价」 然后:拿新价重算最少到手,再让用户确认 |
| 成交价太差 | 结论:整笔回滚,不自动重试 现象:链上实际能换到的,比最少到手还少 结果:合约整笔回滚,USDT 一分没少,只扣手续费 为何不重试:价格已变,自动重试 = 替用户接受更差的价 |
| 三明治攻击 | 结论:滑点默认设小,超阈值弹警告 现象:滑点容忍度设太大,被人夹 原理:有人在内存池看到你的大单,抢先买入抬价,等你成交后再卖出,赚走的正是你的滑点 防:默认滑点小;以太坊可走私有通道广播,不进公开内存池 |
| 授权没到账 | 结论:等 approve 上链确认,再组兑换交易 现象:approve 还没上链就组兑换交易 兜底:授权没生效时,估算手续费那步直接报错,交易组不出来 |
| 广播不上链 | 结论:同 nonce 加价加速或取消,deadline 兜底 现象:交易广播了,迟迟不上链 做:和转账一样,同一个 nonce 加价加速或取消 兜底:交易带 deadline,过了截止时间合约直接拒绝,不会很久以后按旧价成交 |
| 无限授权出事 | 结论:默认只授本次额度,出事一键改 0 现象:之前授过无限额,后来这个合约出了问题 做:授权管理页一键把额度改成 0 注意:这也是一笔要付手续费的链上交易 |
| 聚合器异常 | 结论:多家比价,离谱的丢掉,全挂就暂停 现象:某个聚合器报价离谱或接口挂了 做:同时问多家聚合器和 DEX,偏离市价超过阈值的直接丢掉 兜底:一家挂了用其他家;全挂就暂停兑换,不硬给价 |