KyberSwap路线与编码不一致:核routeSummary、期限和RFQ复用
链小知 · 进阶 · 核验 · 依官方文档整理
从已有APIv1记录对齐选中的完整路线、构建参数与编码,分开路线缓存建议、deadline和RFQ nonce。
开始前准备
- 准备已有脱敏请求与响应,保留接口版本、链、币合约、小数位、金额原字符串及时间;缺权限或执行结果的材料明确留待核。
1. 先辨原端点、模式与权限
把原材料的host、chain路径及方法记下来:APIv1 GET /routes只取route预览,POST /route/build编码;旧非版本/route/encode是单请求模型。beta /api/v1/swap虽然也单请求且可带RFQ,却仅限网关白名单客户,不能当随意查询的预览替代。
EVM规范写新网关api.kyberswap.com/swap/每请求带X-Api-Key,旧aggregator-api base仍限流可用;首页no key概述与此并存。原X-Client-Id用于标识及限频,规范GET/POST必填标签也不同;保留原许可,不由同名header推定鉴权成功。
检查结果:版本、host、route/build或beta形状和权限分别标记;缺材料未补成可调用。
2. 核选中路线与编码输入是否同一份
对既有GET结果保存routeSummary完整对象及routerAddress,核tokenIn/tokenOut地址和amountIn最小单位字符串。routeSummary虽可读,也包含routeID、checksum、timestamp、route与extraFee;POST要求原样带回,不可只抄预估amountOut后重建。
POST另加sender与recipient;sender是输入币转出方,recipient是输出接收方,origin可记录真实用户。不要把三个角色或routeSummary里的池地址全写成同一个地址。材料缺完整原routeSummary、链/币或接收人时,结论停在无法对应。
检查结果:完整routeSummary与所选GET路线对应,原路由地址、输入资产/数量及参与方角色未被重建或混用。
3. 分开路线新鲜度、执行截止与重复执行
规范建议不缓存GET路线超过5–10秒,过久需重新获得路线;这是文档建议的新鲜度窗口,不能把原timestamp存在就当仍有效。POST的deadline是Unix秒、默认加20分钟且不能在过去,它约束执行截止,并不把旧报价重新变新。
beta说明同一calldata不保证多次执行,RFQ nonce可拒绝重复。对旧记录保留routeID、requestId和取得时间,不把前一笔编码直接配给新交易或新金额。只有预览需求时不要将beta调用当替代,本教程只核已有记录。
检查结果:路线取得时间、执行deadline及RFQ重复风险分开;旧编码没有被写成可重复执行的当前路线。
4. 核滑点、费用单位和Gas含义
POST slippageTolerance单位bps,10为0.1%,0.1为0.001%,未填默认0;普通范围0至2000,ignoreCappedSlippage=true会取消该上限,不以示例true作为默认建议。不要与其他产品百分比参数直接共用数值。
GET feeAmount要连同isInBps、chargeFeeBy和feeReceiver解释:isInBps=true时10是0.1%,false时10是10个token最小单位;currency_in/out决定收费币侧,空chargeFeeBy表示不按该参数收费。gasInclude只影响选路时是否计Gas,gasPrice是wei,不免实际网络费。平台无Swap协议费与外部集成费、positive slippage/dust可同时存在。
检查结果:滑点bps、费用百分比或绝对整数、收费币侧和Gas参与选路分别对应原字段。
5. 按原返回阶段定位失败和未知
先分HTTP状态与JSON code:文档成功示例HTTP200但code=0;requestId供debug,不是交易成功凭证。原4001为query格式、4002为body格式、4005/4007分别费用超过输入/输出、4008无route、4010无合格pool、4011币不存在,422例为该网络未配置WETH;只在原错误对应时使用,别给缺失错误补码。
POST返回data.data是编码hexstring,routerAddress与transactionValue是发送对象和原生value材料;不能拿amountIn无条件充当原生value。enableGasEstimation仅为估算/检测潜在回滚的配置,不保证链上成功。缺实际结果时完成的是GET路线、POST编码、参与方及错误对照,不写已成交或已到账。
检查结果:HTTP/业务code、查询/构建阶段和交易结果各自留证;无实际结果未从编码推成功。
怎样确认完成
- 得到版本、单位、角色、原错误与结果缺项的对照;官方方法已核,当前账户和实际执行结果依原材料确认。
常见错误与边界
- 不要把同名字段、旧demo或其他API单位照搬进当前版本。
- 报价/编码、费用估计与实际执行结果分别留证;未知不补零或成功。