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.
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.
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.
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.
commit(
0x9c4e7d21b0f65a3e8c12d4f07b9a6e3c
5d80f2a91c47e6b3d05f8a29c1e7a1f0
)
bond 1.00 USDGA hash and a fixed bond. Market, side, size and limit are not on-chain until the reveal window opens.
Batches run back to back on the Ethereum block clock that Robinhood Chain exposes as block.number, one block every 11.4 seconds.
You post keccak256 of your order and a random salt, with a 1 USDG bond. The order itself stays in your browser.
You open the order. The contract checks it against the hash, locks the size from your vault balance and returns the bond.
Anyone can settle. Every crossed order fills at the pool midpoint read in that block. What does not cross goes back to your vault.
Each market reads the canonical Uniswap V4 pool of the stock against USDG. Blackpool never trades on it; it only reads slot0 through extsload.
| Market | Pool midpoint | Listing venue, last | Gap | Price guard | V4 pool |
|---|---|---|---|---|---|
| SPYSPYSPDR S&P 500 ETF Trust | $768.84 | $767.18 NYSE Arca | +0.22 % | 0.60 % | 0xfe2a…26cd |
| METAMETAMeta Platforms | $778.13 | $777.59 Nasdaq | +0.07 % | 1.00 % | 0x5875…ae36 |
| NVDANVDANVIDIA | $225.90 | $224.58 Nasdaq | +0.59 % | 1.00 % | 0x3bb3…4bf1 |
| AAPLAAPLApple | $335.97 | $335.92 Nasdaq | +0.02 % | 1.00 % | 0xc748…8fdb |
| GOOGGOOGLAlphabet Class A | $343.07 | $342.36 Nasdaq | +0.21 % | 1.00 % | 0xd4ec…ac5e |
| TSLATSLATesla | $380.68 | $377.94 Nasdaq | +0.72 % | 1.50 % | 0x8517…d32e |
| MSFTMSFTMicrosoft | $497.97 | $497.93 Nasdaq | +0.01 % | 1.00 % | 0x9194…9579 |
| SPCXSPCXSpaceX | $149.18 | $148.03 Nasdaq | +0.78 % | 2.00 % | 0x8567…7448 |
| AMZNAMZNAmazon | $250.10 | $249.38 Nasdaq | +0.29 % | 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.
Hidden until the reveal window
Public, and we say so
Version 2, not live: proof of funds in zero knowledge
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.
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
| Batch | 21 L1 blocks, about 4.0 min |
| Reveal window | 5 blocks, about 57 s |
| Settlement window | 26 blocks, then the batch is void |
| Commit bond | 1.00 USDG, returned on reveal |
| Matching fee | 0.10 % per side, in USDG |
| Fee ceiling | 0.50 %, changes wait 48 h |
| Fee split | 80 % stakers, 20 % treasury |
| Price guard | 0.60 to 2.00 % from the batch average |
| Orders per market | 96 per batch |
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.