Skip to main content
倾向于显式编写多步 flow? 参见 Composer API,它记录了显式的 Flow 编写 API。
本指南带你直接通过 LI.FI REST API 集成 Composer。这种方式让你对请求/响应流程拥有完全控制,非常适合后端服务、自定义前端,或任何你希望自行管理交易的环境。
已经在使用 LI.FI SDK 或 Widget? Composer 会自动生效。请改为参见 SDK 指南或 Widget 指南。

Authentication

LI.FI API 是开放的,无需 API key。你可以立即开始发起请求。
  • integrator(可选查询参数):一个在分析与链上事件中标识你应用的字符串。省略时默认为 "lifi-api"。必须为字母数字,可含连字符、下划线或点,最长 23 个字符。
  • x-lifi-api-key(可选头):当你在 LI.FI 合作伙伴门户中创建集成时会自动生成一个 API key。附上它可获得更高的速率限制。没有 key 时,适用未认证限制:/quote 与 /advanced/routes 每两小时 75 次请求,/advanced/stepTransaction 每两小时 50 次请求,其他端点每分钟 100 次请求。有 API key 时,所有端点默认为每分钟 100 次请求。
完整细节参见 Authentication。

Overview

Composer 不需要专用端点。将 toToken 设置为受支持的协议代币地址,LI.FI 便会从标准端点返回一条 Composer 路由。 集成流程:
  1. 请求报价,通过 GET /v1/quote 或 POST /v1/advanced/routes
  2. 设置代币授权,即授权 LI.FI Diamond 合约花费你的代币
  3. 发送交易,使用报价响应中的 transactionRequest
  4. 跟踪状态,对跨链转移轮询 GET /v1/status

Request a Composer Quote

获取 Composer 交易的最简单方式。返回单个最优路由,并包含交易数据。

Slippage

slippage 参数是一个小数值,表示可接受的最大价格差异。例如,0.005 表示 0.5%。若省略,API 默认为 0.005。跨链路由涉及更多步骤,因此对跨链 flow 可考虑 0.01(1%)或更高。

Using POST /advanced/routes

返回多个路由选项。当你想向用户呈现选择,或需要对路由选择有更多控制时很有用。
使用 /advanced/routes 时,交易数据不包含在响应中。你必须调用 POST /v1/advanced/stepTransaction 来为每个步骤获取 transactionRequest。使用 /quote 时,交易数据直接包含在内。

Getting transaction data for a route step

TypeScript
如需详细对比,参见 Difference between Quote and Route。

Quote Response Structure

Composer 报价响应包含路由细节、预估输出以及一笔可直接签名的交易。以下是关键字段:

Key fields

十六进制编码值: transactionRequest 的 value、gasLimit 与 gasPrice 字段为十六进制字符串(例如 "0x5f45bc")。chainId 字段是普通数字。手动构建交易时(例如在 Python 中),用 int(value, 16) 解析十六进制字段。

Contract addresses

estimate.approvalAddress 与 transactionRequest.to 都指向 LI.FI Diamond 合约,这是一份部署在所有受支持链上的、经过验证和审计的智能合约。 Composer 链上 VM(执行编译后字节码者)是一份由 Diamond 在内部调用的独立合约。如需审计报告与合约验证,参见 Security and Audits。
报价反映当前市场状况,可能会过期。如果用户查看某个报价超过 30 秒,请在签名前重新获取,以取得最新的定价与模拟结果。

Morpho vault naming

Morpho vault 以其**策展人(curator)**命名,而非以 Morpho 本身命名。例如,地址 0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A 返回 symbol: "sparkUSDC",因为它是一个由 Spark 策展的 Morpho vault。这是预期行为:Morpho 提供 vault 基础设施,而像 Spark 这样的策展人在其上创建策略。

Set Token Allowance

执行之前,LI.FI Diamond 合约需要获得授权以花费你的代币。授权地址在报价响应的 estimate.approvalAddress 中返回。
如果 fromToken 是原生代币(例如 ETH),跳过此步骤。原生代币无需授权。
本指南面向后端/服务端签名,因此假定 walletClient 是用本地账户创建的(例如通过 privateKeyToAccount),这使 walletClient.account 始终有定义。如果你驱动的是浏览器注入的钱包,请用 walletClient.getAddresses()(或 requestAddresses())而非 walletClient.account 来解析地址。
如果发送了授权交易,请在执行前重新获取报价。transactionRequest 包含 gas 预估,可能在授权确认时已过期。用相同参数再次调用 GET /v1/quote,并使用新的 transactionRequest。

Send the Transaction

提交报价响应中的 transactionRequest。这是一笔标准的 EVM 交易。

Track Status

对于同链 Composer 交易,一旦交易确认,操作即完成。 对于跨链 Composer flow,轮询 /status 端点直到转移完成:
如需包含 substatus 值在内的完整状态参考,参见 Transaction Status Tracking。

Error Handling

使用 Composer 时的常见错误: 如需完整错误参考,参见 Error Codes。

Next Steps

Cross-Chain Patterns

高级跨链 Composer flow 与模式

Withdrawals Guide

实现同链与跨链取出

Vault Deposit Recipes

Morpho、Aave、Euler 等的可复制粘贴 recipe

SDK Integration

带有钩子、事件与自动重试的托管式执行

Supported Protocols

受支持协议与能力的完整列表