Skip to main content
您的应用可能需要允许用户在两种资产之间进行兑换。您希望用户能够 获得整个生态系统中最优的价格。 聚合器会检查多个流动性来源并找到最佳价格。因此,集成一个聚合器 API 可以为您的应用启用便捷高效的兑换功能。 在本指南中,我们将了解如何集成一个聚合器:Kuru Flow。 您将学习如何将 Kuru Flow 集成到前端应用中——从身份验证到获取报价再到执行兑换。

要求

在开始之前,请确保您具备以下条件:
  • 一个具有钱包连接的前端框架(React、Next.js 等)
  • wagmiviem 用于钱包交互
  • 已连接到 Monad 主网(链 ID 143)的用户钱包

1. 配置身份验证

我们首先需要获取访问 Kuru Flow API 的凭证。 Kuru Flow 使用 JWT token 进行 API 身份验证。
lib/kuru-flow.ts

2. 获取兑换报价

/api/quote 端点会计算最佳兑换路径,并返回交易数据。 支持以下参数: *必须提供 autoSlippage: trueslippageTolerance 之一。 我们可以编写一个小函数与 quote API 交互:
lib/kuru-flow.ts

响应结构

lib/kuru-flow.ts
calldata 字段包含 0x 前缀。在发送交易之前,您必须自行添加。

3. 检查代币授权额度(仅 ERC20)

在使用 ERC20 代币执行兑换之前,我们应验证 router 是否有权限 花费用户的代币。
原生 MON 不需要授权。 兑换原生 MON 时跳过此步骤。
components/SwapCard.tsx

4. 授权代币花费(仅 ERC20)

如果 ERC20 代币的授权额度不足,我们应在兑换之前请求授权。
components/SwapCard.tsx
使用 viem 的 encodeFunctionData 而非手动进行十六进制字符串操作,以获得可靠的 ABI 编码。

5. 执行兑换

要提交兑换,我们应使用报价响应中的交易数据:
components/SwapCard.tsx

代币地址和精度(主网)

格式化输出时请注意代币的精度。USDC 使用 6 位小数,而非 18 位。

推荐费系统

Kuru 具有推荐系统。作为推荐人,我们可以通过在报价请求中包含推荐详情,从每次兑换中获得费用。
lib/kuru-flow.ts
在 50 bps(0.5%)下的费用计算示例:
在部署之前,将 0xYOUR_WALLET_ADDRESS_HERE 替换为您的实际钱包地址。referrerAddress 必须是有效的以太坊地址,否则交易将会失败。

错误处理

在过程中,我们可能会遇到错误。以下是如何理解它们的说明:

常见错误

  1. 缺少 0x 前缀 - 发送前请为 calldata 添加 0x 前缀
  2. 推荐人地址无效 - 必须是有效的以太坊地址
  3. 跳过 ERC20 授权 - ERC20 代币需要在兑换前授权(原生 MON 不需要)
  4. 精度错误 - USDC 有 6 位小数,MON 有 18 位小数
  5. 原生 MON 兑换时 value 为零 - 兑换原生 MON 时,交易 value 必须设置为兑换金额

后续步骤