Skip to main content
只要验证层支持验证来自输出链的有效载荷,任何验证层都可以被添加。LI.FI intent 支持 Open Intents Framework (OIF) 所支持的任何预言机。OIF 预言机验证层需要支持以下内容:
  1. 一个提交接口,供求解器提交其已填充的输出。该提交接口应接受任意的待验证数据包,然后调用相关的输出结算合约以检查这些有效载荷是否有效。如果 提交 是通过能够证明合约调用、事件或存储而自动完成的,则可以忽略此要求。 预言机实现可以通过 IAttester 接口来验证输出是否已被填充:
  2. 实现验证接口,使得已认证(或已填充)的输出能够验证输出是否已被填充:
在实现预言机系统时,请注意以下几点:
  • 提交或接收接口不必标准化;但需要有文档说明,以便求解器能够实现它。
  • 预言机系统可以采用自动中继或手动中继。
  • 预言机系统的信任假设需要明确,以便意图签发者和求解器能够做出明智的决策。
有关更多文档,请参阅 OIF 贡献指南。这些要求规定了一个合规的 OIF 兼容预言机系统应如何运作。

已实现的验证接口

有三种类型的验证接口:
  1. 自助式(Self-serve):在此类验证接口中,提交有效载荷会生成一个链下证明,该证明必须被收集并提交到输入链上。
  2. 自动式(Automatic):在此类验证接口中,提交有效载荷会自动将相关证明送达输入链上。
  3. 同链式(Same Chain):使用输出结算为其自身生成预言机证明,从而跳过专用的预言机系统。
选择预言机系统由意图签发者决定。预言机安全性与用户输入向求解器的付款直接相关,因为用户是由求解器直接付款的。在签发意图时,重要的是求解器能够理解如何使用特定的预言机来填充意图。用户可以自由选择希望用哪个预言机系统来保障特定意图的安全,但求解器必须实现该系统,意图才能被解算。 使用 LI.FI intent 订单服务器时,它只会支持求解器在特定时刻正在报价的预言机系统。
速度与价格
某些预言机系统比其他预言机系统快得多。虽然速度不影响用户的资产交付,但它对求解器很重要。选择还款速度快的预言机系统能带来更便宜的意图,因为求解器可以更快地周转其资金。
如果预言机网络更新了其文档而未通知 LI.FI 团队,则以下文档可能已过时。请始终参考预言机系统的官方文档,以获取最准确、最新的信息。

OutputSettlerSimple

OutputSettlerSimple 是一个输出结算器,可用作同链意图的预言机。要使用 OutputSettlerSimple,请在填充输出后调用 setAttestation
如果输出结算器同时被配置为输入预言机和输出预言机,调用 setAttestation 将会公开已填充的输出,供输入结算进行验证。

Polymer

Polymer 是一个基于事件的系统,以低成本提供实时证明。其安全性基于通过 Polymer 打包的状态,区块头来源于定序器的预确认。
  • gas 成本低。
  • 延迟低,可实现快速结算。
  • Polymer 一次只能证明一个输出,因此需要在求解器端实现批量证明以优化效率。
  • 广播(Broadcast)
用于验证的目标事件是 OutputFilled,它在输出被填充时发出。
使用 Polymer 的 Prove API,可以生成该事件的证明。生成后,可以将其提交到 receivedMessage 有关获取 Polymer 证明的集成示例,请参阅 lintent.org/polymer 或所进行的 receiveMessage 调用。

Wormhole

Wormhole 是一个基于消息传递的系统,允许合约广播 VAA(Verified Action Approvals,已验证操作批准)。VAA 是由 Wormhole Guardian 网络签名的消息。
  • 通过去中心化的 guardian 集合来保障安全。
  • 支持在单个 VAA 中批量证明多个输出。
  • 与替代方案相比速度较慢。
  • 广播(Broadcast)
Wormhole 的实现基于 Wormhole 的广播功能。消息必须通过 submit 接口提交到 Wormhole Implementation。消息必须被编码为 FillDescription 然后提交:
该消息随后会被发送给 Wormhole guardian 集合。一旦相关证明可用,求解器就可以将证明提交到输入链上的 receiveMessage 来验证其意图。 获取 Wormhole VAA 有很多方式,例如 Wormholescan apiWormhole SPY
Wormhole 的实现出于节省 gas 的目的,使用了比 Wormhole 的 Implementation.sol 效率高得多的验证算法。

Hyperlane

Hyperlane 是一个高度可定制的、基于消息传递的系统,允许合约通过选定的链间安全模块(ISM)发送和接收经过验证的消息。
  • 高度可定制的安全模块。
  • 支持在单条消息中批量证明多个输出。
  • 强抗审查保证。
  • 自动或手动中继。
Hyperlane 的实现基于 Hyperlane mailbox 上的 dispatch 函数。要配置 Hyperlane 中继,请在调用 submit 时提供相关的 customHookcustomHookMetadata
有关 dispatch hooks 的更多信息,请参阅 Hyperlane 文档 由于 Hyperlane 是一个高度可定制的系统,具体所需的交互会因所选的 ISM 和中继方式而有很大差异。有关更多信息,请参阅 Hyperlane 文档 Chainlink CCIP 是一个基于消息传递的系统,允许合约通过 Chainlink 预言机发送和接收经过验证的消息。
  • 通过 Chainlink 的预言机网络来保障安全。
  • 支持在单条消息中批量证明多个输出。
  • 符合 SOC2 和 ISO 27001 标准
Chainlink CCIP 的实现基于带有 EVM2AnyMessage 的 CCIP router ccipSend。要将已填充的输出提交到 CCIP 预言机,首先调用报价端点 getFee 来估算消息传递费用。然后调用 submit,连同所需费用一起将消息发送到输出链。如果使用 ERC20 代币支付费用,请先批准代币转账。
CCIP 是自动的,一旦提交,Chainlink 就会将消息中继到输入链。

Axelar

Axelar 是一个基于消息传递的系统,允许合约发送和接收由 Axelar 的 Proof of State 网络验证的消息。
  • 通过 Axelar 的 Proof of State 网络来保障安全。
  • 支持在单条消息中批量证明多个输出。
  • 自动中继。
Axelar 的实现基于 Axelar Gateway 的 callContract 函数。要将已填充的输出提交到 Axelar 预言机,首先使用 gasService 来估算费用。然后调用 submit,连同所需费用一起将消息发送到输出链。
Axelar 是自动的,一旦提交,Axelar 就会将消息中继到输入链。

LayerZero

LayerZero 是一个安全性可定制的、基于消息传递的系统,允许合约通过一组选定的去中心化验证网络(DVN)发送和接收经过验证的消息。
  • 可定制的安全性
  • 广受欢迎且链兼容性广泛。
  • 支持在单条消息中批量证明多个输出。
  • 费用较高
LayerZero 的实现基于 LayerZero endpoint 上的 send。要将已填充的输出提交到 LayerZero 预言机,首先使用 quote 函数来估算费用,然后连同所需费用一起调用 submit,将消息发送到输出链。
LayerZero 是自动的,一旦提交,LayerZero 就会将消息中继到输入链。

Bitcoin

LI.FI Intents 拥有一个 Bitcoin 简化支付验证(SPV)客户端实现。该实现既可作为输出结算实现,也可作为验证层。 Bitcoin SPV 客户端需要持续维护。区块链必须大约每 10 分钟更新一次,或者在需要证明某笔交易时更新,以正确验证交易。 要生成交易证明,请参阅下面的代码: