对齐Rango单步与多步路由的输入和前置条件
链小知 · 进阶 · 核验 · 依官方文档整理
只读当前规范或已有脱敏quote/route记录,整理API选择、资产单位、错误分支、费用位置与目标链前置条件。完成的是接入核对单,不创建、确认或执行路由。
开始前准备
- 一组目标链/资产需求及其合约、decimals;或已取得并脱敏的路由记录
- 标明材料对应的API版本与取得时间;当前余额、可用路线或前置状态缺证时保留待核
1. 按交互要求选择Basic或Main
从Choosing the Right API记录需求:Basic针对单步用户动作,EVM可把源DEX、bridge、目标DEX组合进一笔主交易;Main支持多个候选路线及多步,每步可能至少一笔交易且中间链需网络费。Basic的Multi-Routing仍标未实现,不把Main的多路选择直接套给Basic。
把允许的签署次数、需支持的链和是否接受中间链gas写入接入表。官网Our Vision中的no approvals/no gas不能代替当前流程;选择单步也要继续检查授权和目的链准备。
检查结果:表内明确Basic或Main、允许的中间链及gas责任,并单列尚未核实的路线可用性。
2. 把资产身份与金额编码分开
Basic Get Quote规范用from/to描述链及资产,SDK RequestedAsset含blockchain、address及可选symbol;原生币示例address=null。HTTP示例BSC.BNB与AVAX_CCHAIN--合约不能只按USDT名称替换;对照Token的chainId、address、decimals核具体资产。
Basic amount是机器整数的字符串:18位BNB的0.1对应100000000000000000;slippage=1.5表示1.5%。Main flow样例则使用from/to资产对象及amount='1',不要把Basic编码直接复制进Main样例。Basic flow文字写1 BNB、代码却为0.1 BNB,USDT合约也有差异;保留冲突,用当前所选资产元数据核对,不能据示例认定当前支持。
检查结果:为每个输入记录链、合约或native null、decimals与显示金额;Basic整数换算可回到原显示值,未混用Main样例单位。
3. 检查报价结果与路线过滤的含义
在脱敏Basic记录中读resultType和route:NO_ROUTE没有路线;HIGH_IMPACT不宜继续,INPUT_LIMIT_ISSUE核route.amountRestriction的min/max与type,EXCLUSIVE是严格开区间,INCLUSIVE包含边界。HTTP成功或存在requestId都不等可执行。若没有记录,只标注这些分支,不编造当前结果。
合约发起的需求要核contractCall=true所过滤的swapper;规范警告底层白名单不满足可卡住资金。enableCentralizedSwappers默认false,开启需要传用户IP作合规检查且可能因KYC暂扣;本文不收集或提交IP。不以覆盖增加推定任意钱包可走所有路线。
检查结果:已区分无路、高影响、金额限制和OK;边界类型与合约/中心化路径限制均有字段依据,未知保持未知。
4. 标记费用扣除位置,避免重复扣输出
按route.fee逐项记name、token、amount及expenseType;DECREASE_FROM_OUTPUT已含在预计输出中,展示时不再扣一次。FROM_SOURCE_WALLET需要源钱包相应费用资产,类型定义还包括FROM_DESTINATION_WALLET;feeUsd可为空,不据此填零。outputAmount/outputAmountMin是报价字段,不是最终到账。
区分自有dApp零界面费、底层swapper费和API/affiliate商业安排。avoidNativeFee只排除以原生币收桥服务费的swapper,不能免网络费,也可能减少路线。Basic flow的15秒、Main的30秒是重新报价示例,不是统一有效期或成交保证。
检查结果:每笔费用都关联币种与扣除位置;已计入输出的费用未重复扣,空USD估值及过期记录没有当当前成本。
5. 记录目的链准备和停止条件
读tx.prerequisites而非只看源链:Stellar非原生SAC资产需目标钱包的Change Trust,示例给code、issuer、value、wallet;XRPL已发行代币相应核currency、issuer、value、wallet及TrustSet。不能因主交易在Arbitrum就忽略接收链的信任线。这里只形成待核项目,不发起任何信任线操作。
Basic flow说明tx为空或resultType非OK应停止;Main需逐步处理isApproval,并在前一步成功后才进入下一步。缺少前置状态、动态spender或当前余额/费用证明时,结论写尚不能确认可执行;文档选择或交易数据生成均不等签署、广播或到账。
检查结果:目的链前置资产/issuer/钱包、每步gas责任与未核状态已单列;最终成果只为核对单,没有把文档计划写成完成交易。
怎样确认完成
- 形成API选择与资产单位表
- 形成金额/费用/前置条件及错误分支核对单,未核状态保留
常见错误与边界
- 把官网愿景的gasless/no approvals当所有Basic路线保证。
- 把Basic整数金额复制到Main例子,或把BNB/USDT示例冲突当当前资产数据。
- 将DECREASE_FROM_OUTPUT重复扣除,或把avoidNativeFee解释为免gas。
- 只检查源链;Stellar/XRPL接收资产的信任线准备可能早于主交易。