SwaptoX 项目 API 文档

高效的跨链代币交换工具 — 基于 Base 链的智能路由优化

1. 查询精准输出

此 API 用于获取从输入代币到输出代币的最佳交换路由。它会智能计算多条路径,并返回输出数量最大的路由(通常是第一个)。SwaptoX: 能自动发现最优路径,减少滑点和费用。建议在执行前调用此 API 以获取实时报价。

API 端点: https://api.swaptorx.com/functions/v1/api/base/routes-in

方法: GET

参数类型描述示例
tokenInstring输入代币合约地址0x4200000000000000000000000000000000000006 (WETH)
tokenOutstring输出代币合约地址0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 (YSDC)
amountInstring输入数量(Wei 单位)1000000000000000000 (1 ETH)
tokenIncludeboolean是否包含代币列表(可选,默认 false)true

响应结构: 返回路由数组和可选代币列表。路由按输出量降序排列,data 字段用于后续交易执行。

{
    "routes": [ // 交易路径数组,优先选择第一个(最大输出)
        {
            "amountIn": "1000000000000000000", // 输入数量
            "amountOut": "3979390992", // 输出数量
            "data": "0x0000...0007", // 交易 calldata,用于 swap 函数
            "blockNumber": "37342251", // 报价区块高度,确保新鲜度
            "paths": [ // 路由路径代币地址数组
                "0x4200000000000000000000000000000000000006",
                "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
            ]
        }
        // 更多备选路由...
    ],
    "tokens": [ // 代币元数据(若 tokenInclude=true)
        {
            "decimals": 18,
            "name": "Aerodrome",
            "symbol": "AERO",
            "address": "0x940181a94a35a4569e4529a3cdfb74e38fd98631",
            "logo": "1753779282831.png",
            "has_permit": false,
            "price_usd": "0.906086" // USD 价格,便于 UI 显示
        }
        // 更多代币...
    ]
}
提示: 始终检查 blockNumber 以避免过时报价。amountOut 是精确计算值,可用于 slippage 保护。

2. 批准输入代币

如果输入代币是 ERC20(如 WETH),需先批准 SwaptoX 合约花费你的代币。原生 ETH 无需此步。建议: 为安全起见,批准金额应精确匹配 amountIn,避免无限批准。

批准地址: 0xde6A22861fEc6F37Ae10a6A88CF2A645Eb7094Ca

Viem 示例(批准精确金额):

const txHash = await client.writeContract({
    address: '0x4200000000000000000000000000000000000006', // ERC20 合约
    abi: erc20Abi, // 标准 ERC20 ABI
    functionName: 'approve',
    args: [
        '0xde6A22861fEc6F37Ae10a6A88CF2A645Eb7094Ca', // SwaptoX 合约
        1000000000000000000n // 精确金额,避免无限批准
    ],
    account: '0x80A4...C8B9' // 用户钱包
});
安全提示: 监控批准状态,使用工具如 Revoke.cash 撤销旧批准。

3. 执行交互

调用 SwaptoX 合约的 swap 函数执行交换。理解: 此函数支持多路由优化,amountMinOut 作为滑点保护(建议 0.5-1% 低于 amountOut)。deadline 防止重放攻击。

合约地址: 0xde6A22861fEc6F37Ae10a6A88CF2A645Eb7094Ca

ABI: 查看完整 ABI

Viem 示例(带滑点保护):

const swaptoxAbi = [...]; // 从 Basescan 加载 ABI

const args = [
    {
        tokenIn: '0x4200000000000000000000000000000000000006', // 输入代币
        tokenOut: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // 输出代币
        amountIn: 1000000000000000000n, // 输入金额
        amountMinOut: 3940000000n, // 最小输出(amountOut * 0.99,1% 滑点容忍)
        data: '0x0000...0007', // 从 API 1 获取的 calldata
        recipient: '0x80A4...C8B9', // 接收地址(可为第三方)
        permitData: '', // 若使用 permit,此处填签名数据
        slots: true // 启用槽位优化(默认 true,节省 gas)
    },
    Math.floor(Date.now() / 1000 + 600) // 10 分钟 deadline
];

const swapParameter = {
    address: '0xde6A22861fEc6F37Ae10a6A88CF2A645Eb7094Ca',
    abi: swaptoxAbi,
    functionName: 'swap',
    args: args,
    account: '0x80A4...C8B9', // 用户钱包
    value: 0n // 若输入 ETH,此处填 value
};

const txHash = await client.writeContract(swapParameter);
优化建议: 对于高频交易,集成 WebSocket 监听区块以刷新报价。测试网部署前,在 Base 测试网验证。