跳转到主要内容
LI.FI 意图支持四种订单类型:简单限价订单、荷兰式拍卖、独家限价订单和独家荷兰式拍卖。每个意图输出编码特定的订单类型。通常,所有输出应该是相同的订单类型。 对于具有多个输出的订单,第一个输出的求解器将始终是输入的接收者。在填充所有输出之前,无法索取输入。_拍卖_在链上进行,获胜者由速度决定。

限价订单(先到先得)

LI.FI 意图限价订单很简单:单一价格,首次执行。这意味着 OutputDescription 中设置的金额是最终的,将是您支付的金额。每个 orderId 可以填充一次输出(输出被哈希并存储在带有 orderId 的映射中)。 订单的获胜者是第一个调用 fill(...) 并为输出设置其标识符的求解器。 您可以通过 output.context0x 或订单类型 0x00 来识别限价订单。

荷兰式拍卖

LI.FI 意图荷兰式拍卖是有上限的荷兰式拍卖。它们在某些时间戳之前和之后的价格是固定的。斜率、startTime 和 stopTime 编码在 output.context 中。 订单的获胜者是第一个调用 fill(...) 并将其标识符设置为输出的求解器。请注意,获胜选择等同于限价订单,除了填充调用越早,求解器支付的越多。 您可以通过订单类型 0x01 识别荷兰式拍卖。上下文编码为:bytes1(0x01) | uint32(startTime) | uint32(stopTime) | uint256(slope),最终金额计算为:
uint32 currentTime = max(block.timestamp, startTime);
if (stopTime < currentTime) return amount;
uint256 timeDiff = stopTime - currentTime;
return amount + slope * timeDiff;
拍卖的最大金额是 amount + (stopTime - startTime) * slope 您可以在此处找到链上实现
I