Panora 报价金额不对:核对 ExactIn、ExactOut 与滑点单位
链小知 · 进阶 · 核验 · 依官方文档整理
分析已有脱敏 Swap API 请求和返回值;分清人类数量、报价方向、最低收到与费用,不提交交易。
开始前准备
- 准备一份已有的脱敏请求及报价,保留版本、链、资产地址和时间;删除 API key。
- 本篇针对 Aptos Swap API,不将 Terminal、跨链和限价产品混用。
1. 固定网络与两个资产对象
核对 chainId、fromTokenAddress、toTokenAddress 和 toWalletAddress。该 API 文档的默认 chainId 1 指 Aptos Mainnet,不能按 Ethereum 的链 ID 1 解释。资产名称相同也要逐项核对地址与返回的 decimals。
检查结果:记录明确属于 Aptos,两个资产和接收地址没有颠倒。
2. 只指定一个数量方向
fromTokenAmount 表示固定卖出数量;toTokenAmount 表示希望买到的数量,二者每次只给一个。文档示例 10.5 APT 直接传 10.5,不先乘 10^decimals。不能照搬其他聚合器的最小单位整数规则。
检查结果:请求只有一个数量字段,数值与人类输入一致。
3. 区分报价金额与成交保护
ExactIn 对照 quotes 中的 toTokenAmount 和 minToTokenAmount;ExactOut 对照 fromTokenAmount 和 maxFromTokenAmount。前者是报价,后者是带滑点的界限。接口 ExactOut 的一处标题用词与正文/字段不同,应按实际请求方向和字段核对,未知则保留。
检查结果:对照表分别列预期买入/卖出和保护界限,没有把二者合并。
4. 检查百分数、自动值与空价格
slippagePercentage 是百分数,1 表示 1%;默认 auto 的文档上限为 5%,不是推荐设置。自定义数值超两位小数会截断,不能假设请求精度全被保留。priceImpact 或美元金额为 null 时表示缺少相应价格依据,不能填零或写成无价格影响。
检查结果:滑点按百分数记录,auto 与实际返回分开,null 保留为缺失。
5. 分开费用与执行状态
核对 feeToken、feeTokenAmount 以及是否带 integratorFeePercentage。当前条款将普通兑换、Terminal、限价/DCA和跨链费用分开,不能拿普通兑换条件解释所有产品。400 查参数,401 查鉴权,429 查限额;HTTP 200 和 txData 只说明取得数据,实际成交还需对应链交易回执和资产变化。
检查结果:结论写明已检查报价、未确认成交,并列出缺失证据。
怎样确认完成
- 得到包含网络、方向、金额、保护界限、费用与错误类别的报价记录。
- 没有将接口返回或示例金额写成真实成交。
常见错误与边界
- 同时传入两个金额方向。
- 把人类数量乘精度后传入,或把 1% 写成 0.01。
- 为排查报价重复授权或广播,或暴露 API key。