跳到主要内容

做市商对接指南

本文档是 做市商程序化接入的总览:说明单一节点上交易、行情与历史接口如何分工、推荐接入顺序,以及运行期状态机与对账约定。
不包含 msgpack / EIP-712 等签名实现细节——见 签名与鉴权。协议字段以 交易与账户 · 历史与审计 分册为准。


阅读路径

顺序文档内容
0官方 SDK(可选)Rust / Java 客户端,封装读写、签名与 WS
1本页架构、接入清单、WS/nonce、对账
2签名与鉴权环境参数、Agent、L1 msgpack、User-Signed
3WebSocket12 个推送主题
4write-actions · 读方法分册45 写 / 46 读 schema
5读侧 schemas历史字段契约

官方 SDK

语言仓库
Rustauroran-sdk-rust
Javaauroran-sdk-java

推荐使用 SDK 完成 Agent 注册、L1 签名、下单与 WebSocket 订阅;自行实现时以 签名与鉴权 为准。


1. 单节点 API 分工

交易、行情与历史接口由同一节点、同一 Base URL 提供,按「契约族」分组。 对外差异见 接口变更清单

契约族路径响应包装
链读写(JSON-RPC + 别名)POST /api/v1/query · /api/v1/action · GET /api/v1/health · GET /api/v1/markets/{symbol} · /api/v1/orderbook/{symbol} · /api/v1/stats{height, data, page?}
热读行情/api/v1/market/orderbook/{symbol} · /api/v1/market/trades/{symbol} · /api/v1/bbos · /api/v1/marks · /api/v1/markets · /api/v1/markets/{symbol}/summary扁平热读 {chain_height, book_updated_at_ms, stale, ready, data}
历史检索/api/v1/blocks · /api/v1/fills · /api/v1/orders · /api/v1/fund-flows · …{data, page}
WebSocketGET /api/v1/wsop / topics 订阅制(链主题 + 读侧主题同一连接)

流量划分(做市日常)

走链读写(query / action / WS)走读侧 REST
下单 / 撤单 / 改杠杆 / Agent 注册日终 / 长周期成交、委托、流水对账
当前账户、挂单、nonce区块 / 交易分页浏览(审计)
市场列表(含 lifecycle)、冷启动 getBootstrapK 线、排行榜
成交 getUserFills / 增量 / 单笔 archive含 PnL 归因的聚合视图 GET /fills
终态订单 getOrderStatus(点查)历史委托 GET /orders
全部 WebSocket 交易推送公开行情 WS(book.* / trades.* / bbo.* / marks / candles.*

原则

  • 程序化交易 / 做市:默认走 链读写POST /api/v1/query/action、WS)。写、签名、实时读、交易推送均在此。
  • 读侧 REST历史索引、对账、K 线、排行榜、区块浏览、实时行情网关;对账前读 GET /api/v1/status 确认 derive_lag_blockshot_feed
  • 路径同名 ≠ 等价:同一主机上 /markets/bbos/marks/markets/{symbol}/summary热读包装(非链骨架),/chain/* 为链读代理——见下节对照表与 变更清单 §3.3

1.1 一条规则(避免选错)

对接交易系统的默认答案:链读写(query / action / WS)。 只有明确需要「历史分页 / 索引聚合 / 对账 / K 线 / 读侧展示」时,才调用读侧 REST。

1.2 重叠路径:契约族与选型

合并后只有一个主机,同名路径的归属是固定的;做市商按「应选」列接入即可。

能力同一节点上的路径做市商应选
市场列表POST /query getMarkets(含 lifecyclemark_price 等完整字段) vs GET /api/v1/markets(热读四字段)getMarkets
盘口 / BBO / Mark / SummarygetOrderbook / getAllBBOs / getAllMarks / getMarketSummary(query 或链别名) vs /market/orderbook/{symbol} · /bbos · /marks · /markets/{symbol}/summary(热读包装)query(做市主路径);热读包装给展示 / 第三方
冷启动getBootstrap(markets + books + account 一次拉齐)query
当前账户getAccount vs GET /api/v1/chain/account(读侧代理,{height,data}getAccount
保证金 / 杠杆偏好getMarketSettingsquery
当前挂单getAccountOrders · WS orderUpdates vs GET /api/v1/chain/open-orders(代理)query / WS
实时成交WS userFills · getUserFillsSince · getUserFills / getOrderFillsquery / WS
订单状态 / 终态getOrderStatus(点查) vs 历史委托 GET /ordersquery(点查);历史用 /orders
历史成交(PnL 归因)GET /api/v1/fills(含 realized_pnl / position_action读侧(对账)
历史委托GET /api/v1/orders(默认不含 open)读侧
写操作 / 签名POST /api/v1/action唯一写入口
WebSocket 交易推送/api/v1/wsaccount.* / userFills.* / orderUpdates.* / triggerUpdates.*统一 WS
WebSocket 公开行情 / K 线/api/v1/wsbook.* / trades.* / bbo.* / marks / candles.*同一连接追加订阅
区块 / 交易检索getBlock / getTx(权威) vs /blocks · /envelopes · /tx(可分页索引)验 tx / 热路径 query;审计浏览 读侧
索引是否追平GET /api/v1/status读侧(对账前必读)

为何读侧也有 /api/v1/markets
供展示/行情网关用(热读四字段)。不能替代 getMarkets:缺少 lifecycle / emergency_halt / 标记价等下单前必查字段。

为何读侧有 /chain/account
供前端应用读链上快照;做市系统直连 getAccount,少一跳、响应形态与 getAccount 一致。

1.3 按场景速查

场景
启动:拉市场 + 订单簿 + 账户Chain getBootstrapgetMarkets + getOrderbook + getAccount
运行:下单 / 维护挂单Chain POST /action + WS
日终 / 长周期对账读侧 GET /fills · /orders · /fund-flows(且 derive_lag_blocks==0
看 K 线 / 排行榜 / 实时行情读侧 K 线 · 实时行情
不确定先链读写 query;只有读侧独有的能力(历史 / K 线 / 排行)才用读侧 REST

2. 接入流程总览

步骤动作文档
1确认 chain_id / network_tag签名 §2
2Master RegisterAgent(授予 Trader)签名 §4
3Agent 私钥 + L1 通道 签名交易 Action签名 §5
4getBootstrap(markets / books / account)账户与订单 — getBootstrap
5WS:book.* · bbo.* · orderUpdates.{addr} · userFills.{addr} · account.{addr}websocket
6PlaceOrder / BatchPlaceOrderwrite-actions §5
7本地挂单以 orderUpdates 为准,断线后 getAccountOrders 校正本页 §5
8Chain getUserFillsSince 增量对账;需 PnL 归因时用读侧 GET /fillsderive_lag_blocks==0本页 §6

启动前探测

  1. GET …/api/v1/healthstatus: ok
  2. getExchangeConfigaction_version: 2
  3. getMarkets → 目标 symbolActive
  4. getAccount → 记录 nonce

3. 保证金与字段口径

下单 admission 不要withdrawable(含 uPnL 的展示值)。

场景链上口径字段
Cross 开仓 / 加仓cross_trading_available
提现 / 划逐仓 / reduce_onlycross_cash_available

完整表格见 write-actions §7.0


4. Nonce 与重试

链上规则(默认 window = 64):

  • 有效 nonce:[getAccount.nonce, getAccount.nonce + window)窗口内可乱序到达
  • 同一 nonce 不可重复kept-reject 也消耗 nonce
  • 超出窗口 / 重放 → NONCE_REPLAY

客户端建议

  • 本地 单调分配 nonce(从 getAccount.nonce 起,每笔 +1,不跳号、不复用)
  • 可在窗口内 并发在途(不必串行等 HTTP 200)
  • POST /action 禁止 batch
响应处理
acceptedeventsorder_id
kept-reject勿重发同一 nonce;修正参数后用下一 nonce
NONCE_REPLAYgetAccount resync
HTTP 超时getTx / WS 判断是否已落链后再决定

详见 交易与账户 §4.3 · precision §5reason 为 raw i128)。


5. 订单与 WebSocket 状态机

5.1 orderUpdates.{address}

kind动作
accepted意图确认(尚无完整 cloid)
restingorder_id upsert
done / expired删除

IOC/FOK/全成可能无 resting。改价 crossing 时同块可出现 donerestinguserFills

5.2 client_order_id

  • 建议 per (owner, symbol) 唯一
  • WS 仅在 resting 帧携带 cloid。

5.3 改单

  • 部分市场可直接挂簿;部分市场依赖 oracle quote,无可用报价时返回 QuoteNotAvailable
  • 批量改单:BatchModify;批量撤单:MassCancelOwner / Side / Ids);上限见 write-actions §5.4 / §6.3

6. 对账:链实时数据 ↔ 读侧历史

6.1 数据源

需求
实时成交WS userFills
增量轮询(推荐)Chain getUserFillsSince(cursor 旧→新)
全量 / 时间窗分页Chain getUserFills(fill archive)
单笔订单 fill 明细Chain getOrderFillsorder_idaddress+symbol+client_order_id
订单汇总(filled / avg / 终态)Chain getOrderStatus(closed 永久 archive;open 无 journal 扫描)
PnL 归因 / 日终聚合读侧 GET /fillsderive_lag_blocks→0
当前挂单WS orderUpdates · Chain getAccountOrders
历史委托读侧 GET /orders(默认不含 open)

6.2 成交字段映射(摘要)

语义Chain WS读侧 FillRecord
块高 / 序block_height, event_seqheight, seq
时间戳timestamp_ms
价量费price, qty, fee同左
市场 / 订单symbol, order_id, client_order_idorder_id, symbol
已实现 PnLrealized_pnl, position_action

完整映射与 derive 规则见 读侧 FillRecord

6.3 索引新鲜度

GET {node}/api/v1/status
  • derive_lag_blocks == 0 → 成交/委托/流水可對账。
  • stats_lag_blocks == 0account-stats / 排行榜可信。

7. 运维约定

主题约定
Chain JSON-RPC错误亦 HTTP 200;看 body
读侧 REST 缺参多数 500(非 400)
WS 断连重订阅 + getBootstrap / getAccountOrders 校正
HTTP 限流文档未承诺 QPS;参考 getUserRateLimit(index 滑动窗口,信息性)

8. 文档索引

主题链接
官方 SDK(Rust / Java)§官方 SDK
签名 / Agent / msgpacksigning
JSON-RPC / 错误码系统与约定
45 Action schemawrite-actions
46 读方法读方法分册 · 行情/历史读方法
WS 协议websocket
读侧契约schemas