Skip to main content
LI.FI 意图系统将意图流程中的三个组件模块化:
  1. 输入结算器 – 处理源链资金。
  2. 输出结算器 – 处理目标链资金。
  3. 预言机系统 – 使输出结算声明可用于输入结算器。
LI.FI Intent Calls Diagram 从历史上看,这些组件一直交织在一起,这带来了扩展方面的挑战。组件化的方法带来了更大的灵活性和可扩展性,使得不同的输入和输出结算方案以及验证层能够混合搭配。

输入结算

输入结算方案管理用户存款,并在意图完成后将资金释放给求解器。LI.FI Intents 目前支持两种输入结算方案: 意图系统对输入结算的实现没有任何限制。输入结算可以通过调用 efficientRequireProven 经由验证层访问已证明的输出。如果一个订单包含多个输出,且这些输出由不同的求解器填充,则订单规范中第一个输出的填充者被视为规范求解器。 了解有关输入结算的更多信息 →

输出结算

输出结算方案处理目标链上资产的交付。它不强制要求任何接口、订单结构或订单类型,只要求必须提供一个用于验证有效载荷的接口:
这使得输出结算方案极为灵活;只要已填充的订单能够表示为一个不透明的字节数组,它就可以支持任何虚拟机上的任何订单类型。 意图系统的初始版本使用 MandateOutput,其编码方式由 MandateOutputEncodingLib.sol 描述。 如果输入结算能够验证此调用,就可以将输入相应地支付给求解器。然而,这些信息仅存在于输出链上的输出结算中。 了解有关输出结算的更多信息 →

预言机系统

预言机系统将有效载荷从输出链传递到输入链。它充当确认输出交付已发生的桥梁。 只要验证层支持验证来自远程链的有效载荷,任何验证层都可以被添加。目前可用的验证层包括: 在发出消息之前,预言机应检查一个或多个有效载荷是否有效,然后将它们发送到输入链:
预言机可以使用自定义的消息编码、自定义的中继属性、自定义的接口或其他特殊的集成事项。预言机内部的消息传递未做标准化。 在输入链上,预言机系统应通过虚拟机本地哈希来验证有效载荷:
仅使用有效载荷哈希使系统更高效,因为传递的数据更少。系统未尝试对有效载荷进行标准化。因此,输入和输出结算层之间可能存在不兼容的情况。 了解有关验证层的更多信息 →

安全假设

意图系统包含资源锁,这在关键参与者之间建立了信任边界: 没有任何单一参与者能够独立获取资金,从而为跨链交易创造了一个安全的环境。 有关安全性和意图验证的更多信息,请参阅 order-validation →

集成点

LI.FI intent 被设计为高度可组合,不同组件可以根据需要进行替换:
  • 输入结算:可以集成新的资源锁标准和标准意图接口。
  • 输出结算:可以添加新的订单类型和履约机制。
  • 预言机系统:可以支持不同的跨链消息传递协议和证明层。
集成商(Integrators)可以自由选择在哪些交换中使用哪些组件。这为意图签发者提供了最大的灵活性,以描述他们所期望的最终状态。

同链意图

LI.FI Intents 专为可组合的跨链交换而设计,同时也在兼容的封装中支持同链意图。在同链模式下,输出结算器可以充当预言机路径。 要将 LI.FI Intents 用于同链交换,请将输出结算器同时配置为输入预言机和输出预言机。填充同链意图的求解器可以选择使用回调,在交付输出之前接收输入。
Same Chain Intent without Callback

Same Chain Intent

Same Chain intent with Callback

Same Chain Intent with callback

要在交付输出之前接收输入,你的求解器必须支持 orderFinalised。当使用回调接收输入时,重要的是在回调内部对意图输出执行 fill 和 setAttestations。
有关同链回调的更多信息,请参阅同链测试用例。 有关同链意图的更多信息,请参阅将输出结算器用作预言机

智能合约

目前维护中的 LI.FI Intent 部署如下所列。在 EVM 链上,合约部署到相同的地址(通过无密钥的 CREATE2 factory),并且可以无需许可地部署到新的 EVM 链上。

EVM

  • Input Settler Escrow: 0x000025c3226C00B2Cdc200005a1600509f4e00C0
  • Output Settler: 0x0000000000eC36B683C2E6AC89e9A75989C22a2e
  • Polymer Oracle Mainnet: 0x0000003E06000007A224AeE90052fA6bb46d43C9
  • Polymer Oracle Testnet: 0xC401b53377b8A71A7cEB820e6a4dC53832343a90

Tron

  • Input Settler Escrow: TXmVLCXzrhzmeCfchDPTmFF6Qe7rg3H7Kk
  • Output Settler: THWDD3umarircbqo8jXxVazbpJnE25VjhN
  • Polymer Oracle: TCeNWukZUoTSrgWZEMpn9X8C5NtV8Rsy6c