Skip to main content
Every market has a central limit order book: all resting buy orders on one side, all resting sell orders on the other, sorted by price. A trade happens when an incoming order crosses the gap between them. The book is on-chain. Its state is part of the committed chain state, which means it is the same book for everyone, and any node can reconstruct exactly what it looked like at any block.

Structure

spread
best ask
50,000 − 49,950 = 50mid 49,975
best bid
A market buy for 1.00.2 fills at 50,000
0.3 fills at 50,100
0.5 fills at 50,200
Average ≈ 50,130 — not the 50,000
quoted at the touch. That gap is what
a market order does not show you.
Asks — sellers
Bids — buyers
50,2000.5
50,1000.3
50,0000.2
49,9500.4
49,9000.6
49,8001.2
Best bid is the highest price a buyer will pay. Best ask is the lowest price a seller will accept. The gap between them is the spread, and the midpoint between them is the mid — used as a reference in several places, including the funding premium. Depth is how much size sits at each price level. It is what determines whether your order fills near the touch or walks into worse prices.

Priority

Orders fill by price first, then time. Price is obvious: a buyer offering more is served before one offering less. Time is where this venue differs from most. “Time” is your order’s position in the committed block sequence — not when it arrived at a node. Two orders in the same block have a precedence every validator computes identically, from consensus-committed data. No amount of network proximity changes it. Between blocks, arrival still matters; within a block, the microsecond race does not exist. The sequencing rules compound this: cancellations execute before aggressive orders in the same block, so a stale quote can be pulled and cannot be picked off by an order that arrived alongside the cancel.

Reading depth before you submit

The best bid and ask are what you see quoted. They are not what you get if your order is larger than what sits there. Walking the ask side of the book above: A market buy for 0.2 fills entirely at 50,000. A market buy for 1.0 fills across all three levels — average price around 50,130, not the 50,000 shown at the touch. This is why market orders carry a bound derived from the depth your size would actually consume, and why splitting a large order across time or price usually costs less than taking it at once.
A useful habit before any order large relative to the book: compute the worst price your size would reach, not just the touch. The difference between those two numbers is the cost a market order hides.

Prices are integers

Book prices are integer multiples of the market’s tick size, and sizes are multiples of its lot size. There is no floating point on the execution path — a rounding difference between two nodes would be a fork. See Precision.

What the book does not show

Conditional orders are not on the book. Stops, take-profits, and other conditional orders rest in a separate store watching a price. They occupy no queue position and contribute no depth until they trigger. The practical consequence: depth in a fast-moving market can be thinner than the book suggests is available, because a move through a cluster of triggers converts a set of invisible orders into real ones at once — all on the same side.

Where to go next

Order types

What you can place onto the book, and what rests versus takes.

Market orders

How the depth-derived bound protects a market order.

Transaction sequencing

Why cancels beat aggressive orders in the same block.

Matching

How the book is structured and walked inside the kernel.