Blackpool is moving to Solana. Launch today.Moving to Solana, launch today. The contract address will be posted on @BlackPoolRH only. Funds on Robinhood Chain stay withdrawable.@BlackPoolRH
The first dark pool for tokenised stocks

Trade tokenised stockswithout showing your hand.

Orders go in sealed, open together, and cross at the Uniswap midpoint in one batch on Robinhood Chain. Nobody sees your size before the batch stops taking orders.

On a public pool, every order is a signal.

A swap on Robinhood Chain is readable before it lands: the stock, the size, the worst price you will accept. That is enough to trade ahead of you or to learn what you hold. Blackpool keeps the order sealed until the batch closes, then fills it against the other side at the price the pool already shows.

A swap routed to the poolexample · public from the first byte
swap(
  pool      NVDA / USDG   fee 0.30%
  zeroFor1  true          selling USDG
  amount    250,000.00 USDG
  limit     ≤ 226.00 USDG per share
)

Anyone watching sees the stock, the side and the size, and has time to act on them.

The same order on Blackpool sealed until settlement
commitSealed(
  0x9c4e7d21b0f65a3e8c12d4f07b9a6e3c
    5d80f2a91c47e6b3d05f8a29c1e7a1f0,
  tlock(drand round 32,637,548)
)
bond      1.00 USDG

A hash, a fixed bond, and the order encrypted to a drand round at the end of the batch. Market, side, size and limit are opened inside the settlement transaction.

Seal. Open at settlement. Cross at the midpoint.

Batches run back to back on the Ethereum block clock that Robinhood Chain exposes as block.number, one block every 11.4 seconds.

commit · 16 L1 blocks · orders go in as hashesreveal · 5settleV4 midpointbuyers fill 6/10 pro rata, the rest returns to the vaultsellers fill in fullillustration · sizes in sharessealed
01Commit16 blocks

You post keccak256 of your order and a random salt, with a 1 USDG bond, plus the order timelock-encrypted to a drand round nobody can read before the batch closes.

02Reveal5 blocks

Nothing to do: encrypted orders stay sealed. If you chose to reveal it yourself, you open it here; the contract checks it against the hash and locks the size.

03Settlewithin 26 blocks

The keeper decrypts, opens and settles in one transaction; after 13 blocks anyone can. Every crossed order fills at the pool midpoint. What does not cross goes back to your vault.

The pool sets the price. Blackpool hides the order.

Each market reads the canonical Uniswap V4 pool of the stock against USDG. Blackpool never trades on it; it only reads slot0 through extsload.

Read from the chainL1 block 26,353,631 · 05:11:31 UTC
MarketPool midpointListing venue, lastGapPrice guardV4 pool
SPYSPYSPDR S&P 500 ETF Trust$735.71$733.00 NYSE Arca+0.37 %0.60 %0xfe2a…26cd
METAMETAMeta Platforms$603.02$605.08 Nasdaq-0.34 %1.00 %0x5875…ae36
NVDANVDANVIDIA$185.53$181.60 Nasdaq+2.17 %1.00 %0x3bb3…4bf1
AAPLAAPLApple$343.04$344.17 Nasdaq-0.33 %1.00 %0xc748…8fdb
GOOGGOOGLAlphabet Class A$283.06$282.57 Nasdaq+0.17 %1.00 %0xd4ec…ac5e
TSLATSLATesla$347.44$343.69 Nasdaq+1.09 %1.50 %0x8517…d32e
MSFTMSFTMicrosoft$532.58$535.93 Nasdaq-0.62 %1.00 %0x9194…9579
SPCXSPCXSpaceX$126.97$123.62 Nasdaq+2.71 %2.00 %0x8567…7448
AMZNAMZNAmazon$257.50$260.21 Nasdaq-1.04 %1.00 %0xd326…9333

Midpoint from each pool's slot0, the same value the contract reads at settlement. The listing venue price is for comparison and is the last regular-session trade, so the gap widens while the exchange is closed.

What stays sealed, and what never was.

Hidden until settlement

  • Which stockThe market id is inside the hash.
  • Buy or sellBoth sides post the same bond from the same USDG balance.
  • SizeNothing is locked from the vault until the order is opened.
  • Limit priceInside the hash and the timelocked ciphertext.

Public, and we say so

  • Your vault balancesDeposits and withdrawals are ordinary transfers.
  • That you committedThe commitment and its bond are visible.
  • The order, at its drand roundAnyone can decrypt it a few seconds before settlement. Self-revealed orders are public for the reveal window.
  • Your fillSettlement emits every fill with its price.

Next, not live: proof of funds in zero knowledge

Version 2 shipped encrypted orders and a reference price. Next: a Noir circuit proving the vault can cover a sealed order without saying which one, so balances stop leaking intent. Written into the roadmap, not into the contract you can use today.

Read the plan

One price, fairly split.

Settlement takes the lighter side in full and fills the heavier side pro rata. Every division rounds in favour of the venue, so the contract never pays out more than it took in; the dust goes to the treasury.

mid      = price(PoolManager.extsload(slot0))
buys     = Σ usable USDG   where mid ≤ limit
sells    = Σ shares × mid  where mid ≥ limit
matched  = min(buys, sells)
fill(o)  = o.size × matched / side total
Batch21 L1 blocks, about 4.0 min
Reveal window5 blocks, about 57 s
Settlement window26 blocks, then the batch is void
Commit bond1.00 USDG, returned on reveal
Matching fee0.10 % per side, in USDG
Fee ceiling0.50 %, changes wait 48 h
Fee split80 % stakers, 20 % treasury
Price guard0.60 to 2.00 % from the batch average
Orders per market96 per batch

Stake $BPOOL. Share every matching fee.

80 % of every matching fee and every forfeited bond is streamed to $BPOOL stakers, in USDG, by the same settlement call that crosses the book. No emissions, no lockup.

$BPOOLlive
Launch venue
Pons, Robinhood Chain
Staking reward
USDG
Stake token setter
set, frozen
Contract
0xa32CDb…6A0F20

Stop showing your hand.

Launch appWhat the contract guarantees