事件投影
7 个事件域 · 57 个变体 所有事件走外部 tag 包裹:
{seq, block_height, envelope_idx, kind: {"Domain": {"Variant": {...}}}}数值字段经 ADR-0026 投影为 decimal string
1. 事件外壳
所有事件(getBlockEvents、getTx.events、WS 推送、写操作 result.events)走统一外壳:
{
"seq": 3,
"block_height": 12346,
"envelope_idx": 1,
"kind": {
"DomainTag": {
"Variant": { ... }
}
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
seq | u64 | 块内单调递增的事件序号 |
block_height | u64 | 产生该事件的块高 |
envelope_idx | u32 | 产生该事件的 envelope 在块内的下标 |
kind | EventKind | externally-tagged:{"DomainTag": {"Variant": {...}}} |
数值字段精度约定:
| 语境 | 字段 | 精度 |
|---|---|---|
| 价格 | price/mark_price/limit_price/entry_vwap/bid_price/ask_price/last_price | 市场 price_decimals |
| 数量 | qty/size/remaining/volume/old_size/new_size | 市场 size_decimals |
| 金额 | notional/fee/pnl/balance/margin/amount | SCALE_6 |
2. Core 域(12 变体)
系统级事件:余额、标记价、拒绝、统计、费率、推荐、DMS、破产。
| 变体 | 关键字段 | 说明 |
|---|---|---|
BalanceChanged | owner, delta(SCALE_6), new_balance(SCALE_6), reason | 余额变动 |
MarkUpdated | market_id, mark_price(px), previous_mark_price(px) | 标记价更新 |
MarketStatsSnapshot | market_id, long_size(sz), short_size(sz), net_size(sz), oracle_counter_pnl(SCALE_6) | 市场统计快照 |
Rejected | action_kind, reason: RejectReason | 交易被拒(含 InsufficientBalance{required,have} 等) |
BatchItemRejected | index(u32), action_kind, reason | 批量操作子项被拒 |
RuntimeReject | order_id?, engine_reason | 撮合引擎拒收 |
Bankruptcy | target_owner, market_id, shortfall_amount(SCALE_6), source | 破产事件 |
UserFeeRateChanged | owner, maker_fee_rate?, taker_fee_rate? | 用户费率变更 |
ReferrerRegistered | owner, code | 推荐码注册 |
ReferrerBound | owner, code | 推荐码绑定 |
DeadMansSwitchScheduled | owner, trigger_time_ms? | DMS 截止设置/清除 |
DeadMansSwitchTriggered | owner, cancelled(u32) | DMS 触发(批量撤单数) |
示例:Filled 事件
{
"seq": 3, "block_height": 12346, "envelope_idx": 1,
"kind": {
"Exec": {
"Filled": {
"taker_order_id": 1001, "maker_order_id": 1002, "market_id": 1,
"taker_owner": "0x...", "maker_owner": "0x...",
"price": "97234.50", "qty": "0.50000",
"notional": "48617.250000",
"taker_fee": "24.308625", "maker_fee": "-4.861725",
"aggressor_side": "Bid"
}
}
}
}
3. Exec 域(18 变体)
撮合执行事件:订单生命周期、成交、持仓变更、保证金、预言机报价。
| 变体 | 关键字段 | 说明 |
|---|---|---|
OrderAccepted | order_id, owner, market_id, side, limit_price(px), qty(sz), tif | 订单受理 |
Filled | taker_order_id, maker_order_id, market_id, price(px), qty(sz), notional(SCALE_6), taker_fee(SCALE_6), maker_fee(SCALE_6), aggressor_side | 撮合成交 |
OrderResting | order_id, owner, market_id, resting{price,qty,remaining,im_reserved,prepaid_maker_fee} | 订单挂簿 |
OrderDone | order_id, owner, market_id, reason(DoneReason), remaining(sz) | 订单离簿 |
PositionUpdated | owner, market_id, old_size(sz), new_size(sz), new_entry_vwap(px), realized_pnl(SCALE_6) | 持仓更新 |
PositionFlattened | owner, market_id, old_size(sz) | 持仓清零 |
OrderCancelledByPositionFlat | order_id, owner, market_id, remaining(sz) | 挂单因持仓清零被撤 |
TriggerCancelledByPositionFlat | trigger_id, owner, market_id | 触发单因持仓清零被撤 |
IsolatedMarginUpdated | owner, market_id, new_isolated_margin(SCALE_6) | 逐仓保证金变更 |
LeverageUpdated | owner, market_id, leverage(u32) | 杠杆变更 |
MarginModeUpdated | owner, market_id, margin_mode | 保证金模式切换 |
PositionForceClosedAtMark | target, market_id, size(sz), mark_price(px), realized_pnl(SCALE_6) | 按 mark 强制清退(清算 5b / 下市) |
OracleQuoteAccepted | market_id, quoter, bid_price(px), ask_price(px), mark_price(px), last_price(px), volume(sz), source_ts_ms, sequence_id | 预言机报价受理 |
OracleQuoteRejected | market_id, quoter, reason | 预言机报价被拒 |
OracleCounterDepleted | market_id, required(SCALE_6), available(SCALE_6) | OracleCounter 额度耗尽 |
MarketHaltedQuoteStale | market_id, last_quote_ts_ms, block_ts_ms | 市场因报价过期暂停 |
MarketResumedAfterQuote | market_id | 市场因报价恢复 |
QuoteRejectStorm | market_id, quoter, streak(u32) | 连续拒报风暴 |
4. Oco 域(4 变体)
OCO 组合单机制事件。
| 变体 | 关键字段 | 说明 |
|---|---|---|
OrderCancelledByOcoSibling | order_id, owner, market_id, remaining(sz), pair_id, winning_leg | OCO 互斥撤单 |
TriggerOrderCancelled | trigger_id, market_id, owner, reason | OCO 触发腿撤销 |
LimitTriggerOrderCancelled | trigger_id, market_id, owner, reason | OCO 限价腿撤销 |
OcoPairResolved | pair_id, owner, market_id, winner_leg?, reason | OCO 组合单完成 |
5. Liquidation 域(1 变体)
| 变体 | 关键字段 | 说明 |
|---|---|---|
Liquidated | target, market_id, closed_via_book(sz), force_closed_at_mark(sz), total_realized_pnl(SCALE_6), mark_price(px) | 清算完成 |
6. Trigger 域(8 变体)
触发单生命周期事件。
| 变体 | 关键字段 | 说明 |
|---|---|---|
TriggerOrderPlaced | trigger_id, market_id, owner, trigger_price(px), trigger_direction, payload{Market|Limit}, expires_at_ms? | 触发单创建 |
TriggerOrderCancelled | trigger_id, market_id, owner, reason | 触发单被撤销 |
LimitTriggerOrderCancelled | trigger_id, market_id, owner, reason | 限价触发单被撤销 |
TriggerOrderExpired | trigger_id, market_id, owner | 触发单过期 |
TriggerActivated | trigger_id, market_id, owner, mark_price(px), trigger_price(px) | 触发激活 |
TriggerFireFailed | trigger_id, market_id, owner, reason: RejectReason | 触发后业务拒(触发单已消费) |
OcoPairPlaced | pair_id, owner, market_id, legs | OCO 组合单创建 |
OcoPairResolved | pair_id, owner, market_id, winner_leg?, reason | OCO 组合单完成 |
7. Bridge 域(6 变体)
充提桥接事件。全部金额走 SCALE_6。
| 变体 | 关键字段 | 说明 |
|---|---|---|
DepositRecorded | seq, external_ref, tx_hash?, account, amount(SCALE_6) | 充值登记 |
DepositCredited | seq, owner, amount(SCALE_6), new_balance(SCALE_6) | 充值入账 |
WithdrawRequested | request_id, owner, amount(SCALE_6), chain, new_balance(SCALE_6) | 提现请求 |
WithdrawSettled | request_id, owner, amount(SCALE_6), tx_hash | 提现放款完成 |
WithdrawRefunded | request_id, owner, amount(SCALE_6), reason_code(u8), new_balance(SCALE_6) | 提现退款 |
SettlementPausedChanged | paused(bool) | 结算闸门切换 |
8. Ops 域(8 变体)
管理操作事件。无数值字段,无需 decimal 投影。
| 变体 | 关键字段 | 说明 |
|---|---|---|
AccountRoleChanged | target, role, granted(bool), new_mask | 账户角色变更 |
AgentRegistered | owner, agent_address, role_mask, expires_at_ms | Agent 注册 |
AgentRevoked | owner, agent_address | Agent 撤销 |
EmergencyHaltChanged | market_id, halted(bool) | 紧急熔断切换 |
MarketCreated | market_id, kind, lifecycle | 市场创建 |
MarketLifecycleChanged | market_id, from, to | 市场生命周期变更 |
FeeRecipientChanged | market_id, old_recipient, new_recipient | 手续费接收方变更 |
MarketConfigAmended | market_id, max_leverage?, maker_fee_rate?, taker_fee_rate?, margin_table_len?, mark_max_change_bps? | 市场配置已修改 |