限价订单(先到先得)
LI.FI intent 限价订单很简单:单一价格、先执行。这意味着OutputDescription 中设置的金额是最终金额,也就是你将要支付的金额。每个 orderId 的输出只能被填充一次(输出会被哈希并与 orderId 一起存储在映射中)。
订单的赢家是第一个调用 fill(...) 并为该输出设置其标识符的求解器。
你可以通过 output.context 为 0x 或订单类型 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 开始之前,因此如果该意图由独占求解器填充,他们将支付拍卖的最高价格。
