Skip to main content
LI.FI SDK 提供了请求路由和报价以及执行它们的功能。本指南将引导您完成使用 getRoutesgetQuote 函数发出请求的过程。

如何请求路由

首先,这是一个简单的示例,演示如何请求路由,将 Arbitrum 上的 10 USDC 桥接并交换为 Optimism 上的最大数量的 DAI。
当您请求路由时,会收到一个路由对象数组,其中包含确定采用哪条路由进行交换或桥接转账的基本信息。在此阶段,不包含交易数据,必须单独请求。阅读更多 执行路由/报价 此外,如果您只想收到我们的智能路由 API 可以提供的一个最佳选项,那么使用 getQuote 请求报价可能会更好。

路由请求参数

getRoutes 函数需要一个 RoutesRequest 对象,它指定所需的 任意到任意 转账,并包含计算最有效路由所需的所有信息。

参数

以下是 RoutesRequest 接口的参数及其描述:

路由选项

RouteOptions 接口允许进一步自定义路由请求。以下是 RouteOptions 接口的参数及其描述:

Allow/Deny/Prefer

AllowDenyPrefer 接口用于指定桥接或交易所的偏好。使用 allow 选项,您可以允许工具,并且仅使用这些工具来查找最佳路由。在 deny 中指定的工具将被列入黑名单。 您可以在 列表:链、桥接、DEX 聚合器、解算器 中找到所有可用的键,或从 API 获取可用选项。参见 链和工具 以下是 AllowDenyPrefer 接口的参数:

Timing

Timing 接口允许您指定路由执行时序的偏好。这有助于根据时序策略优化请求的性能。 Timing 接口的参数:

时序策略

这有助于根据特定条件优化请求的时序。
您可以实现 自定义时序策略,通过控制路由执行的时序来改善用户体验并优化应用程序的性能。

请求报价

当您请求报价时,我们的智能路由 API 会提供最佳可用选项。报价包含发起交换或桥接转账所需的所有必要信息和交易数据。 您可以通过指定 fromAmount(要发送的金额)或 toAmount(要接收的期望金额)来请求报价。当用户知道他们想花多少时使用 fromAmount,当他们知道他们想接收多少时使用 toAmount 这是一个简单的示例,演示如何请求报价,将 Arbitrum 上的 10 USDC 桥接并交换为 Optimism 上的最大数量的 DAI。

报价请求参数

getQuote 函数需要一个 QuoteRequest 对象。您必须提供 fromAmounttoAmount 其中之一,但不能同时提供两者。以下是 QuoteRequest 接口的参数。

其他报价参数

除了上述参数外,路由选项 部分中列出的所有参数在使用 getQuote 时也可用,allowSwitchChain 除外,它专门用于控制路由请求中的链切换。 此外,用于指定允许、拒绝或优先某些桥接、交易所和协议选项的参数名称略有不同:
  • allowBridges (string[], 可选)
  • denyBridges (string[], 可选)
  • preferBridges (string[], 可选)
  • allowExchanges (string[], 可选)
  • denyExchanges (string[], 可选)
  • preferExchanges (string[], 可选)
  • allowProtocols (string[], 可选)
  • denyProtocols (string[], 可选)
此外,您可以使用 swapStepTimingStrategies 参数为交换步骤指定 时序策略
  • swapStepTimingStrategies (string[], 可选) 指定交换步骤的时序策略。此参数允许您定义请求应等待结果的时长并管理预期结果。格式为:

请求合约调用报价

除了请求一般报价外,LI.FI SDK 还提供了请求目标合约调用报价的功能。 Composer 文档 中阅读更多内容。有关特定于 SDK 的 Composer 集成,请参阅 SDK Composer 集成指南 这是一个简单的示例,演示如何请求报价,使用来自 Optimism 的 ETH,在 Base 链上桥接并购买 OpenSea 市场上价值 0.0000085 ETH 的 NFT。此示例的调用数据是使用 OpenSea Seaport SDK 获取的。

合约调用报价请求参数

getContractCallsQuote 函数需要一个 ContractCallsQuoteRequest 对象,它包含请求目标合约调用报价所需的所有信息。 合约调用报价请求可以视为报价请求的扩展,除了下面提到的参数外,其他报价参数 部分中列出的所有参数(例如 integratorfeeslippage 等)在使用 getContractCallsQuote 时也可用。 合约调用对象数组。

RouteQuote 之间的区别

尽管 RouteQuote 术语都属于为您提供进行交换或桥接转账的最佳选项这一领域,但您需要注意一些区别。 LI.FI 中的 Route 表示一个详细的转账计划,可能包含 多个步骤。每个步骤对应一笔单独的交易,例如交换代币或在链之间桥接资金。这些步骤必须按特定顺序执行,因为每个步骤都取决于上一个步骤的输出。Route 为涉及多个操作的复杂转账提供了详细的路径。 相比之下,Quote 是一个 单步 交易。它包含一次性执行转账所需的所有必要信息,无需任何额外步骤。Quote 用于较简单的交易,其中单个操作(例如代币交换或跨链转账)就足够了。因此,虽然 Route 可能涉及多个步骤来完成转账,但 Quote 始终只表示一个步骤。