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/quotePOST /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

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

Contract addresses

estimate.approvalAddresstransactionRequest.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

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