意图交易solver求解#
POST /solve#
接收一場拍賣並返回一個或多個 Solution。
回應內容包含 Solver 所能找到的最佳 Solution 的目標值(Objective Value),但不包含 calldata。Autopilot 確定獲勝者後,會呼叫 /settle 端點,通知獲勝 Solver 執行其 Solution。
注意事項#
- Solver 應快速回應:多筆訂單拍賣的回應時間需 ≤ 8 秒,單筆訂單拍賣需 ≤ 2 秒。逾時將視為放棄該輪拍賣(含網路延遲)。
- 對於同一個 Auction ID,Autopilot 最多只會呼叫此端點一次。
- 若某筆 RWA 單筆訂單拍賣在第一輪未能被求解,該未解訂單會與其他正常訂單於下一輪一同批次處理。
http
POST /solve
Content-Type: application/json
請求參數(SolveRequest)#
| 參數 | 型別 | 必填 | 說明 | 範例 |
|---|---|---|---|---|
| chainIndex | String | 是 | 鏈 ID | 1-eth |
| auctionId | String | 是 | 拍賣唯一 ID | 12345 |
| settlementContract | String | 是 | 用以結算此場拍賣的結算合約地址 | 0xabcd... |
| deadline | Timestamp | 是 | 期望取得回應的截止時間戳 | 172120120102 |
| stressTest | Boolean | 否 | 為 true 時表示壓測訂單,/solve 將跳過 Simulation 驗證,直接於 solutions 回傳結果 | true |
| orders | Array<Order> | 是 | 此場拍賣中可被求解的訂單列表 | — |
| ┗ orderUid | String | 是 | 訂單唯一識別碼(56 bytes,0x 前綴十六進位) | 0x30cff40d...76a6 |
| ┗ owner | String | 是 | 訂單擁有者地址 | 0x1234...5678 |
| ┗ fromTokenAddress | String | 是 | 賣出 Token 地址 | 0xa0b8...eb48 |
| ┗ toTokenAddress | String | 是 | 買入 Token 地址 | 0xdac1...1ec7 |
| ┗ fromTokenAmount | String | 是 | 賣出數量(以最小單位表示) | 1000000000 |
| ┗ toTokenAmount | String | 是 | 買入數量(以最小單位表示) | 990000000 |
| ┗ swapMode | String | 是 | 訂單類型:exactIn / exactOut,目前 OKX 僅支援 exactIn | exactIn |
| ┗ partiallyFillable | Boolean | 是 | 是否允許部分成交,目前 OKX 不支援部分成交 | false |
| ┗ validTo | String | 是 | 訂單到期時間(Unix 時間戳,秒) | 1737400518 |
| ┗ appDataHash | String | 是 | App data hash(32 bytes,0x 前綴十六進位) | 0x0000...0000 |
| ┗ signature | String | 是 | 簽章(0x 前綴十六進位) | 0x1234... |
| ┗ signingScheme | String | 是 | 簽章方式:eip712 / ethsign / presign / eip1271 | eip712 |
| ┗ receiver | String | 是 | 收款地址 | 0x1234...5678 |
| ┗ createTime | String | 是 | 訂單建立時間(epoch 秒) | 1737396918 |
| ┗ commissionInfos | Array | 否 | 手續費資訊列表 | — |
| ┗┗ feePercent | String | 是 | 最多支援 9 位小數;若超出位數,系統將自動向上取整 | 20000000 |
| ┗┗ feeAmount | String | 否 | 手續費金額 | 100000 |
| ┗┗ referrerWalletAddress | String | 是 | 手續費收款地址 | 0x1234... |
| ┗┗ feeDirection | Boolean | 是 | 收費方向:true = 從 fromToken 收取,false = 從 toToken 收取 | true |
| ┗┗ commissionType | String | 是 | 手續費類型:okx = OKX 平台費、parent = 上層節點分成、child = 下層節點分成 | okx |
| ┗┗ toB | Boolean | 是 | 訂單類型:true = ToB、false = ToC | false |
| tokens | Array | 是 | 此場拍賣使用的 Token 資料(會包含 WETH 價格資訊) | — |
| ┗ address | String | 是 | Token 地址 | 0x1234...5611 |
| ┗ price | String | 否 | 參考價格(以 USD 計價,最多支援 18 位小數),用於計算 Surplus | 1000000000000000000 |
| ┗ decimals | String | 否 | Token 小數位數 | 18 |
| ┗ tags | Array | 否 | Token 標籤列表 | ["RWA_ONDO","RWA"] |
回應參數#
| 參數 | 型別 | 必填 | 說明 | 範例 |
|---|---|---|---|---|
| solutions | Array | 否 | Solution 列表 | — |
| ┗ solutionId | String | 是 | Solution 唯一識別碼(僅需在當前拍賣中唯一,不需全域唯一)。必須為數字字串,最大值為 2^63 - 1 | 1 |
| ┗ clearingPrices | Object | 是 | Token 地址至統一結算價格(扣除手續費前的價格)的對應表 | — |
| ┗ submissionAddress | String | 是 | 用於提交該 Solution 進行結算的地址 | 0xaFe9...3596 |
| ┗ orders | Array | 是 | Solver 此 Solution 中所包含的訂單列表,包含 Solver 自身的 JIT 訂單 | — |
| ┗┗ orderUid | String | 是 | 訂單唯一識別碼(56 bytes,0x 前綴十六進位) | 0xb91949...46e |
| ┗┗ swapMode | String | 是 | 訂單類型:exactIn / exactOut | exactIn |
| ┗┗ fromTokenAddress | String | 是 | 賣出 Token 地址 | 0xc02a...6cc2 |
| ┗┗ toTokenAddress | String | 是 | 買入 Token 地址 | 0xdac1...1ec7 |
| ┗┗ fromTokenAmount | String | 是 | 允許賣出的最大數量 | 1750000000000000 |
| ┗┗ toTokenAmount | String | 是 | 允許買入的最小數量 | 3529500 |
| ┗┗ executedFromTokenAmount | String | 是 | 實際從使用者錢包扣除的數量(含所有手續費) | 1750000000000000 |
| ┗┗ executedToTokenAmount | String | 是 | 使用者實際收到的淨數量(扣除所有手續費後) | 3694070 |
| ┗┗ solverFeeInfo | Object | 是 | Solver 手續費資訊 | — |
| ┗┗┗ feePercent | String | 是 | 最多支援 9 位小數;若超出位數,系統將自動向上取整 | 0 |
| ┗┗┗ feeAmount | String | 是 | Solver 手續費金額 | 0 |
| ┗┗┗ solverAddress | String | 是 | Solver 手續費收款地址 | 0xaFe9...3596 |
| ┗┗┗ feeDirection | Boolean | 是 | 收費方向:true = 從 fromToken 收取,false = 從 toToken 收取 | false |
| ┗┗ surplusFeeInfo | Object | 否 | Surplus 手續費資訊 | — |
| ┗┗┗ feePercent | String | 是 | Surplus 手續費百分比 | 0 |
| ┗┗┗ trimReceiver | String | 是 | Surplus 截留部分的接收地址 | 0xaFe9...3596 |
| ┗┗ commissionInfos | Array | 否 | 平台費與分潤資訊 | — |
| ┗┗┗ feePercent | String | 是 | 最多支援 9 位小數;若超出位數,系統將自動向上取整 | 3000000 |
| ┗┗┗ feeAmount | String | 是 | 手續費金額 | 11132 |
| ┗┗┗ referrerWalletAddress | String | 是 | 手續費收款地址 | 0x29e2...6925 |
| ┗┗┗ feeDirection | Boolean | 是 | 收費方向:true = 從 fromToken 收取,false = 從 toToken 收取 | false |
| ┗┗┗ commissionType | String | 是 | 手續費類型:okx = OKX 平台費、parent = 上層節點分成、child = 下層節點分成 | okx |
| ┗┗┗ toB | Boolean | 是 | 訂單類型:true = ToB、false = ToC | false |
請求範例#
json
{
"auctionId": "16979924300771968",
"chainIndex": "1",
"deadline": "1773829092242",
"settlementContract": "0x1a34e1e604d8a55405172c0717b17f7631d5f265",
"orders": [
{
"appDataHash": "0xb44dd4943b8f671e3e555b6e0fb8a882fd4c81d2bf2fbe27bf2bc76794d6f1ce",
"commissionInfos": [
{
"commissionType": "okx",
"feeDirection": true,
"feePercent": "3000000",
"referrerWalletAddress": "0x6ea08ca8f313d860808ef7431fc72c6fbcf4a72d",
"toB": false
},
{
"commissionType": "child",
"feeDirection": true,
"feePercent": "1000000",
"referrerWalletAddress": "0x2c825edb17c2c04983a481ebd2da2a39424c7cb7",
"toB": false
},
{
"commissionType": "parent",
"feeDirection": true,
"feePercent": "500000",
"referrerWalletAddress": "0x3474fbbc6e43dcb0398e2eacbe1032cced806742",
"toB": false
}
],
"createTime": "1773828838",
"fromTokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"fromTokenAmount": "1000000000000000",
"orderUid": "0xac46fe143af2afc7e3614f96cfcf660b0e680ca8d9d8f59591b63fbdc4a871413474fbbc6e43dcb0398e2eacbe1032cced80674269ba81ed",
"owner": "0x3474fbbc6e43dcb0398e2eacbe1032cced806742",
"partiallyFillable": false,
"receiver": "0x3474fbbc6e43dcb0398e2eacbe1032cced806742",
"signature": "0xabe06f2376cd977d47179be4b055df4b4ebb140d48e585c9f742019760fe02f02655eec2b87ae159c7e1a510dfe3524799504c1f6175c5c2cdff35d0ad54b6131c",
"signingScheme": "eip712",
"swapMode": "exactIn",
"toTokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"toTokenAmount": "2262246",
"validTo": "1773830637"
}
],
"tokens": [
{
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"price": "2333.904192377223440889",
"decimals": "18",
"tags": ["RWA_ONDO", "RWA"]
},
{
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"price": "0.99998",
"decimals": "6",
"tags": ["RWA_ONDO", "RWA"]
}
]
}
回應範例#
json
{
"code": 0,
"msg": "success",
"data": {
"solutions": [
{
"solutionId": "1",
"clearingPrices": {
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": "471600415.188469753892516323455589889089688117",
"0xdac17f958d2ee523a2206206994597c13d831ec7": "1"
},
"submissionAddress": "0xaFe9d55A5a4e90bBBabBa0327BF72196B5683596",
"orders": [
{
"orderUid": "0xb919490fe85e27523f1732fcf09dc398a89deea8f7d9c5fb170cd4f6d6d3bbb729e27c8e9979b9879de65955f172f3623644692569abc46e",
"swapMode": "exactIn",
"fromTokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"toTokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"fromTokenAmount": "1750000000000000",
"toTokenAmount": "3529500",
"executedFromTokenAmount": "1750000000000000",
"executedToTokenAmount": "3694070",
"solverFeeInfo": {
"feeAmount": "0",
"feePercent": "0",
"feeDirection": false,
"solverAddress": "0xaFe9d55A5a4e90bBBabBa0327BF72196B5683596"
},
"surplusFeeInfo": {
"feePercent": "0",
"trimReceiver": "0xaFe9d55A5a4e90bBBabBa0327BF72196B5683596"
},
"commissionInfos": [
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "11132",
"feePercent": "3000000",
"toB": false,
"feeDirection": false,
"commissionType": "okx"
},
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "3710",
"feePercent": "1000000",
"toB": false,
"feeDirection": false,
"commissionType": "child"
},
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "1855",
"feePercent": "500000",
"toB": false,
"feeDirection": false,
"commissionType": "parent"
}
]
},
{
"orderUid": "0xe2f6bd4af8ca930b391f321d8ec9d6f772748060aa4bf9b9576d97361af7724f29e27c8e9979b9879de65955f172f3623644692569abc471",
"swapMode": "exactIn",
"fromTokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"toTokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"fromTokenAmount": "5000000",
"toTokenAmount": "2340413279781192",
"executedFromTokenAmount": "5000000",
"executedToTokenAmount": "2347391066600608",
"solverFeeInfo": {
"feeAmount": "0",
"feePercent": "0",
"feeDirection": true,
"solverAddress": "0xaFe9d55A5a4e90bBBabBa0327BF72196B5683596"
},
"surplusFeeInfo": {
"feePercent": "0",
"trimReceiver": "0xaFe9d55A5a4e90bBBabBa0327BF72196B5683596"
},
"commissionInfos": [
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "15000",
"feePercent": "3000000",
"toB": false,
"feeDirection": true,
"commissionType": "okx"
},
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "5000",
"feePercent": "1000000",
"toB": false,
"feeDirection": true,
"commissionType": "child"
},
{
"referrerWalletAddress": "0x29e27c8e9979b9879de65955f172f36236446925",
"feeAmount": "2500",
"feePercent": "500000",
"toB": false,
"feeDirection": true,
"commissionType": "parent"
}
]
}
]
}
]
}
}