Skip to main content
DLMM Pro is in beta and is subject to breaking changes.
DLMM Pro is Meteora’s concentrated liquidity AMM built on ticks. LPs place liquidity in price ranges, makers place limit orders at single prices, and both live in the same tick state, so one swap fills LP liquidity and limit orders together. A pool’s tick spacing, fee schedule, fee token and optional extensions are fixed when it is created, either by a static config or by the creator of a dynamic-config or launch pool. Positions and limit orders are Token 2022 NFTs, so they can be transferred, delegated and tracked like any other token.
DLMM Pro runs on the program dPro1D5wiqnGMH8vMDG23jh35btTHoWdyqXjqkqxe8n on mainnet and devnet.

Ticks, Not Bins

Every tick is a 0.01% price step. A pool’s tick spacing (1 to 256) sets how far apart LP range edges and orders can be.

Multi-Range Positions

One position NFT holds up to 45 ranges, each with its own liquidity, fees and rewards. Spot, Curve and Bid-Ask shapes are built from these ranges.

Limit Orders in the Pool

Orders of up to 25 ticks sit beside LP liquidity, fill at the exact tick price and earn a share of the trading fee.

Scheduled and Dynamic Fees

Fixed, time-scheduled or market-cap-scheduled base fees, plus an optional fee that rises with volatility. Fees range from 0.01% to 99%.

Launch Controls

Activation rules open swaps at a set time, and deposits and withdrawals at a set time or once the price reaches a target, with a whitelisted wallet for each action.

Liquidity Mining

Pools with the liquidity mining extension stream up to two reward tokens to in-range liquidity.

How DLMM Pro Works

A pool stores the current price as a square-root price and the tick it falls in. Liquidity is recorded at ticks: each tick holds the change in LP liquidity at that price (liquidity_net) and the limit orders resting there. Ticks live in tick arrays, and the pool keeps a bitmap of which tick arrays hold anything, so swaps skip empty stretches of the price curve. A swap starts at the current price and walks toward the next tick that holds liquidity. Between ticks it trades against LP liquidity, and the price moves along the curve. When it reaches a tick with resting limit orders on the other side of the trade, it fills those orders at that tick’s price, then crosses the tick, applies its liquidity change and keeps going. A swap is always exact-in: it consumes the whole input or fails. The pool account stores the two token mints and their reserve accounts, the creator, the fee settings and the dynamic fee state, the partner and protocol fee balances, the active liquidity, the initial and current square-root price, the current tick, the fee growth per unit of liquidity for each token, the inline tick array bitmap, the activation point, the pool status and the extension data. Everything else sits in separate accounts: A typical life of a pool:
  1. A pool is created with a token pair, an initial price, a tick spacing, a fee schedule, a fee token and an activation type. Nothing about these can be changed afterwards.
  2. LPs open positions and deposit. Each range edge creates or updates a tick, and the pool’s active liquidity changes if the range contains the current tick.
  3. Makers open limit orders. Each order tick stores the deposited amount on the tick.
  4. A swap works out one fee rate from the pool’s fee settings, then walks ticks in the direction of the trade. At each tick it fills LP liquidity, then orders, takes the fee on the step and splits it, then crosses the tick and moves on until the input is used up.
  5. LPs and makers collect: LPs claim fees and rewards from a position, makers cancel an order to get their proceeds, referrals are paid inside the swap or cancel, and partners and Meteora claim their balances from the pool.
  6. Positions and orders are closed, which burns the NFT and returns the rent.
A swap also needs the tick arrays it will pass through in its transaction. If they run out before the input is used up, it fails with NotConsumingFullAmountIn. The caller sets a minimum output, and the swap fails with ExceededSlippage if the output after any transfer fee is lower. Read Ticks and Liquidity for the price grid and Limit Orders for how orders at one tick are filled.

DLMM Pro and DLMM

DLMM Pro is a separate program from DLMM, and pools on one cannot be used from the other. The main differences: The DLMM column comes from the DLMM overview and its collect fee mode page. Limit orders on DLMM Pro are not a pool mode, so they work together with liquidity mining, and a position can overlap its own ranges to build a shape with fewer slots.

Limits at a Glance

Who DLMM Pro Is For

Build a position from several ranges instead of one, shape it with Spot, Curve or Bid-Ask weights, and adjust it without closing it. Locked and vesting liquidity keeps earning fees and rewards.
Place bids and asks at exact prices inside the pool. Filled orders earn half of the fee charged on the volume they fill, and relative orders protect you if the price moves before the transaction lands.
Start a pool with a high fee that falls over time or as the price rises, open trading at a set time, keep deposits and withdrawals closed to the public until a set time or a price milestone, and run a reward campaign from the pool itself.
The TypeScript SDK and the Rust commons crate quote exact-in swaps with the same math as the program, including limit-order fills and Token 2022 transfer fees.

Explore DLMM Pro

Ticks and Liquidity

Tick prices, tick spacing, ranges, tick arrays and how a swap moves through them.

Positions

Multi-range NFT positions, liquidity shapes, fees, locks and delegates.

Limit Orders

Asks and bids at single ticks, fill order, maker fees and the order lifecycle.

Fees

Base fee modes, the dynamic fee, the fee token, and where each part of a fee goes.

Pool Creation and Activation

Static configs, dynamic configs, launch pools and activation rules.

Liquidity Mining

Reward slots, emission schedules and rewards emitted while no liquidity is in range.

Token 2022 Support

Which mints work without review, token badges, transfer fees and transfer hooks.

Formulas

The math behind prices, liquidity amounts, fees, fee schedules and rewards.
Concentrated liquidity earns fees only while the price is inside your ranges. If the price leaves every range of a position, that position stops earning trading fees until the price returns or you move the liquidity.