Phoenix — Program ID & Overview
PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY Phoenix is a high-performance on-chain orderbook on Solana built by Ellipsis Labs. It uses a FIFO (first-in, first-out) matching engine and settles trades atomically within the same transaction, eliminating the need for cranking.
Program ID
PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY
Key differences from OpenBook
| Feature | Phoenix | OpenBook V2 |
|---|---|---|
| Settlement | Atomic (same tx) | Requires cranking |
| Matching | FIFO | Price-time priority |
| Event processing | Inline | Event heap |
| Token-2022 | Not supported | Supported |
| Seat system | Required for makers | Open orders account |
Market structure
| Account | Description |
|---|---|
| Market | Single account containing all orderbook state |
| Seat | Per-maker authorization to post orders |
| Base vault | SPL Token account for base token |
| Quote vault | SPL Token account for quote token |
Phoenix compresses the entire orderbook into a single market account, reducing the number of accounts needed per transaction.
Seat system
To place limit orders (make markets), traders must have a seat. Seats are approved by the market authority. Taker orders (market orders, IOC) do not require a seat.
Order types
| Type | Description |
|---|---|
| Limit | Rests on the book at a specified price |
| IOC (Immediate-or-cancel) | Fills immediately, cancels unfilled portion |
| FOK (Fill-or-kill) | Fills entirely or cancels entirely |
| Post-only | Rests on book only, rejected if it would match |
Key instructions
| Instruction | Description |
|---|---|
PlaceLimitOrder | Places a limit order on the book |
Swap | Executes a market order (taker) |
CancelOrder | Cancels a specific order |
CancelAllOrders | Cancels all of a maker’s open orders |
RequestSeat | Requests maker authorization |
WithdrawFunds | Withdraws settled funds |
Reading the orderbook
import * as phoenix from "@ellipsis-labs/phoenix-sdk";
const client = await phoenix.Client.create(connection);
const marketAddress = new PublicKey("...");
const market = client.markets.get(marketAddress.toBase58());
const ladder = market.getUiLadder(5); // 5 levels
console.log("Bids:", ladder.bids);
console.log("Asks:", ladder.asks);
FAQ
Why does Phoenix not need cranking? Phoenix settles trades atomically within the order placement transaction. When a taker order matches against resting orders, balances are updated immediately. This eliminates the event queue and crank step that OpenBook requires.
What tokens are traded on Phoenix? Phoenix markets focus on high-volume pairs: SOL/USDC, SOL/USDT, and select other tokens. Market creation is permissioned — new markets require approval from the Phoenix team.
Is Phoenix routed through Jupiter? Yes. Jupiter includes Phoenix as a liquidity source, so Phoenix liquidity is available to any swap routed through Jupiter’s aggregator.
Updated: