TTorna

The reference app, built on Torna

TornaDEX

TornaDEX is a central limit order book built on the Torna index, the live proof that the primitive works end to end. Trade as one of four pre-funded demo identities, or connect your own wallet and grab demo tokens from the faucet. Place, take, and cancel are real devnet transactions; the book is read straight from the on-chain B+ tree, with no indexer.

BASE / QUOTEdevnet
Best bid
-
Mid
-
Best ask
-
Spread
-
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 booksyncing
pricesizemaker

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

rests as maker · sell 3 @ 103
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 an integrating program does, not just TornaDEX. 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…