订单服务器向意图发起者提供报价。这些报价基于解算器提供的可用库存。解算器可以定期将其库存作为路由推送到订单服务器,而不是响应每个报价请求。
// POST /quotes/submit
interface Body {
quotes: Quote[]
}
interface Quote {
expiry: number;
fromChainId: string;
fromAsset: string;
fromDecimals: number;
toChainId: string;
toAsset: string;
toDecimals: number;
ranges: QuoteRange[];
maxToAmount?: bigint;
exclusiveFor: string;
}
interface QuoteRange {
minAmount: string;
maxAmount: string;
quote: string;
}
提供报价时,有一些重要的考虑因素需要记住:
- expiry 是用户端的报价过期时间,而不是解算器端的过期时间。如果用户请求一个30秒的意图,只有在30秒后过期的报价才会被返回。
- fromDecimals 和 toDecimals 不进行验证,仅用于将报价转换为实际汇率之间的资产。
- maxToAmount 只需要在解算器不想一次报价其全部库存时提供。在单个报价中,这是发行的最大分配。如果未提供,将使用 max(quoteRange.maxAmount) 代替。
- ranges 是解算器可以填充资产的描述列表。报价应包括燃气费用。
以下代码块提供了一个从 Optimism 到 Arbitrum 的 USDC 的示例报价。
{
"quotes": [{
"expiry": 1757673110,
"fromChainId": "10",
"toChainId": "42161",
"fromAsset": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
"toAsset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"fromDecimals": "6",
"toDecimals": "6",
"ranges": [
{
"minAmount": "10",
"maxAmount": "100",
"quote": "0.95",
},
{
"minAmount": "100",
"maxAmount": "10000",
"quote": "0.995",
},
{
"minAmount": "10000",
"maxAmount": "50000",
"quote": "0.99",
}
]
}]
}
您可以通过发送新报价来覆盖旧报价为了避免解算器发送短暂的报价,订单服务器在收到新报价时会覆盖现有报价。这允许您拥有长期有效的报价,并且只在市场变化时更新它们。如果您发送的报价的过期时间在过去,它仍然会覆盖旧报价并立即过期。
通过这种方式广播报价,解算器可以:
- 高效地沟通其跨多个链和代币对的可用流动性。
- 设定自己的定价和费用结构。
- 定义他们愿意处理的交易大小的限制。
- 随着市场条件的变化更新他们的报价。
订单服务器使用广播的报价来匹配用户请求,而无需实时查询解算器,从而实现更快的响应和更少的开销。
将报价提交至 /quotes/submit。
链 & 资产支持
订单服务器使用报价来确定支持的链和资产。这允许解算器仅通过为它们生成报价来添加对新链和资产的支持。
信任组件
LI.FI 意图是基于四个组件的模块化系统:输出结算者、输出预言机、输入预言机和输入结算者。这些组件的交互方式可能有所不同。因此,对订单服务器来说,了解解算器支持哪些组件是很重要的。
// POST /quotes/trustComponents
interface Body {
trustedComponents: Component[]
}
interface Component {
address: string;
chainId: string;
forInput: bool;
forOutput: bool;
role: "settler" | "oracle"
}
某些地址可能既可作为输入组件也可作为输出组件,因此必须明确提供兼容性。一些常见的观察结果:
- 一些预言机根据起源链有不同的获取证明方式。如果预言机的
forInput 为真,这意味着解算器知道如何交付证明。如果预言机的 forOutput 为真,这意味着解算器知道如何生成证明。对于没有 inputOracle 的预言机(例如,Polymer),使用它们的 outputOracle 作为描述符。
- 输入结算者和输出结算者不是同一种合约类型。在大多数情况下,要么只设置
forInput,要么只设置 forOutput。
将来可能会添加更多角色。
虽然订阅订单服务器的 WebSocket 事件不需要认证,但使用订单服务器的 API 服务则需要认证。解算器认证将解算器的 api 请求与它们的链上执行联系起来,允许订单服务器分配信誉评分。
API 密钥可以在 LI.FI 解算器 UI 上找到。使用 API 密钥,解算器可以:
- 推送报价:使用
/quotes/submit 端点将库存报价提交给订单服务器
- 注册账户:将填充的意图与您的解算器关联,允许订单服务器跟踪您的表现。这是为您的解算器分配独家订单的关键。
API 密钥应在 x-api-key 头中提供。
要了解更多关于 LI.FI 解算器 UI 的信息,请访问 订单服务器信誉部分。