Orca Whirlpools — Program ID & Overview
whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc Orca Whirlpools is a concentrated liquidity AMM on Solana. It allows liquidity providers to deposit tokens within specific price ranges, concentrating capital where trading activity occurs. Whirlpools is one of the most liquid DEX venues on Solana.
Program ID
whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
Architecture
| Account type | Description |
|---|---|
| WhirlpoolsConfig | Global configuration: fee authority, protocol fee |
| Whirlpool | Individual pool state: current tick, sqrt price, liquidity |
| TickArray | Array of 88 ticks storing liquidity data |
| Position | LP position: tick range, liquidity amount, fees owed |
Fee tiers
| Fee tier | Tick spacing | Typical use |
|---|---|---|
| 1 bps | 1 | Stableswaps |
| 4 bps | 2 | Correlated tokens |
| 8 bps | 8 | Mid-tier pairs |
| 30 bps | 64 | Standard pairs |
| 100 bps | 128 | Volatile pairs |
| 200 bps | 256 | Exotic pairs |
Key instructions
| Instruction | Description |
|---|---|
InitializePool | Create a new Whirlpool with initial sqrt price |
OpenPosition | Open an LP position with a tick range |
IncreaseLiquidity | Add tokens to a position |
DecreaseLiquidity | Remove tokens from a position |
Swap | Execute a swap |
CollectFees | Claim trading fees |
CollectReward | Claim reward emissions |
SDK integration
Orca provides a TypeScript SDK for interacting with Whirlpools.
import { WhirlpoolContext, buildWhirlpoolClient, ORCA_WHIRLPOOL_PROGRAM_ID } from "@orca-so/whirlpools-sdk";
const ctx = WhirlpoolContext.from(connection, wallet, ORCA_WHIRLPOOL_PROGRAM_ID);
const client = buildWhirlpoolClient(ctx);
const poolAddress = new PublicKey("...");
const whirlpool = await client.getPool(poolAddress);
const poolData = whirlpool.getData();
console.log("Current price:", poolData.sqrtPrice);
console.log("Liquidity:", poolData.liquidity);
Swap via SDK
const quote = await swapQuoteByInputToken(
whirlpool,
inputMint,
new BN(amountIn),
slippageTolerance,
ctx.program.programId,
ctx.fetcher,
);
const tx = await whirlpool.swap(quote);
const sig = await tx.buildAndExecute();
FAQ
How does Orca Whirlpools differ from Raydium CLMM? Both implement concentrated liquidity with tick-based pricing. The main differences are SDK ergonomics, fee tier options, and the ecosystem of tools around them. Many tokens have active pools on both.
What is a TickArray? A TickArray is an on-chain account that stores 88 consecutive tick states. Ticks track how much liquidity enters or exits at each price point. Swaps must include the relevant TickArray accounts in the transaction.
Can I earn rewards beyond trading fees? Yes. Pool creators can attach up to three reward emissions to a Whirlpool. LPs in positions that overlap the current price earn a share of these rewards proportional to their liquidity.
Updated: