Whirlpool
DEX & liquidity
A Whirlpool is the on-chain account for one Orca CLMM pool. It stores the active sqrt price, the current liquidity inside range, the fee rate, the tick spacing, and pointers to the token vaults. Every swap reads the Whirlpool, walks tick arrays, and writes the updated sqrt price and liquidity back to the same account.
Detailed explanation
The Whirlpools program ID is whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc. A Whirlpool PDA is derived from the WhirlpoolsConfig account, the two token mints, and the tick spacing. That means a single token pair can have multiple pools at different fee tiers, the same way Uniswap v3 has multiple pools per pair.
The Whirlpool account layout includes the sqrt-price (Q64.64), the tick spacing, the current tick index, the fee growth global checkpoints for both tokens, the current in-range liquidity, the protocol fee rate, and reward configurations. Most of those fields update on every swap. Anyone reading the pool off chain has to re-decode after every account write.
Tick arrays sit alongside Whirlpool accounts. The Whirlpool knows where price is. The tick arrays know what liquidity activates when price crosses each tick. Together they are enough to simulate any swap deterministically without an RPC round trip.
One opinion: a lot of "Solana DEX dashboards" show price from Whirlpool reserves instead of from sqrt price. That is wrong for CLMM pools because the reserves are not the invariant; price is. Read the sqrt price field.
Whirlpools also expose a small reward emissions array on the pool account. Up to three reward tokens can be streamed to in-range LPs at a configurable rate. The emissions state updates whenever someone calls collect_reward, which makes it a noisy field on Geyser if you are filtering for price changes only. Watch the sqrt price field, the current tick index, and the liquidity field; ignore the rest unless you specifically care about LP rewards.
When you'll see this
Every Whirlpools swap, position open, position close, and fee collection touches the Whirlpool account. On a Geyser stream filtered by program ID, the Whirlpool updates are the high-frequency signal you watch for price.
How NoLimitNodes uses this
Our Orca Enhanced Stream decodes Whirlpool account updates and emits parsed events with sqrt price, tick index, and in-range liquidity already extracted. Pair it with the position events to track LP performance per pool over time.
Related terms
- Tick Array · An 88-tick storage account in Orca Whirlpools that holds the liquidity bitmap a swap walks across.
- Sqrt Price · The square root of price stored as a Q64.64 fixed-point number, the math primitive every CLMM uses.
- Position NFT · The non-fungible token that represents ownership of a CLMM liquidity position with its own price range.
- CLMM · Concentrated Liquidity Market Maker. LPs choose a price range, and capital only earns fees inside that range.
- LB Pair · The Meteora DLMM liquidity-book account that stores the active bin, fee parameters, and the pool reserves.