0x v2 报价提示授权不足:不要把 Settler 当授权对象
链小知 · 进阶 · 核验 · 依官方文档整理
对照 AllowanceHolder 与 Permit2 的权限路径,检查 issues、授权目标和执行目标为什么不同。
开始前准备
- 准备脱敏的 Swap API v2 quote JSON、请求参数及已有 allowance/余额记录。
- API key、套餐和所选链支持范围需按账户与官方当前矩阵核对。诊断资料应为脱敏记录,不包含认证或签名凭据。
1. 先确定 v2 的授权路径
查看 URL 属于 /swap/allowance-holder 还是 /swap/permit2,检查 0x-version: v2、chainId、taker、sellToken、buyToken、sellAmount。v1 已退出服务,不能拿旧 allowanceTarget 或路径修补 v2 请求。
检查结果:记录明确标注 v2 与授权模式。
2. 读取 issues 而不是只读价格
展开 quote 的 issues,分别检查 allowance、balance 等返回项。sellAmount 用卖出代币最小单位。余额不足与 spender 授权不足是不同原因;HTTP 请求成功不代表钱包具备成交条件。
检查结果:故障与具体 issues 字段对应。
3. 从响应核对 spender
把 issues.allowance.spender 或接口提供的 allowanceTarget 与当前链官方合约信息比较。官方明确禁止授权给 Settler;即便 transaction.to 指向执行合约,也不能据此将 ERC-20 allowance 授给它。
检查结果:授权对象有接口和官方部署依据,没有猜测。
4. 把执行目标与授权目标列成两栏
保留 transaction.to、data、value 与 spender 的脱敏副本。Permit2 涉及不同授权与签名流程,不能把 AllowanceHolder 的检查结果直接移植;原生币路线也不能强加 ERC-20 approve。记录中缺失的权限环节保持待确认。
检查结果:两栏分别注明用途,签名或 approve 没有实际执行。
5. 核对报价时效和最终证据
price 是初步价格信息,quote 的交易数据仍有市场时效。把网络 gas、API/集成费用和响应中的费用分项保留;具体收费取决于产品和套餐。已有交易只能靠回执与买入资产到账确认,旧报价不能补充为成交证明。
检查结果:记录注明报价时间、未核实费用和成交证据是否存在。
怎样确认完成
- 定位到网络、余额、授权或路径其中的可验证环节。
- 权限未知时保留未知,不给出通用 spender 地址。
常见错误与边界
- 向 transaction.to 无条件授权。
- 混淆 Permit2 消息签名与 AllowanceHolder 链上授权。
- 将 API 返回成功写成链上兑换成功。