Skip to main content
订单服务器向意图发起方提供报价,这些报价由求解器已发布的库存构建而成。您无需回应每一次报价请求,而是将您的库存作为路由推送到订单服务器,并随着市场变化刷新它。
在提供报价时,有一些重要的注意事项需要牢记:
  • expiry 是用户侧的报价过期时间,而非求解器侧的过期时间。如果用户请求一个 30 秒的意图,则只返回在 30 秒后过期的报价。
  • fromDecimals 和 toDecimals 不会被订单服务器验证;它只用这两个值将报价作为真实汇率在资产之间进行换算。
  • ranges 列出了您愿意成交的价格档位,每个输入金额区间对应一档。您的价格应包含 gas 成本。
  • quote 按普通价格书写——不要按小数位缩放,订单服务器会为您应用 fromDecimals/toDecimals。
  • integratorKeyHash(若设置)会使该报价只对携带匹配 X-Integrator-Key 的请求可见;若省略,该报价只服务于不带密钥的(公开市场)请求。
下面的示例给出了一个从 Optimism 到 Arbitrum 的 USDC 报价。
您可以通过发送新报价来覆盖旧报价为了避免求解器发送短期报价,订单服务器每次收到新报价时都会覆盖现有报价。这允许您拥有长期报价,并仅在市场演变时更新它们。如果您发送的报价的过期时间在过去,它仍会覆盖旧报价并立即过期。
通过以这种方式广播报价,求解器可以:
  • 发布他们在众多链和代币对上拥有的流动性。
  • 设置自己的定价和费用结构。
  • 设定他们愿意承接的交易规模。
  • 随着市场条件的变化更新其报价。
订单服务器使用广播的报价来匹配用户请求,而无需实时查询求解器,从而实现更快的响应和更少的开销。 将报价提交到 /quotes/submit。

Solana 路由

Solana 路由的报价使用相同的 schema,但有三点不同:
  • fromChain / toChain 采用纯网络 id 字符串(Solana 主网为 "1151111081099710",devnet 为 "1151111081099712")——而不是注册和支持合约端点所用的、带 solana: 前缀的 CAIP-2 id。
  • 资产使用链原生格式:Solana 上是 base58 铸币地址,EVM 上是十六进制。
  • exclusiveFor 是有权领取输入的求解器身份,因此它使用输入链的地址格式。对于 Solana → EVM,请提交求解器的 base58 格式 Solana 公钥;订单会将其原始 32 字节编码进 EVM 输出的 context 中。
下面的示例给出了一个从 Solana 主网到 Base 的 USDC 报价:

支持的合约

“支持的合约”仍处于实验阶段。标准报价请求不需要这些声明。如果您正在与我们合作处理集成商合约白名单、自定义结算器或预言机,我们会告知您需要提供哪些条目。
LI.FI Intent 是一个基于四个组件的模块化系统:output settler、output oracle、input oracle 和 input settler。您与它们的交互方式因组件而异。因此,订单服务器需要知道每个求解器支持哪些组件——您的报价只对您所声明集合覆盖的路由有效。
PUT 会替换整个集合,因此每次更新时都要包含您支持的所有合约。 对于 Solana,请使用 CAIP-2 的 solana:<id> 链和 base58 程序 id,在相同的三种角色(oracle、inputSettler、outputSettler)下声明您支持的程序。

注册账户

注册您用来填充的每一个账户——EVM 和 Solana 皆需——以便订单服务器能将您的链上活动关联到您的求解器身份,用于信誉跟踪。注册通过对一条服务器签发的消息进行签名来证明您对该账户的所有权:
1

获取一次性消息

GET /api/v1/solver/register/message 返回 Register account for solver <solverId>. Nonce: <uuid>.——24 小时内有效,仅可使用一次。
2

用该账户的密钥签名

EVM 账户将其签名为标准的以太坊个人消息——即 EIP-191,也就是钱包 signMessage 产生的格式——以十六进制编码;智能合约钱包则使用 EIP-1271 签名。Solana 账户用 ed25519 对原始消息字节签名,并将签名进行 base58 编码。
3

提交注册

将账户、CAIP-2 链、消息和签名提交到 POST /api/v1/solver/register。
一个账户只能被一个求解器注册(如果已被占用则返回 403);POST /api/v1/solver/unregister 可以将其移除。无论结果如何,该消息在第一次 POST 尝试时即被消耗——如果注册失败,请在重试前获取新的消息。
将密钥和 API 密钥保存在环境变量或密钥存储中——切勿放在客户端代码或版本控制中。

认证

Solver API 端点需要通过 x-api-key 请求头传递的 API 密钥。您的 API 密钥将您的报价与您的解算器关联起来,使订单服务器能够跟踪您是否填充了您赢得的订单。请参阅声誉。 有关注册和密钥管理的详细信息,请参阅认证。