Perpetual futures on Solana

Know the price. Not the size.

A size-blind CLOB for perpetuals on Solana. Your exact size hides behind a SHA-256 commitment until settlement, while side, price, and size band stay public. The privacy is not free: it costs about 0.2 bps in a wider quote, a number we measured instead of assuming.

Hidden until settlement
Taker size
<50ms on MagicBlock ER
Matching
Atomic, Solana devnet
Settlement
OFFLINE
SOL/USDC MARK
-
24H VOLUME
-
OPEN INTEREST
-
ER BLOCK
-
Powered by Pyth Lazer

What sealing size buys and costs

Three properties we actually ship, with the evidence attached.

Slicing an order advertises it

Reinforcement-learning market makers detect and adversely select sliced meta-orders (arXiv 2510.27334). Splitting a whale order does not hide it, it advertises it. Here an order carries a band, not a quantity, so the size you are working never reaches the tape until the fill settles.

arXiv 2510.27334sliced orders leak

Dark Commit, at ER latency

commitment = SHA-256(salt || size_lots || leverage_bps || trader), published at placement and verified on-chain at settlement. The commit-reveal shape is the one the literature proves stops severe front-running (arXiv 2301.13785), and the two-phase delay costs nothing at Ephemeral Rollup speed.

sha256 commit-revealrevealed at claim_fill

The cost is measured, not assumed

56 simulated configurations in research/band-signal price what size blindness does to a quote. On the live 5-band schedule the maker's break-even half-spread is 1.991 bps against 1.790 bps on a transparent CLOB, and the uninformed taker pays 1.771 bps against 1.532 bps. Hiding size costs the taker about 0.2 bps, and we publish that because we ran it.

research/band-signal56 configurations
What is not claimed: flow privacy, or a better deal for the maker. The fill tape after settlement leaks magnitude, and under size blindness the maker quotes about 11% wider, so the taker carries the cost. For a risk-averse maker the gap widens to 1.351 bps and BLOCK-band volume falls from 14.7% to 2.8% of flow. DarkBook hides pre-trade size, nothing more.

docs/PRIVACY_MODEL.md, research/band-signal

ARCHITECTURE

How DarkBook works

From a committed order to atomic settlement. Exact size exists on-chain only as a SHA-256 digest until claim_fill.

Place Order (size commitment)Fill → claim_fill (size revealed)Mark price feedCreate PositionAccountLiquidation oracleTraderPhantom WalletMagicBlock ERSub-50ms MatchingPyth LazerSub-1ms OracleSettlementAnchor ProgramPositionOn-chain PDA
01
Commit
Order placed with SHA-256 size commitment
02
Match
CLOB matching in <50ms on ER
03
Reveal
claim_fill verifies plaintext vs commitment
04
Mark
Pyth Lazer marks the position
05
Settle
Position created atomically on-chain
ORDER BOOK

Exact size committed. Band public.

Book shows side, price, and size band. Exact lot size stays behind SHA-256 until settlement.

SIMULATED PREVIEWLive network: connect wallet to see real book
SOL-PERP
PRICE (USDC)
SIZE BAND
LEV
DEPTH
176.75
SMALL
10x
176.50
SMALL
2x
176.25
SMALL
5x
176.00
MED
10x
175.75
MED
2x
175.50
SMALL
20x
SPREAD$0.50MARK: $175.00
175.00
SMALL
5x
174.75
MED
2x
174.50
LARGE
10x
174.25
SMALL
5x
174.00
SMALL
5x
173.75
SMALL
2x
SMALL≤8 lots
MED≤64 lots
LARGE≤512 lots
BLOCK≤4,096 lots
WHALE≤32,768 lots
COMPETITIVE ANALYSIS

DarkBook vs the field

Graded honestly. Partial marks are partial: residual trust in the ER validator and settler is documented, not hidden.

ProtocolPrivacyLatencyDecentralizedMax LeverageSettlementMEV Resistant
DarkBook
This protocol
<50ms20xSolana devnet
Hyperliquid~100ms50xHyperEVM
Drift Protocol400ms+20xSolana
Dexlab500ms+10xSolana

* Latency measured as order submission to match confirmation. Decentralization based on validator set / admin key control.

The stack

Every layer was picked for execution latency, not for a logo wall.

Matching
MagicBlock Ephemeral Rollup
OrderBook PDA delegated to a dedicated ER validator. Book flow never leaves the ER until the state root commits to L1.
Book
BTreeMap price-time priority
Side, price, leverage, and size band are public. Exact size_lots is a SHA-256 commitment until claim_fill.
Oracle
Pyth Lazer
Sub-1ms pull feeds so liquidation marks do not lag the tape.
Settlement
Anchor on Solana devnet, Jito bundles
Fills settle atomically. Admin keys burned, permissionless cranking, immutable risk engine.
Client
TypeScript DarkbookClient SDK
ECIES channel carries the salt to the settler. The commitment, not the size, travels on-chain.