SuperAPI AI 工具集

0x-swap

通用与其它

查看项目

更新于 10-13 17:15

技能介绍

用途

0x-swap 是一个分步操作指南,帮助用户或开发者通过 0x 协议 API(Swap API v2 与 Gasless API v2)在 EVM 链上执行代币兑换。它指导完成获取价格、获取正式报价,并明确说明执行兑换所需的每一步操作——包括用户自付 gas 的标准方式,以及 0x 从卖出代币中扣除 gas 的免 gas 方式。

该技能可以直接用 WebFetch 调用 0x API,并通过 mcp__0x-mcp__searchDocs 查询文档细节。技能本身不能签名或提交交易,交易必须由用户自己完成。

主要能力与流程

第一步:收集兑换信息 需要 sellToken(ERC-20 合约地址或符号)、buyToken、sellAmount 或 buyAmount(以代币最小单位计,如 USDC 有 6 位小数,100 USDC = 100000000)、chainId(Ethereum=1、Base=8453、Polygon=137、Arbitrum=42161、Optimism=10、BNB=56 等)、taker(报价所需,必须是实际执行兑换的钱包地址)。若用户提供的是代币名称或符号,需查对应的规范地址(0x API 不支持符号)。

兑换方式选择 标准兑换有两种流程:AllowanceHolder(端点 /swap/allowance-holder/quote),适合大多数集成方、聚合器、从 Swap v1 升级的团队以及多签/智能账户钱包,执行方式为标准 approve + 发送交易;Permit2(端点 /swap/permit2/quote),适合需要限时授权、批量操作或已设置 Permit2 授权的用户,执行方式为 approve + 签名 EIP-712 + 附加签名 + 发送交易。默认推荐 AllowanceHolder,除非用户明确要求 Permit2。

免 gas 限制 Gasless API 仅支持 ERC-20 代币,无法卖出原生 ETH、MATIC、BNB 等。若卖出代币为原生代币,必须使用 Swap API v2。

第二步:获取参考价格 先获取价格预估(/price 不需要 taker 地址)。AllowanceHolder、Permit2、Gasless 分别有对应的 price 端点。需清晰展示用户将获得的买入代币数量、有效汇率、预估 gas 成本(标准)或 gas 节省(免 gas)、以及价格警告,并在进入正式报价前请用户确认。

第三步:获取正式报价 用户确认后获取正式报价,锁定价格并返回执行兑换所需的一切。三种流程各有对应 quote 端点。

第四步:说明用户需执行的操作 根据报价响应,列出用户在钱包中必须执行的具体步骤。

AllowanceHolder 执行步骤(更简单,推荐大多数用户):若响应包含 issues.allowance(非 null),先授权 AllowanceHolder 合约(授权对象为 issues.allowance.spender,随链而异,始终使用响应中的值),金额至少为 sellAmount 或 max uint256 一次性授权。交易可直接发送,无需签名步骤:to 为 transaction.to、data 为 transaction.data、value 为 transaction.value、gas 为 transaction.gas × 1.2、gasPrice/maxFeePerGas 取自 transaction.gasPrice 或 transaction.fees。由于不需要链下类型化数据签名,可用于多签和智能合约钱包。

Permit2 执行步骤(更复杂,控制更多):若 issues.allowance 非 null,先授权 Permit2 合约(地址始终为 0x000000000022d473030f116ddee9f6b43ac78ba3),金额至少为 sellAmount 或 max uint256。用 eth_signTypedData_v4 签名报价响应中的 permit2.eip712 对象(使用 viem 时,传给 signTypedData 前需从 types 中移除 EIP712Domain,viem 会内部构造域分隔符)。签名后按格式 [transaction.data][uint256(sig.length) 32 字节][signature bytes] 将签名附加到 transaction.data,再提交。

Gasless 执行步骤:免 gas 报价返回两个 EIP-712 对象需用户签名——approval(如存在,授权 0x 代为转移代币,仅在未授权过时需要)与 trade(授权实际兑换)。然后 POST 到 https://api.0x.org/gasless/submit 提交,请求体包含 trade 与 approval 的类型、eip712 和 signature。随后轮询 GET https://api.0x.org/gasless/status/{tradeHash},每隔几秒直到状态为 succeeded、failed 或 confirmed。

第五步:呈现清晰摘要 获取报价后展示清晰摘要,并列出后续步骤,例如签名授权消息(如需要)、签名交易消息、提交两个签名。

API 参考

基础 URL:https://api.0x.org。每次调用必需请求头:0x-api-key: YOUR_API_KEY、0x-version: v2。API key 可在 dashboard.0x.org 免费获取,代码示例中环境变量名为 ZERO_EX_API_KEY。

支持的链(chainId):以太坊主网 1、Abstract 2741、Arbitrum 42161、Avalanche 43114、Base 8453、Berachain 80094、Blast 81457、BSC 56、HyperEVM 999、Ink 57073、Linea 59144、Mantle 5000、Mode 34443、Monad 143、Optimism 10、Plasma 9745、Polygon 137、Scroll 534352、Sonic 146、Tempo 4217、Unichain 130、World Chain 480。其中 Swap API 覆盖全部列出的链,Gasless API 覆盖以太坊主网、Arbitrum、Avalanche、Base、Blast、BSC、Mantle、Mode、Optimism、Plasma、Polygon、Scroll、Sonic 等(其余仅 Swap API)。

以太坊主网常见代币地址:WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2、USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48、USDT 0xdAC17F958D2ee523a2206206994597C13D831ec7、DAI 0x6B175474E89094C44Da98b954EedeAC495271d0F、WBTC 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599。其他链或代币可用 mcp__0x-mcp__searchDocs 查询正确地址。

适用场景

适用于希望在任何 EVM 链上兑换代币、获取报价、跨链或多链兑换、集成 0x 兑换到应用,以及寻求免 gas 兑换路径的用户与开发者。

开发者集成模式

若用户是希望将 0x 兑换集成到应用中的开发者,可切换到代码模式:询问用户想要的流程(AllowanceHolder 更简单、支持多签,或 Permit2 控制更多),无偏好时默认 AllowanceHolder;提供 TypeScript/JavaScript 或 Python 代码示例展示完整流程;说明常见错误的处理(余额不足、滑点超限、代币不支持);并用 mcp__0x-mcp__searchDocs 拉取官方文档中的最新代码示例。

关键安全规则与限制

切勿对 Settler 合约设置授权(报价响应中的 transaction.to 可能指向 Settler,其地址随每次部署变化),只能对 AllowanceHolder(Swap API)或 Permit2(Gasless API)设置授权。只授权 API 响应中的 spender(使用 issues.allowance.spender 或 allowanceTarget),不要硬编码。报价约 30 秒过期,获取后应尽快提交交易;Gasless API 应在收到报价后立即签名并提交。检查报价响应中的 simulationIncomplete,若为 true 表示模拟未完全完成、交易可能回滚,应警告用户。进行前应始终检查 liquidityAvailable。

错误处理:400 Bad Request 通常为参数缺失或无效,检查 validationErrors;Gasless 不支持的代币,回退建议 Swap API v2;流动性不足时告知用户并建议调整金额或链;issues.balance 表示余额不足,应展示实际持有与所需数量;spender 需要授权时先授权再兑换。

暂未提供的限制

资料未说明该技能的收费、价格、具体使用效果或安装方式。