1inch Classic Swap 报价有了却不能兑换:先核对金额单位与授权
链小知 · 进阶 · 核验 · 依官方文档整理
用已脱敏的 v6.1 报价与授权记录定位失败,不把报价当成交,也不照搬包含私钥的广播示例。
开始前准备
- 准备 Classic Swap v6.1 的已脱敏请求、响应和对应链的授权查询记录。
- 分析既有请求和响应即可。实时接口需要 Business API key,额度和收费以当前账户套餐为准;Quick Start 同时包含签名广播示例,排查报价应只取读取部分。
1. 固定产品、版本和网络
请求应属于 /swap/v6.1/{chainId}/quote。本篇针对 Classic Swap,不能套用到 Fusion 意图订单。把 chainId、src、dst 与输入时间抄入表格,确认两个代币地址都属于该链;官方 Base 示例不能直接换成 Ethereum 请求。
检查结果:记录里有版本、链 ID 和两个完整代币地址。
2. 把输入数量换成最小单位
amount 是卖出代币的最小单位整数。官方示例的 6 位小数 USDC,0.1 个对应 100000;这只是示例,不代表所有 USDC 或代币都采用同一精度。用该链代币的 decimals 复核,避免以浮点数拼接大额整数。
检查结果:人类数量 × 10^decimals 与请求 amount 一致。
3. 核对报价返回的币种和金额
对照 srcToken、dstToken、dstAmount、protocols 与 gas。dstAmount 也按买入代币精度换算;gas 是报价估计信息,不能当最终账单。若返回认证错误、无路线或参数错误,分别检查 API 权限、当前流动性与地址/数量,不据此重复提交交易。
检查结果:输出金额有买入币精度和报价时间,没有写成已到账。
4. 把 allowance 与余额分开检查
在相同网络、owner 和协议 spender 下比较 allowance 与 amount。余额够而 allowance 不足依然不能转出;授权对象不能从代币名称或历史其他网络地址猜测。先核对已有只读结果;授权本身是有权限和链上成本的独立动作。
检查结果:余额、owner、spender、allowance 四项均有明确来源。
5. 区分可构造交易与已经成交
/swap 返回可执行交易数据,也不等于交易成功。原有成交需另有该链回执和实际资产变化;若没有,就将状态写成“报价检查完成,未执行”。网络 gas、接口费用与兑换滑点分别记账,不能将一项 gas 估计解释成总成本。
检查结果:结论准确区分报价、授权状态、交易数据和成交证据。
怎样确认完成
- 形成包含版本、网络、精度、报价与授权的故障记录。
- 未签名、未广播;无法确认的成交状态保留为未知。
常见错误与边界
- 把 Fusion 与 Classic Swap 混用。
- 把 100000 当作 100000 个 USDC。
- 为复现问题粘贴 API key 或私钥。