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

如何请求路由

首先,这是一个简单的示例,演示如何请求路由,将 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 对象。您必须提供 fromAmount 或 toAmount 其中之一,但不能同时提供两者。以下是 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 对象,它包含请求目标合约调用报价所需的所有信息。 合约调用报价请求可以视为报价请求的扩展,除了下面提到的参数外,其他报价参数 部分中列出的所有参数(例如 integrator、fee、slippage 等)在使用 getContractCallsQuote 时也可用。 合约调用对象数组。

Route 和 Quote 之间的区别

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