Skip to main content

LI.FI 消息流程文档

概览

LI.FI 消息流程支持与使用基于消息的 API(例如 Hyperliquid)而非传统链上交易的中心化和混合式交易所进行无缝交互。该流程为涉及使用链下签名消息运作的协议的跨链转账提供无 gas、无需授权的操作。 传统 DeFi 操作要求用户发送链上交易、管理 gas 费用,并为每次交互授权代币支出。消息流程通过使用链下签名消息(EIP-712)消除了这些摩擦点,这些消息通过 LI.FI 的后端基础设施中继到目标协议。

消息流程的核心优势

  • 无需代币授权:与基于交易的流程不同,消息流程不要求用户授权代币支出
  • 无 gas 操作:用户在链下签署消息,无需为消息本身支付 gas 费用(某些操作可能需要支付费用,但不是 gas)
  • 异步执行:消息被异步中继和处理,可通过 taskId 进行状态跟踪
  • 无缝集成:开箱即用地支持 LI.FI API、SDK 和 Widget

消息流程的工作原理

消息流程通过一个多步骤过程运作,用链下签名消息取代传统的链上交易:
  1. 报价/路由生成:用户使用 executionType=message(仅生成基于消息的路由)或 executionType=all(同时生成交易和消息两种选项)请求报价或路由
  2. 消息创建:LI.FI 生成一条包含操作详情的 EIP-712 类型化消息
  3. 用户签名:用户在其钱包中链下签署消息(无需 gas)
  4. 消息中继:已签名的消息被提交到 LI.FI 的 /v1/advanced/relay 端点
  5. 后端处理:LI.FI 后端验证并将消息转发到目标协议(例如 Hyperliquid)
  6. 任务跟踪:后端返回一个 taskId 用于跟踪异步操作
  7. 状态监控:可以使用 taskId 参数通过 /v1/status 端点检查状态

流程图


与交易流程的主要区别

重要参数

  • estimate.skipApproval:对于消息流程自动设置为 true,表示不需要授权交易
  • estimate.executionType:设置为 "message" 以标识使用消息流程的步骤
  • typedData:包含用户需要签署的 EIP-712 消息结构

executionType 参数

executionType 参数控制 LI.FI API 返回哪些类型的路由。此可选参数可用于:
  • GET /v1/quote
  • POST /v1/advanced/routes

取值

  • transaction(默认):仅返回使用传统链上交易的路由,排除消息流程路由
  • message:仅返回使用消息流程的路由
  • all:同时返回基于交易和基于消息的路由

用法示例

仅获取基于消息的路由:
获取所有可用路由(两种类型):

/relay 端点

POST /v1/advanced/relay

用途:提交已签名的 EIP-712 消息以中继到目标协议。 端点https://li.quest/v1/advanced/relay

请求体

请求体是一个 RelayRequest 对象,包含:
  • 步骤信息:标准的 LI.FI 步骤数据(tool、action、estimate)
  • 类型化数据:已签名的 EIP-712 消息数组
  • 签名:用户对每条消息的签名

请求 Schema

响应

成功响应200 OK):
错误响应400 Bad Request):

响应字段

  • status"ok""error"
  • data.taskId:用于跟踪消息中继操作的唯一十六进制编码标识符
  • data.code:错误代码(仅在 status 为 “error” 时出现)
  • data.message:错误消息(仅在 status 为 “error” 时出现)

使用 taskId 进行状态跟踪

中继消息后,你会收到一个唯一标识该操作的 taskId。使用它来跟踪消息处理状态。

GET /v1/status

端点https://li.quest/v1/status 查询参数
  • taskId(可选):从 /relay 端点返回的任务 ID
  • txHash(可选):交易哈希(用于传统交易)
  • toChain(可选):目标链 ID 或 key
  • bridge(可选):桥接工具标识符
  • fromChain(可选):源链 ID 或 key
注意:你必须提供 taskIdtxHash 之一。对于消息流程,请使用 taskId

请求示例

响应格式

status 端点返回转账的当前状态:

当前用途与支持的协议

消息流程目前用于与以下协议的交互:

1. Hyperliquid(主要用例)

协议Hyperliquid 操作:从 Hyperliquid 提现到 EVM 链 桥接工具hyperliquidSA 消息类型SendAsset 工作原理
  1. 用户在 Hyperliquid 现货账户中持有代币
  2. 签署一条 SendAsset 消息以提现到 EVM 链
  3. LI.FI 将该消息中继到 Hyperliquid 的 API
  4. Hyperliquid 处理提现并将代币发送到目标链

2. Unit Protocol

协议Unit Protocol 操作:通过 Unit 桥接提现到 Hyperliquid 桥接工具unit 消息类型SpotSend 链 ID
  • 来源:1337(Hyperliquid/Hypercore)
  • 目标:EVM 链、Bitcoin、Solana

支持的消息类型

Hyperliquid

LI.FI 消息流程支持两种用于 Hyperliquid 操作的 EIP-712 消息类型。每种消息类型遵循特定的结构,用于不同的操作。

1. SpotSend

用途:现货代币转账 用例:由 Unit 协议用于向 Hyperliquid 存款 桥接工具unit 消息结构

2. SendAsset

用途:DEX(现货账户)之间的资产转账 用例:用于从 Hyperliquid 提现到 EVM 链 桥接工具hyperliquidSA 消息结构
注意:所有消息都遵循 EIP-712 类型化数据标准并包含域信息:

集成指南

直接使用 API

步骤 1:获取报价/路由 使用 executionType=messageexecutionType=all 请求报价:
步骤 2:识别消息步骤 检查路由中带有 estimate.executionType === "message"estimate.skipApproval === true 的步骤。 步骤 3:签署消息 使用路由中的 typedData 向用户的钱包请求签名:
步骤 4:中继消息 将已签名的消息提交到 /relay 端点:
步骤 5:跟踪状态 使用返回的 taskId 检查状态:

最佳实践

  1. 始终检查 estimate.skipApproval:如果为 true,则跳过授权交易
  2. 验证签名:确保消息在中继之前已正确签名
  3. 存储 taskId:保存从 /relay 返回的 taskId 以便进行状态跟踪
  4. 轮询 status 端点:定期检查状态直到完成

局限性与注意事项

当前局限性

  • 支持的协议:目前仅限于 Hyperliquid 和 Unit 协议

未来增强

随着消息流程的成熟,未来可能会支持更多协议和链。有兴趣集成的协议团队可以联系 LI.FI 团队。

常见问题

问:使用消息流程需要做任何特殊操作吗? 答:不需要。如果你使用 LI.FI SDK 或 Widget,消息路由会被自动包含和处理。对于直接使用 API 的情况,设置 executionType=all 即可查看消息路由。 问:为什么我的路由带有 skipApproval: true 答:这表示该路由使用消息流程,不需要代币授权交易。 问:消息处理需要多长时间? 答:处理时间因协议而异。对于 Hyperliquid,提现通常在几秒内完成。 问:中继后可以取消消息吗? 答:一旦消息被中继并被协议接受,就无法通过 LI.FI 取消。请咨询具体协议了解其取消政策。 问:如何判断路由是否使用消息流程? 答:检查 estimate.executionType 字段。如果它是 "message",则该路由使用消息流程。

后续步骤

  • 集成:使用 LI.FI SDK、Widget 或 API 来访问消息流程路由
  • 测试:尝试使用消息流程从 Hyperliquid 进行一笔小额提现
  • 监控:使用 taskId 通过 status 端点跟踪你的操作
  • 联系:如需协议集成请求,请联系 LI.FI 团队
有关更多信息,请访问 LI.FI 文档