TTornaCurb

Pre-IPO, on an order book

TornaCurb

There is no exchange for OpenAI stock, so an AMM has no formed price to quote against. An order book does not need one — it discovers the price from the orders themselves. TornaCurb runs a central limit order book per listing on the Torna index, with every B+ tree node in its own account so quotes at different price levels commit in the same slot. Place, take and cancel are real devnet transactions; the book is read straight from the tree, with no indexer.

First time here? Three minutes, no wallet needed

Pre-IPO

no exchange anywhere — the book is the price

Listed

a real exchange price, used to check the book

Devnet test tokens with no value — not shares, and not PreStocks tokens. TornaCurb has no affiliation with any company listed. Full notice

Pyth referenceloading
BASE / QUOTEdevnet
Best bid
1005
Mid
1006
Best ask
1008
Spread
3
market accounts in Explorer
Your wallet (optional)

Connect a devnet wallet to trade as yourself and fund it from the faucet, or just use a pre-funded demo trader below. No wallet needed to try it.

Trade as
Balances (Trader 1)
-
Base
-
Quote
-
SOL
Order booklive
pricesizemaker
100853B68J
100829B68J
100958B68J
100954B68J
101451FUdv
1005spread 31008
100561FUdv
100547FUdv
100267FUdv
100038FUdv
99454B68J

Place rests a limit order on the book (you are the maker).

this price crosses the book; a place would rest crossed. Switch to Take to match.
Your open orders
no open orders
Recent activity live market activity
typeside / size @ priceage
Build your own on Torna

From a key to the exact accounts

This is what any integrating program does, not just this venue. You call with a key; the SDK reads the tree and emits the exact account set. The hard parts (node indices, PDA bumps, the descent path, split spares) never leave the library. Below is a real place resolved live on devnet.

what you write
import { Tree, keys } from "torna-sdk";

const tree = new Tree(program, creator, askTreeId);
const key  = keys.orderKey(Side.Ask, price, slot, maker, nonce);

// the planner reads the tree off-chain and returns the exact accounts
const { ix } = await placeIx({ reader, tree, side: ASK, price, size, ... });
// node_idx / bump / path / spares: never touched by you
what the SDK resolved (live, devnet)
resolving…