Skip to main content
LI.FI Intents 支持四种订单类型:简单限价订单、荷兰式拍卖、独占限价订单和独占荷兰式拍卖。每个意图输出都编码了一种特定的订单类型。一般来说,所有输出都应为同一种订单类型。 对于包含多个输出的订单,第一个输出的求解器将始终是输入的接收者。在所有输出都被填充之前,输入无法被领取。拍卖 在链上进行,赢家由速度决定。 LI.FI intents 的主要订单类型是独占限价订单,它是 LI.FI widget 和大多数其他集成商所采用的类型。

限价订单(先到先得)

LI.FI intent 限价订单很简单:单一价格、先执行。这意味着 OutputDescription 中设置的金额是最终金额,也就是你将要支付的金额。每个 orderId 的输出只能被填充一次(输出会被哈希并与 orderId 一起存储在映射中)。 订单的赢家是第一个调用 fill(...) 并为该输出设置其标识符的求解器。 你可以通过 output.context0x 或订单类型 0x00 来识别限价订单。

独占限价订单

LI.FI intent 独占限价订单与 LI.FI intent 限价订单非常相似。单一价格、先执行。不同之处在于它内嵌了一个截止时间戳,只允许特定的求解器在此之前填充该意图。这种类型的意图通常与 LI.FI 订单服务器的信誉机制结合使用,以消除因失败交易而浪费的 gas。 你可以通过订单类型 0xe0 来识别独占限价订单。其 context 编码为:bytes1(0xe0) | bytes32(exclusiveFor) | bytes4(startTime),其中 startTime 是任何人都可以填充该订单的时间。 对于意图签发者,建议将独占期设置为 30 秒到 1 分钟之间,但它可以更短或更长。

荷兰式拍卖

LI.FI intent 荷兰式拍卖是有上限的荷兰式拍卖。它们在特定时间戳之前和之后价格固定。slope、startTime 和 stopTime 编码在 output.context 中。 订单的赢家是第一个调用 fill(...) 并将其标识符设置为该输出的求解器。请注意,赢家的选择方式与限价订单相同,只是调用 fill 的时间越早,求解器支付的越多。 你可以通过订单类型 0x01 来识别荷兰式拍卖。其 context 编码为:bytes1(0x01) | uint32(startTime) | uint32(stopTime) | uint256(slope),最终金额计算如下:
拍卖的最大金额为 amount + (stopTime - startTime) * slope 你可以在此处找到链上实现

独占荷兰式拍卖

LI.FI intent 独占荷兰式拍卖与 LI.FI intent 荷兰式拍卖非常相似。不过,在拍卖 slope 开始之前,该订单对某个特定求解器是独占的,就像独占限价订单一样。 你可以通过订单类型 0xe1 来识别独占荷兰式拍卖。其 context 编码为 bytes1(0x01) | bytes32(exclusiveFor) | uint32(startTime) | uint32(stopTime) | uint256(slope) 需要明确的是,独占窗口在荷兰式拍卖 slope 开始之前,因此如果该意图由独占求解器填充,他们将支付拍卖的最高价格。