訂單簿 & AMM
CloudBank 實現了一種混合流動性模型,將鏈上恆定乘積 AMM 與鏈下訂單引擎結合。訂單透過統一的 API 進行路由,該 API 在兩個場所之間分開執行,以實現最佳價格發現。
BinaryCPMM — 鏈上 AMM
BinaryCPMM 合約為二元結果代幣實現了常數乘積公式:
x * y = k其中 x 是 YES 儲備,YES 是 NO 儲備。此池收取 0% 掉期費,依賴 YES 和 NO 價格之間的價差作為隱性成本。
價格計算
結果代幣價格源自池儲備,精度為 1e18:
priceYes = noReserve * 1e18 / (yesReserve + noReserve)
priceNo = yesReserve * 1e18 / (yesReserve + noReserve)價格總和始終精確為 1e18(代表抵押品 1.00 美元),確保市場始終得到充分抵押。
交易路徑
| Function | Direction | Description |
|---|---|---|
swapCollateralForOutcome | Buy | 存入抵押品,透過 CTF 鑄造 YES+NO,將不需要的一面換回池中 |
sellOutcomeForCollateral | Sell | 將結果代幣存入池中,收回抵押品 |
swap | Token-to-token | 直接透過池將 YES 交換為 NO,反之亦然 |
流動性管理
addLiquidity(amount)— 存入抵押品,透過 CTF 將其分成 YES 和 NO 代幣,並將兩者按比例添加到池中。呼叫者收到代表其份額的 LP 代幣。removeLiquidity(lpAmount)— 銷毀 LP 代幣並傳回呼叫者按比例分配的 YES 和 NO 結果代幣(不是直接抵押品)。然後,呼叫者可以出售或贖回這些頭寸。
鏈下訂單引擎
訂單簿引擎作為後端服務的一部分在 Go 中實現,並維護具有價格-時間優先權匹配的記憶體訂單簿。
訂單認證
所有訂單均使用 EIP-712 類型結構化資料進行簽署。域分隔符號包括鏈 ID 和驗證合約位址,防止跨鍊和合約的重播攻擊。後端在接受訂單之前驗證簽名。
訂單類型
| Type | Behavior |
|---|---|
| GTC(取消前有效) | 保留在書本上,直到填滿或明確取消 |
| GTD(截止日期前有效) | 在指定時間戳記自動過期 |
| FOK(填入或刪除) | 必須立即完全填寫,否則整個訂單將被拒絕 |
| FAK(填滿並消除) | 立即填滿,剩餘的取消 |
WebSocket 心跳
活躍的製造商透過 WebSocket 連接來維護他們的訂單:
wss://api.cloudbank.com/api/v1/orderbook/heartbeat/ws如果製造商的心跳連接斷開,他們的休息訂單可能會被標記為過時。這種機制可以保護接受者免受來自斷開連接的做市商的報價的影響。
混合訂單路由
統一路由端點評估兩個流動性來源以找到最佳執行:
POST /api/v1/orderbook/route路由器計算兩個場地的有效價格並拆分訂單以最大限度地減少滑點。例如,大額買入訂單可能會先滿足訂單簿上最好的剩餘要價,然後將剩餘大小掃過 AMM。
路由邏輯
- 查詢訂單簿中限價的可用流動性。
- 查詢 AMM 剩餘尺寸下的有效價格。
- 比較邊際價格並將數量分配給較便宜的場所。
- 自動執行鏈上 AMM 交易並結算訂單簿匹配。
綜合市場聯盟
CLOB(中央限價訂單簿)架構遵循 Polymarket 建立的慣例,包括 EIP-712 訂單簽署、二元結果代幣對以及混合 AMM+ 訂單簿模型。這種一致性有助於交易者熟悉平台之間的遷移,並實現未來潛在的跨平台流動性共享。