跳到正文
← 使用教程

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 或私钥。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据