跳转到主要内容
订单服务器缓存来自求解器网络的报价。在开启订单之前,调用 POST /api/v1/integrator/quote/request 来获取意图的定价。 使用订单服务器获取报价是可选的,但推荐使用。它将意图与求解器的常驻报价进行匹配,并提供更强的执行保证。 无需身份验证。您可以选择性地传入 X-Integrator-Key 请求头:设置该头后,订单服务器只会返回标记给该密钥的求解器报价。它不会包含公开市场报价,也不会回退到公开市场报价,因此如果没有求解器为您的密钥标记过报价,您将得不到任何报价。

请求格式

每一个用于标识账户或资产的字段,都是一个原生地址加上一个 CAIP-2 链 id(Base 为 eip155:8453,Tron 为 tron:728126428,Solana 主网为 solana:1151111081099710)。下面的示例请求从 Base 到 Arbitrum 的 USDC 报价(exact-input):
如果没有匹配的求解器报价,响应会是 200 且 "quotes": [],而不是错误。

请求字段

请求的结构在所有链上都相同——下面的示例只是替换了 chain 值和地址格式。

Solana 请求

Solana 使用 solana:1151111081099710(主网;devnet 为 solana:1151111081099712)和 base58 地址。以下是一个从 Solana 到 EVM 的示例:
完整的 Solana 差异列表见 Solana vs EVM。 关于请求字段有两条 Solana 专属的规则:
  • Solana 一端请使用 solana: 命名空间。 如果 Solana 一端使用 eip155: 报价,会被拒绝——而且错误信息描述的是该资产的编码问题(一个十六进制格式或 bytes32 相关的抱怨,具体取决于地址给出的方式),而不是真正导致问题的命名空间错误。
  • 接收方必须是曲线上的钱包公钥。 对于 Solana 输出,API 会拒绝将 PDA 或其他不在曲线上的地址用作 receiver。

Tron 请求

Tron 使用 tron:728126428 和 base58 格式的 T… 地址(也接受带 0x 前缀的 20 字节十六进制;响应始终以 base58 渲染)。以下是一个从 Tron 到 EVM 的示例:
Tron 仅支持 Escrow 结算——没有 Compact / 资源锁流程。地址转换规则和完整的差异列表见 Tron vs EVM。

响应格式

最佳报价始终位于索引 0 处。

响应字段

开启交易

order.openIntentTx 始终携带 chain、to 和 data,外加一个与链相关的费用字段: 发送前,各链所需的处理方式:
  • EVM:在广播 calldata 之前,满足 checks.allowances 中的每一项(ERC-20 的 approve 或 Permit2)。
  • Solana:序列化交易中的 recentBlockhash 是一个全零的占位值(11111111111111111111111111111111),必须在签名前替换为一个新的区块哈希。序列化后的消息不包含 Compute Budget 指令;请在签名前,用 computeUnitsRequired 构造一个 ComputeBudgetProgram.setComputeUnitLimit 指令并重建消息。checks.allowances 始终为 []:SPL 转账发生在 open 指令内部,因此不存在预先授权的步骤。
  • Tron:data 是 calldata,而不是一笔现成的交易——请通过 TronWeb 的 triggerSmartContract 将其包裹起来,并先授权 TRC-20 输入。feeLimit 是能量花费的上限,而非估算值。
各链上具体的签名并发送流程见创建并提交订单。

独占求解器匹配

metadata.exclusiveFor 字段标识了被选定来领取输入的求解器,因此它使用的是输入链的原生地址格式。当一条报价胜出时,订单服务器会将该身份和独占窗口编码进所构建订单的输出 context 中。

后续步骤

创建并提交订单

在每条链上签名并发送该报价的开启交易

跟踪订单状态

通过 API 或链上事件监控订单进度