跳转到主要内容

延迟的来源以及 LI.FI 路由的工作原理

LI.FI 的路由引擎聚合来自多个桥接器和去中心化交易所(DEX)的报价。此过程涉及对外部协议和工具的实时请求,包括:
  • 桥接器和 DEX 聚合器
  • 用于安全性和执行检查的链上模拟
  • 可能引入自己延迟的链下服务
延迟可能因查询的提供商数量、这些提供商的响应速度以及是否启用链上模拟而异。 LI.FI 路由流程包括两个主要组件:
  1. 交换步骤解析 – 从 DEX 获取报价。
  2. 路由组合 – 组合交换和桥接以构建最佳跨链路径。
这两个步骤都涉及第三方系统并引入潜在的延迟。默认情况下,LI.FI 会在返回最佳可用结果之前等待短时间的响应。但是,集成商可以配置时间策略以更好地控制此行为。

优化响应时间

您可以通过自定义以下内容来优化接收报价的速度:

/quote/routes 之间选择

  • 使用 /quote 以获得更快的响应。它返回单个最佳路由。它将路由查找和交易生成合并到单个调用中,从而减少客户端到服务器的延迟。
  • 使用 /routes检索多个路由选项。这些调用非常快,可以快速向用户显示结果。为了执行其中一条路由,需要调用 /stepTransaction 以生成交易数据。

禁用模拟

  • 默认情况下,带有交易数据的响应包括链上模拟检查。
  • 为了提高速度,将模拟选项设置为 false。您将 skipSimulation 标志作为查询参数传递给 /quote/stepTransaction 端点:
    /v1/advanced/stepTransaction?skipSimulation=true
    
    /v1/quote?skipSimulation=true&...
    
  • 注意:禁用模拟会减少验证,但会提高响应时间。如果您在系统中以任何方式模拟/估算 gas,则特别建议使用此选项。

选择时间策略

LI.FI 允许您使用时间策略来控制它等待结果的时间。它们不是仅指定超时,而是允许更高级的配置,以确保考虑多个工具的结果。 在生成路由时,时间策略以两种方式应用:
  • swapStepTimingStrategies:在请求同链交换时应用
  • routeTimingStrategies:应用于可以由多个工具组成的完整路由(例如,交换+桥接)

时间策略格式

时间策略由以下属性组成:
{
  "strategy": "minWaitTime",
  "minWaitTimeMs": 600,
  "startingExpectedResults": 4,
  "reduceEveryMs": 300
}
  • strategy: 目前只存在 minWaitTime
  • minWaitTimeMs: 等待响应的最短时间(例如 600 毫秒)
  • startingExpectedResults: 预期报价的数量(例如 4)
  • reduceEveryMs: 降低期望的频率(例如每 300 毫秒)
当应用此策略时,我们给所有工具 600 毫秒(minWaitTimeMs)来返回结果。如果我们在此期间收到 4 个或更多(startingExpectedResults)结果,我们将返回这些结果,而不等待其他工具。
如果少于 4 个结果,我们再等待 300 毫秒并检查现在是否至少有 3 个结果。

在 API 调用中传递策略

POST /v1/advanced/routes 请求中:
{
  ...
  "options": {
    "timing": {
      "swapStepTimingStrategies": [
		{
          "strategy": "minWaitTime",
          "minWaitTimeMs": 600,
          "startingExpectedResults": 4,
          "reduceEveryMs": 300
        }
      ],
      "routeTimingStrategies": [
		{
          "strategy": "minWaitTime",
          "minWaitTimeMs": 1500,
          "startingExpectedResults": 6,
          "reduceEveryMs": 500
        }
      ]
    }
  }
}
GET /v1/quote 请求中:
/v1/quote?...
  &swapStepTimingStrategies=minWaitTime-600-4-300
  &routeTimingStrategies=minWaitTime-1500-6-500
这些示例中传递的策略是我们应用的默认策略。

时间策略示例

最大化结果
即使需要更长时间,也会返回最佳路由:
{
  "strategy": "minWaitTime",
  "minWaitTimeMs": 900,
  "startingExpectedResults": 5,
  "reduceEveryMs": 300
}
平衡方法
等待适度的时间以返回速度和完整性的混合:
{
  "strategy": "minWaitTime",
  "minWaitTimeMs": 900,
  "startingExpectedResults": 1,
  "reduceEveryMs": 300
}
最快响应
返回第一个可用结果,无延迟:
{
  "strategy": "minWaitTime",
  "minWaitTimeMs": 0,
  "startingExpectedResults": 1,
  "reduceEveryMs": 300
}
限时返回(超时)
返回在固定时间限制内收到的任何结果:
{
  "strategy": "minWaitTime",
  "minWaitTimeMs": 900,
  "startingExpectedResults": 0,
  "reduceEveryMs": 0
}
时间策略仅用于 LI.FI 等待第三方提供商响应的时间,LI.FI API 的总响应时间将是往返时间+解析+策略+模拟的总和。
I