Native orderbook
The reference node's spot book matches orders against the shared ledger at 0x1001. Its development market trades base asset 1 against native JOLT 0. The separate 0x1000 order registry is a place/read/cancel proof and is not a matching market.
Price-time priority
Buys take the lowest crossing asks; sells take the highest crossing bids. Equal prices use the oldest order ID, allocated in execution order. Each fill uses the resting maker's price, and any unfilled remainder rests at the incoming order's original limit.
| Resting asks | Price in ticks | Quantity in lots |
|---|---|---|
| Older maker A | 10 | 3 |
| Maker B | 11 | 4 |
A buy for five lots at a limit of eleven fills three at ten and two at eleven, spending 52 quote units. The buyer must initially back all five lots at its limit, or 55 units. Price improvement leaves three units as cash. Ticks/lots are development integers, not display prices without market precision metadata.
Cash and soft reservations
A bid reserves limit price × remaining lots; an ask reserves remaining base lots. Reserving alone does not move funds. Authorized transfers, fees or locks can reduce backing, so the same journal resizes or cancels conflicting resting orders, retaining older orders first. A resized order does not regrow or regain quantity automatically.
Fills recheck listing, send/receive/trade permissions, expiry, hard locks and debit limits. Cancellation requires ownership and remains possible after permission revocation. A self-cross rejects the entire incoming operation, including tentative fills. The bounded development book holds at most 256 resting orders; that is not a production capacity target.
Solidity SDK example
Install the cpp-node Solidity SDK before compiling. This read-only contract uses the SDK's spot library and native-JOLT constant:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.37;
import {Spot} from "@joltzu/solidity-sdk/contracts/Spot.sol";
import {Precompiles} from "@joltzu/solidity-sdk/contracts/Precompiles.sol";
contract OrderbookReader {
function order(uint64 orderId) external view returns (
bool exists, address owner, uint8 side,
uint64 priceTicks, uint64 quantityLots
) {
return Spot.getOrder(orderId);
}
function reservedJolt(address owner) external view returns (uint256) {
return Spot.reserved(Precompiles.NATIVE_JOLT, owner);
}
}
For writes, Spot.placeOrder(Spot.SIDE_BUY, priceTicks, quantityLots) returns the order ID and remaining lots; Spot.cancelOrder(orderId) cancels an owned order. Side zero is buy, one is sell. Calls are zero-value; a calling Solidity contract owns its orders because it is the immediate caller. It needs its own balances and trading permissions. Authenticate any entry point that places or cancels your contract's orders. tx.origin does not supply ownership. Mutations cannot use STATICCALL or DELEGATECALL. Failed outer execution rolls back matching and both settlement legs.
The provisional place cost is 1,000,000 native gas, plus EVM/intrinsic overhead; supply-funded bids cost 1,100,000. The pool refuses transactions above 1,000,000 gas, so a placement cannot currently be admitted on the reference node. Use a compatible configured runner/chain and verify its gas profile. These constants need production calibration.
Supply-funded bids and quotes
placeBidFromSupply may redeem the caller's lending shares for an exact cash shortfall within a specified share cap, then places a fully cash-backed bid atomically. It does not keep the resting backing earning lending interest. Cancellation leaves cash in the account. Automatic supply-funded sells and continuing-interest reservations are future scope. Firm quotes and AMM liquidity provide different execution paths.
Wallet and World integration

Executable wallet swaps and the World's trading floor remain pending. The presale /trade screenshot illustrates a bonding curve, not order depth. Trading fees, calibrated pricing and arbitrary external-token markets are not established by this development profile; perpetual futures need separate margin and loss rules.