跳到主要内容

实时行情

概述

:::info 本文档范围

专讲 实时行情(盘口、最新成交、BBO、Mark、Summary)。数据 仅驻内存
不含 K 线 — 见同组 K 线 · WebSocket 主题
本组入口见 行情数据概述

:::

实时行情接口在链节点上提供,与 交易与账户 读方法路径对齐的 实时行情读接口 (REST + WebSocket)。数据 仅驻内存;进程重启后 re-seed + WS 续订。内部实现细节 对接方无需关心;相关变更见 接口变更清单

第三方行情 SDK 通常 只需改 base URL 即可接入;调用方 只认 symbol

环境Base URLWebSocket
生产https://rpc.auroran.io · https://api.auroran.iowss://rpc.auroran.io/api/v1/ws · wss://api.auroran.io/api/v1/ws

两个域名功能一致,任选其一。 Schema 权威定义schemas — §12 实时行情


1. 设计原则

原则说明
对外只用 symbolHTTP 路径与 WS 订阅均使用 Zepto 链上市场符号(如 BTCETHxyz:NVDABTC-USDT
统一读路径所有市场共用同一套 REST / WS;路由与数据源在节点内部完成,调用方无需分支
实时、不入库盘口 / 成交 / BBO / Mark / Summary 仅内存;与 K 线(SQLite 索引)无关
Mark 以链为准mark_price / marks 来自链节点 getAllMarks(清算 / uPnL 同源)
路径对齐 ChainREST 路径与链读路径一致,便于在同一节点上切换使用

1.1 与 Chain API 的分工

场景推荐
做市 / 下单 / 账户 / 写操作链读写POST /api/v1/query / /action
深度图 / 最新成交 ticker读侧实时行情(本页)
K 线 / 图表K 线
历史成交 / 委托 / 对账历史索引 REST

详见 做市商对接指南 §1.2


2. Symbol 解析

所有实时行情接口通过 Zepto 完整 symbol前缀 解析市场:

规则说明
精确匹配BTC-USDT → 该 symbol 对应的市场
前缀匹配BTC → 匹配以 BTC 开头且 最短 的 symbol(如同时存在 BTCBTC-USDT 时,BTC 优先匹配更短的 BTC
大小写不敏感(内部归一化为小写)
HIP-3 市场使用链上完整符号,如 xyz:NVDAxyz:JPY

WS coin 与 REST symbol

REST {symbol}WS coin说明
BTC-USDTBTC- 的 symbol 取 - 前基础资产作为 coin
BTCBTC与 REST symbol 相同
xyz:NVDAxyz:NVDA与 REST symbol 相同

REST 推荐使用 完整 Zepto symbol 以避免前缀歧义;WS 订阅时使用上表 coin 值。


3. 数据新鲜度与 HTTP 元数据

3.1 GET /api/v1/statushot_feed

{
"watermark": 2046216,
"hot_feed": {
"native_ready": true,
"hl_ready": true,
"stale": false,
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123
},
"markets": {
"native": 1,
"external_peg": 4
}
}
FieldTypeDescription
hot_feed.native_readyboolean实时行情 feed seed 状态
hot_feed.hl_readyboolean实时行情 feed seed 状态
hot_feed.staleboolean上游 WS 断开或长时间未更新时为 true
hot_feed.chain_heightnumber热缓存关联的链高度(各 slot 最大值)
hot_feed.book_updated_at_msnumber盘口最近更新时间(ms,各 slot 最大值)
marketsobject服务端路由计数(对接可忽略)

依赖本页 REST 前,确认 hot_feed.native_readyhot_feed.hl_ready 均为 true。完整 status 见 历史索引 — status

3.2 REST 响应包装

成功时 body 为 扁平 JSONmetadata 同级):

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": { }
}
FieldTypeDescription
chain_heightnumber同 status hot_feed.chain_height
book_updated_at_msnumber盘口最近更新时间(ms)
staleboolean上游 stale 时为 true仍返回 200 与内存中最近数据
readybooleanFeed 已 seed 且 slot 可读
dataobject / array业务载荷(见各端点)

响应 Header(可选读取)

Header说明
X-Chain-Heightchain_height
X-Book-Updated-At-Msbook_updated_at_ms
X-Market-Data-Stale: true仅当 stale == true 时出现

3.3 HTTP 状态码

HTTP场景Body
200正常;或 stale 但有缓存见上
404未知 / 已下架 symbol{ "error": "market not found" }
503Feed seeding 中,slot 尚未建立{ "error": "market feed seeding" },Header Retry-After: 2
500内部错误{ "error": "..." }

禁止在收到 503 时自行打链补数;应退避重试(建议 ≥2s)。


4. REST — 盘口与成交

GET /api/v1/market/orderbook/{symbol}

对齐 Chain GET /api/v1/orderbook/{symbol}

Path

Param说明
{symbol}Zepto 市场符号,如 BTCBTC-USDTxyz:NVDA

Query

ParamTypeDefaultDescription
depthnumber全量 cap每侧返回档数;在服务端 cap 内再截断

深度上限:每侧最多 50 档(部分市场服务端 cap 可能更低)。

Response 200dataOrderbookSnapshot

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": {
"symbol": "BTC",
"height": 2046216,
"state_hash": "0x…",
"source": "index",
"bids": [
{ "price": "65490.0", "qty": "1.50000", "cumulative_qty": "" }
],
"asks": [
{ "price": "65495.0", "qty": "0.80000", "cumulative_qty": "" }
]
}
}
FieldTypeDescription
symbolstringZepto 完整 symbol
heightnumber关联链高度(部分热读场景可能为 0
state_hashstring链状态 hash(无链关联时可能为空字符串)
sourcestring内部字段;对接方无需使用
bids / asksOrderbookLevel[]价格 降序 bids / 升序 asks
price / qtystringdecimal 字符串,精度见 Chain getMarkets

每次更新为 整包 snapshot 覆盖(非 level 增量 patch)。


GET /api/v1/market/trades/{symbol}

对齐 Chain RPC getRecentTrades

Query

ParamTypeDefaultMaxDescription
offsetnumber0跳过最新 N 条(新→旧分页)
limitnumber501000返回条数

排序新 → 旧(最新成交在前)。

Ring 容量:每市场内存 ring 10_000 条,超出 FIFO 丢弃最旧。

Response 200dataRecentTrade[]

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": [
{
"block_height": 2046210,
"event_seq": 3,
"timestamp_ms": 1717199000000,
"market_id": 1,
"symbol": "BTC",
"price": "65492.0",
"qty": "0.01000",
"notional": "654.920000",
"side": "Bid",
"hl_tid": 9876543210
}
]
}
FieldTypeDescription
block_heightnumber链上成交区块高度(无链关联时可能为 0
event_seqnumber链 event 序号
timestamp_msnumber成交时间(ms)
market_idnumber链上 market ID
symbolstringZepto symbol
sidestring"Bid""Ask"
hl_tidnumber可选;外部 trade id,用于 dedup

5. REST — BBO / Mark / Summary

GET /api/v1/bbos

对齐 Chain GET /api/v1/bbos

Response 200dataBboItem[](按 symbol 字典序)

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": [
{
"symbol": "BTC",
"bid": "65490.0",
"ask": "65495.0",
"spread": "5.0"
}
]
}

BBO 由内存 orderbook 顶档 derive,不单独存副本。


GET /api/v1/marks

对齐 Chain GET /api/v1/marks

Response 200dataMarksMapsymbol → mark_price 对象)

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": {
"BTC": "65495.0",
"ETH": "1919.40",
"xyz:NVDA": "210.750",
"BTC-USDT": "0"
}
}

Mark 每区块从链 getAllMarks 刷新,为清算 / uPnL 权威价


GET /api/v1/markets/{symbol}/summary

对齐 Chain GET /api/v1/markets/{symbol}/summary

Response 200dataMarketSummary

{
"chain_height": 2046216,
"book_updated_at_ms": 1717200000123,
"stale": false,
"ready": true,
"data": {
"symbol": "BTC",
"mark_price": "65495.0",
"best_bid": "65490.0",
"best_ask": "65495.0",
"spread": "5.0",
"open_interest": "1234.50000",
"open_interest_notional": "80801234.567890",
"fills_in_block": 12,
"bid_levels": 20,
"ask_levels": 18,
"open_orders": 0,
"prev_day_price": "66034.0",
"day_ntl_volume": "0.000000",
"day_base_volume": "0.00000"
}
}
FieldTypeDescription
mark_pricestring链 mark(同 marks
best_bid / best_ask / spreadstring | null由热 orderbook 顶档 derive
open_interest 等统计项多种来自链 getMarketSummary / 块钩子缓存
bid_levels / ask_levelsnumber当前 orderbook 档数
open_ordersnumber链侧 resting 订单数

未设置的 optional 字段可能从 JSON 中 省略


6. WebSocket — 实时行情主题

连接:ws://{node}/api/v1/ws(与链 WS、blocks.live、K 线主题同一连接)。

协议:{"op":"subscribe","topics":[...]} 订阅制(旧 method/subscription 已删除)。 K 线candles.{symbol}.{interval} 主题 — 见 K 线 · 读侧 WS

6.1 订阅类型

主题参数说明
book.{symbol}[.{depth}]symbol(depth 默认 50,0=全深度)全量 orderbook 快照(变化时全量推)
trades.{symbol}symbol成交推送(每块增量 batch)
bbo.{symbol}symbol最优买卖价(变化时推)
marks全市场 mark map

Subscribe 示例

{
"op": "subscribe",
"topics": ["book.BTC.20", "trades.ETH", "bbo.BTC", "marks"]
}

6.2 订阅快照

订阅成功后,若热缓存可读,服务端 立即推送一份当前快照

主题快照内容
book.{symbol}当前完整 orderbook
bbo.{symbol}当前顶档 BBO
marks当前全市场 marks
trades.{symbol}初始快照(历史用 REST /api/v1/market/trades/{symbol}

Feed seeding 中(503 等价状态)时,快照可能 静默跳过,待 ready 后靠增量更新。

6.3 推送格式(节点 decimal-string 帧)

book.{symbol}

{
"topic": "book.BTC",
"symbol": "BTC",
"height": 2046216,
"timestamp_ms": 1717200001000,
"state_hash": "0x…",
"bids": [{ "price": "65490.0", "qty": "1.50000", "cumulative_qty": "1.50000" }],
"asks": [{ "price": "65495.0", "qty": "0.80000", "cumulative_qty": "0.80000" }]
}

trades.{symbol}

{
"topic": "trades.BTC",
"symbol": "BTC",
"height": 2046210,
"timestamp_ms": 1717199000000,
"trades": [
{
"block_height": 2046210,
"event_seq": 3,
"timestamp_ms": 1717199000000,
"market_id": 1,
"price": "65492.0",
"qty": "0.01000",
"notional": "654.920000",
"side": "Bid"
}
]
}

bbo.{symbol}

{
"topic": "bbo.BTC",
"symbol": "BTC",
"height": 2046216,
"timestamp_ms": 1717200001000,
"best_bid": "65490.0",
"best_ask": "65495.0"
}

marks

{
"topic": "marks",
"height": 2046216,
"timestamp_ms": 1717200001000,
"marks": { "BTC": "65495.0", "ETH": "1919.40" }
}

6.4 与链主题共存

同一 WebSocket 连接可同时:

  • 订阅 链主题book.* / trades.* / bbo.* / marks 与链读同源;account.* / userFills.* / orderUpdates.* 等交易主题见 链 WS
  • 订阅 blocks.live(新区块广播)与 candles.{symbol}.{interval}(K 线)

各主题独立过滤,互不影响。


7. 端点速查

MethodPathChain 等价Response data
GET/api/v1/market/orderbook/{symbol}GET /orderbook/{symbol}OrderbookSnapshot
GET/api/v1/market/trades/{symbol}getRecentTradesRecentTrade[]
GET/api/v1/bbosGET /bbosBboItem[]
GET/api/v1/marksGET /marksMarksMap
GET/api/v1/markets/{symbol}/summaryGET /markets/{symbol}/summaryMarketSummary
GET/api/v1/wsWS 行情主题(见 §6)

K 线(/candlesPOST /infochannel: candle)见 K 线


8. 对接清单

步骤动作
1确认 GET /api/v1/statushot_feed.* 均为 true
2用 Chain getMarkets 获取完整 symbol 列表
3REST:处理 503 + Retry-After;stale 时读 X-Market-Data-Stale
4WS:op/topics 订阅行情主题,等待 snapshot(trades 无初始快照)后再处理增量
5写操作仍走 链读写POST /api/v1/action

要做 K 线图表?K 线