Zum Hauptinhalt springen

L4 Book Updates Dataset

Aktualisiert am
18. Juli 2026

Übersicht

Die StreamL4BookUpdates stream delivers typed order-level book changes as NEW, UPDATE, und REMOVE diffs for one or more coins. It gives clients per-order L4 movement without consuming full L4 book snapshots every block, and without parsing JSON-encoded payloads: every diff is a strongly typed protobuf message.

gRPC : OrderBookStreaming
gRPC : StreamL4BookUpdates
Modell aktualisieren: Full reset snapshot on subscribe and for mid-stream replacement resets, then typed per-order diffs per block

So funktioniert es

  1. Beim Abonnieren: The first message has snapshot: true and contains every resting order as a L4_ORDER_DIFF_TYPE_NEW diff, a full reset snapshot of the book
  2. Danach pro Block: Each L4BookUpdatesUpdate contains typed diffs for orders that changed: NEW (order entered the book), UPDATE (order size changed), REMOVE (order left the book, sz is omitted)
  3. Apply diffs to a local order map keyed by oid to maintain the current book
  4. Replacement resets: Any later message can also have snapshot: true, for example when an ALO priority fee insertion changes queue order or when stream state is rebuilt. Whenever a message has snapshot: true, clear the keyed local order state before applying its diffs, not only on the first message

Unlike StreamL4Book, which sends diffs as a JSON-encoded Daten string, every field here is a typed protobuf field, so no secondary JSON parsing is required. A single stream can cover multiple coins (or all coins with an empty coins list).

Datenstruktur

Each L4BookUpdatesUpdate message contains the typed diffs for one block:

{
"time": 1781109115476,
"height": 586405189,
"diffs": [
{ "diff_type": "L4_ORDER_DIFF_TYPE_NEW", "coin": "ETH", "oid": 54764586686,
"user": "0x768484F7e2EBB675C57838366C02Ae99ba2A9B08", "side": "B", "px": "1649.1", "sz": "1.022" }
]
}

Anfrageparameter

FeldTypErforderlichBeschreibung
coinsrepeated stringNeinList of symbols to subscribe to (e.g., "BTC", "ETH"). Empty means all coins

Benennung von Münzen

Die coins Der Parameter folgt der Namenskonvention Hyperliquid, die Perpetuals eindeutig vom Spot unterscheidet:

  • Unbefristete Verträge: Human-readable names, such as „BTC“, „ETH“, „HYPE“, „SOL“
  • Spot-Token: @{index} format, such as "@1", „@107“, "@142", "@166"
  • Ergebnismärkte (HIP-4): #N Format. Jedes Ergebnis hat zwei #N coins, one per side (Yes and No). Multi-price question markets consist of multiple grouped outcomes (price buckets plus a fallback), each with its own Yes/No coin pair. Use the outcomeMeta endpoint Zuordnung von Münzindizes zu Marktbezeichnungen und Seiten.
  • Ausnahme: „PURR/USDC“ ist die einzige Spot-Münze, auf der ein Name zu lesen ist

Es gibt keine Überschneidungen zwischen den Formaten. „BTC“ bezieht sich immer auf den BTC-Perpetual-Kontrakt; der Spot-BTC ist "@142". Um zu entdecken @index Zuordnungen für Spot-Token, Abfrage der Meta oder spotMeta Info-Endpunkte.

Antwortfelder

L4BookUpdatesUpdate

FeldTypBeschreibung
Zeituint64Block-Zeitstempel in Millisekunden
Höheuint64Blockhöhe
MomentaufnahmeboolTrue when the diffs carry a full reset snapshot of all resting orders (sent on subscribe and for mid-stream replacement resets)
diffsL4OrderDiff[]Typed per-order diffs for this block

L4OrderDiff

FeldTypBeschreibung
diff_typeL4OrderDiffTypeL4_ORDER_DIFF_TYPE_NEW (order entered the book), L4_ORDER_DIFF_TYPE_UPDATE (order size changed), or L4_ORDER_DIFF_TYPE_REMOVE (order left the book)
MünzeZeichenketteSymbol (z. B. „BTC“, „ETH“)
oiduint64Eindeutige Bestell-ID
BenutzerZeichenketteEthereum des Auftraggebers
SeiteZeichenkette„A“ (Ask/Verkaufen) oder „B“ (Bid/Kaufen)
pxZeichenketteOrder price as a decimal string
szZeichenketteNew/current order size for NEW and UPDATE diffs. Omitted on REMOVE

Proto-Definition

StreamL4BookUpdates ist definiert in orderbook.proto:

service OrderBookStreaming {
rpc StreamL4BookUpdates (L4BookUpdatesRequest) returns (stream L4BookUpdatesUpdate);
}

message L4BookUpdatesRequest {
repeated string coins = 1;
}

enum L4OrderDiffType {
L4_ORDER_DIFF_TYPE_UNSPECIFIED = 0;
L4_ORDER_DIFF_TYPE_NEW = 1;
L4_ORDER_DIFF_TYPE_UPDATE = 2;
L4_ORDER_DIFF_TYPE_REMOVE = 3;
}

message L4BookUpdatesUpdate {
uint64 time = 1;
uint64 height = 2;
repeated L4OrderDiff diffs = 3;
bool snapshot = 4;
}

message L4OrderDiff {
L4OrderDiffType diff_type = 1;
string coin = 2;
uint64 oid = 3;
string user = 4;
string side = 5;
string px = 6;
string sz = 7;
}

Beispiele für Aktualisierungen

Initial Snapshot (first message, truncated)

The first message has snapshot: true and contains every resting order as a NEW diff. Later messages can also carry snapshot: true as a replacement reset; handle each one the same way:

{
"time": 1781109063794,
"height": 586404872,
"snapshot": true,
"diffs": [
{ "diff_type": "L4_ORDER_DIFF_TYPE_NEW", "coin": "BTC", "oid": 54764492622,
"user": "0x039442e06b482Bf01A1a65742cf061bD73A80f31", "side": "B", "px": "62963", "sz": "0.00009" },
{ "diff_type": "L4_ORDER_DIFF_TYPE_NEW", "coin": "BTC", "oid": 54764537698,
"user": "0x3643290CD5DE72b37d2f10A351Ce57c30d103969", "side": "B", "px": "62963", "sz": "0.00024" },
{ "diff_type": "L4_ORDER_DIFF_TYPE_NEW", "coin": "BTC", "oid": 54764482173,
"user": "0x4547B9E33F07965711f67d0bE2423939A4E33aF5", "side": "B", "px": "62955", "sz": "0.00015" }
]
}
Per-Block Update with Removals

sz is omitted on REMOVE diffs:

{
"time": 1781109083796,
"height": 586404997,
"diffs": [
{ "diff_type": "L4_ORDER_DIFF_TYPE_REMOVE", "coin": "BTC", "oid": 54764554671,
"user": "0xc64cc00B46101bd40aA1C3121195E85c0B0918d8", "side": "B", "px": "62389.0" },
{ "diff_type": "L4_ORDER_DIFF_TYPE_REMOVE", "coin": "BTC", "oid": 54764557274,
"user": "0xc64cc00B46101bd40aA1C3121195E85c0B0918d8", "side": "B", "px": "62421.0" }
]
}
New Order and Size Update

A new order entering the book:

{
"time": 1781109115476,
"height": 586405189,
"diffs": [
{ "diff_type": "L4_ORDER_DIFF_TYPE_NEW", "coin": "ETH", "oid": 54764586686,
"user": "0x768484F7e2EBB675C57838366C02Ae99ba2A9B08", "side": "B", "px": "1649.1", "sz": "1.022" }
]
}

A size change on a resting order (sz is the new current size):

{ "diff_type": "L4_ORDER_DIFF_TYPE_UPDATE", "coin": "ETH", "oid": 54764551695,
"user": "0x4547B9E33F07965711f67d0bE2423939A4E33aF5", "side": "B", "px": "1702.9", "sz": "0.0032" }

API-Nutzung

gRPC
// Single coin
const request = {
coins: ['BTC']
};

// Multiple coins in one stream
const multiRequest = {
coins: ['BTC', 'ETH']
};

// All coins
const allCoinsRequest = {
coins: []
};

gRPC

StreamL4BookUpdates ist nur über die gRPC -API verfügbar (OrderBookStreaming Dienst). Er ist nicht über JSON-RPC oder WebSocket verfügbar.

Comparison: L4 Book Updates vs L4 Book vs Book Updates Dataset

FunktionStreamL4BookUpdatesStreamL4BookBUCH_AKTUELLES
GranularitätIndividual orders, typed diffsEinzelbestellungenEinzelne Abweichungen auf Auftragsebene
Diff encodingTyped protobuf (NEW/UPDATE/REMOVE)JSON-encoded data stringJSON objects
Beinhaltet den aktuellen StandYes (reset snapshot as NEW diffs)Yes (initial snapshot)No (forward-only)
Erfordert REST-BootstrapNeinNeinJa
Coins per streamMultiple (or all coins)One coin per streamFilterable
Details pro BestellungUser, oid, side, px, szBenutzer, OID, Trigger, Zeitstempel, TIFBenutzer, OID, Größe
Am besten geeignet fürPer-order book tracking without JSON parsingFull order detail (triggers, tif, cloid)Kunden, die lediglich Buchaktualisierungen benötigen

Wichtige Hinweise


  • Reset on every snapshot: true Nachricht: The first message is a full reset with all resting orders as NEW diffs, and replacement resets can arrive mid-stream (for example after an ALO priority fee queue insertion). Clear any local state and rebuild whenever Momentaufnahme is true, not only on subscribe and reconnect
  • REMOVE omits sz: Remove diffs identify the order by oid (with Münze, Benutzer, Seite, px) but carry no size. Delete the order from your local map
  • Typed alternative to StreamL4Book: If you need trigger info, timestamps, tif, oder Kloid per order, use StreamL4Book; if you need lean typed per-order movement, use this stream
  • zstd compression recommended: Enable zstd compression on your gRPC channel to reduce bandwidth, especially when streaming multiple coins

  • StreamL4Book - Full order book at order granularity with snapshot + JSON-encoded diffs
  • StreamL2BookDiff - Incremental L2 price-level changes with sequence numbers
  • Aufträge - Ereignisse im Auftragslebenszyklus (eröffnet, ausgeführt, storniert usw.)