Skip to main content
作为跨链生态系统中的求解器,你可能关注以下方面:
  • 获取可靠的订单流
  • 尽量缩短用户托管解锁时间以降低库存需求
  • 在流动性来源方面拥有灵活性

LI.FI Intents 如何提供帮助

  • 直接访问 LI.FI 庞大的订单流
  • 可自由使用任何流动性来源 进行解算(例如 DEX、CEX 或你自己的库存)
  • 用户托管解锁时间快(通常少于 2 分钟)
  • 较低的资金需求,得益于快速的还款周期

解算意图

LI.FI Intents 是一个完全无需许可的系统。由于该系统是组件化的,且各组件与其他组件之间没有固有的信任关系,因此用户可以按需混合搭配它们。因此,重要的是你在收到订单后要对其进行完整验证。总体流程如下:
  1. 发起人签署与 LI.FI intent 兼容的锁,并将其发送到 LI.FI 订单服务器。
  2. LI.FI 订单服务器对订单进行初步验证,并获取该订单的分配者共同签名。然后将其广播给求解器。
  3. 求解器将订单的输出提交到输出结算合约,从而启动预言机系统。
    输出结算output.settler 表示。
  4. 证明通过验证层被送达输入链。
    预言机系统 在订单结构中以 localOracleoutput.oracle 表示。
  5. 求解器将订单提交到输入结算合约,验证交付并解锁相关的输入代币。

订单类型

LI.FI 使用三种订单结构,从最简略到最详尽排列:
  1. BatchClaim:一个已签名的意图,允许领取输入资产。
  2. StandardOrder:一个链上定义,包含足以传达意图的信息。
  3. 订单服务器响应:一个经过补全的订单,包含可能对求解器有帮助的额外信息。
除非你要验证订单签名,否则你不会与 BatchClaim 交互。所有链上交互都使用 StandardOrder 来统一接口。然而,StandardOrder 并不包含足以填充意图的信息。因此,它会在链下用 InputSolversignatures 等信息进行补全。

收集订单

LI.FI Intents 提供两种接收订单的方式:
  1. 推荐:通过 WebSocket 连接到订单服务器。
  2. 备选:通过存款接口监控链上存款。
对于大多数求解器而言,订单服务器是推荐的集成面。不过,如果你对最低延迟、去中心化且无需许可的订单发现感兴趣,你可以在链上读取一些订单。并非所有订单都能在链上被发现。无论来自哪种来源,你都将收到一个 StandardOrder 以及其他填充细节,以便在所有 VM 上提交:
其中 uint256[2][] inputs === [uint256 tokenId, uint256 amount][]MandateOutput 为:
有关收集订单的更多信息,查看订单收集指南 →

填充意图

要填充意图,必须执行所有 MandateOutput。每个 MandateOutput 都是一个自包含的执行描述。
  • output.settler 连同其相关 context 定义了执行,应在其接口上进行调用。目前只实现了一个 OutputSettler:OutputSettlerSimple.sol,它有两个用于填充的接口:
有关填充意图的更多信息,查看填充订单指南 →

验证填充

填充意图后,必须将填充证明发送到输入链。用于该订单的预言机系统通过 localOracleoutput.oracle 指定。二者应相匹配。然而,验证已填充的输出高度依赖于具体的预言机。有关更多信息,请参阅预言机系统架构

结算订单

最后,意图必须在其到期之前完成结算。这是通过在指定的 InputSettler 上调用 finalise[withSignature] 来实现的。调用者必须是填充时设定的指定求解器。
有关结算订单的更多信息,查看订单结算指南 →