Under the hood
Pricing: the BBO read
The whole pricing stack is one read: the HyperCore best bid and ask for the market's asset, averaged into a mid on the market's tick grid. Toro adds guards on top that the target does not have.
The read
(bid, ask) = staticcall(0x…080e, abi.encode(assetIndex))
mid = (bid + ask) / 2 // integer, on the tick grid
price1e18 = mid × 10^(12 + szDecimals)The read reverts if either side is zero or the book is crossed, so no trade can price off an empty book.
What this gives up, and what it gives
Only markets with a Hyperliquid book can be listed. In return there is no off-chain component to trust: the BBO is HyperCore state, read in the same block as the trade.
Toro's guards
The target accepts any uncrossed book. Toro also checks each read against per-market limits, set from measured book data (Price guards):
| Market | Max spread | Max deviation | Reference |
|---|---|---|---|
| BTC | 10 bp | 10 bp | markPx |
| ETH | 25 bp | 10 bp | markPx |
| SOL | 45 bp | 25 bp | markPx |
| DOGE | 45 bp | 25 bp | markPx |
| WLD | 70 bp | 45 bp | markPx |
| ZRO | 55 bp | 35 bp | markPx |
| LIT | 90 bp | 45 bp | markPx |
| GOLD | 85 bp | 2,480 bp | oraclePx |
Freezing and retiring a market
The guardian can halt new opens everywhere, or freeze or retire one market. A frozen or retired market records its last mid; open positions close and liquidate at that frozen price. Retirement is permanent; a relisting uses a new market id.
Values on this page are read from the HyperEVM testnet deployment (chain 998, block 67249403) at build time.
Last updated 2026-10-18