Skip to main content
DAMM v2, or Dynamic Automated Market Maker v2, builds upon the original DAMM, to provide a powerful, yet hassle-free way to add liquidity and earn fees on Solana. DAMM v2 allows you to deposit tokens into a pool, which are then used as liquidity for traders, bots, and aggregators to swap tokens, earning you fees with every trade. But it is much more configurable than your typical AMM, with features tailored for a wide variety of liquidity providers, token launches, and launchpads. Features for LPs include:

Broad Token Support

Supports a wide range of SPL tokens and select Token 2022 extensions, letting you provide liquidity for more token types.

Dynamic Fees

Dynamic fees boost the fees you earn during periods of high market volatility, helping LPs maximize returns when trading activity increases.

Anti-Sniper Tools

Advanced anti-sniper tools, such as the Fee Scheduler, start with higher fees to penalize snipers and gradually reduce fees over time for regular traders.
LPs also have:

Receive Fees in Quote Token

Choose to receive your liquidity provider fees directly in a stable quote token like USDC, instead of the pool tokens.

Flexible Liquidity Locking & Vesting

Lock your memecoin liquidity with a customizable vesting period or even permanently lock it, while still being able to claim your earned fees.

Transfer LP Position via NFT

Effortlessly transfer your liquidity position to another person by simply sending the NFT that represents your LP position.
Token creators can even:

Launch With a Single Token

Launch a new pool using just your token, without needing USDC or other stablecoins.

Custom Trading Start Time

Set a specific future time when pool trading should be enabled, allowing for launches, announcements, or fair trading starts.

Concentrated Liquidity Ranges

Open a pool with a fixed price range to provide higher capital efficiency, similar to Uniswap v3-style concentrated liquidity.
On the Pool List page, once you’ve selected the token pair and DAMM v2 pool you’d like to add liquidity into, click on it and you would enter the specific pool’s detail page.
To illustrate the various features of DAMM v2, we will be referring to a few pools in this guide, for example SOL-USDC, URANUS-USDC, WLFI-USD1, and ICM-SOL.

Total Value Locked

At the top left of the pool detail page, you can vi ew the pool’s TVL (Total Value Locked). This is the total amount of token assets in the pool in terms of $USD value (how much all the tokens currently in the pool are worth). DAMM v2 allows both permanent and non-permanent locking of liquidity, and the TVL section would show the following:
  • Vested Liquidity: % of liquidity non-permanently locked for at least 3 months (at this point in time)
  • Permanently Locked Liquidity: % of liquidity permanently locked in the pool
Here’s a screenshot of this example pool: URANUS-USDC

Price Range

For most DAMM v2 pools created via the Meteora user interface (website), the price range supported is 0 to infinity. But for certain DAMM v2 pools created programmatically using our documentation, they could be configured to have a more concentrated price range with a specific min price and max price for higher capital efficiency. Once a pool is created, the price range for that specific pool is fixed and can never be adjusted again. Here’s a screenshot of the example pool: SOL-USDC, where the price range is concentrated at 70 - 440 USDC/SOL.

Liquidity Allocation

The TVL is further broken down into the amount of each token in the pool. In this screenshot of the example pool ICM-SOL, $820,815.85 in TVL is actually made up of 24,451,511 ICM and 2,064.47 SOL.
To support Token 2022 tokens and extensions at DAMM v2 pool creation, a token badge from the project team must be provided. However, some extensions (e.g. transfer hook) are presently unsupported.
In the Liquidity Allocation section, you can view a snippet of the token’s contract address. Click the icon next to it to access important quicklinks; to copy the token’s contract address, view the contract address on solscan, check for token risks on Rugcheck.xyz, or analyze the token behaviour on Bubblemaps.
You can also view the Jupiter Organic Score for the token and if the token has any risks.

Pool Details

Current Pool Price

The Current Pool Price may not always be close to the general market price, especially when it was just created with a wrong initial price and has low liquidity. Check that the pool price is in sync with the market price prior to adding liquidity, to avoid incurring a loss due to arbitrage trades.

24h Volume

Volume generated by the pool in 24h

24h Fee

Total fees collected by the pool in 24h

Base Fee

Minimum trading fees earned when swaps occur through the pool

Dynamic Fee

Additional fee charged on each trade based on real-time price volatility

Liquidity Provider Fee

BaseFee+DynamicFeeBase Fee + Dynamic Fee

Protocol Fee

Amount of fees charged on each trade which goes to the protocol or integrations. For standard DAMM v2 pools, Protocol Fee is typically 20% of the LP Fee.

Fee Collection Token

  • Pool creators can choose how LPs receive fees from the pool; whether in Base + Quote tokens, or Quote token only.
  • For example, in a URANUS-SOL pool, pool creators can set it such that LPs receive fees in both URANUS and SOL tokens (the typical AMM process), or receive fees only in SOL tokens. Once the pool is created, the selected Fee Collection Token cannot be changed.
  • As an LP, you can choose the specific DAMM v2 pool that has the Fee Collection Token that fits your requirements.

Fee Scheduler

  • DAMM v2 supports Anti-Sniper mechanisms such as the Fee Scheduler, where fees start higher at launch then drop over time until it reaches the Base Fee.
  • Pool creators that enable the Fee Scheduler at pool creation, must also select their preferred mode; between the “Exponential” mode or “Linear” mode.
  • For pool creators who set up a Fee Scheduler using our Pool Creation UI on our website, the starting fee would be 50%.
  • For pool creators who set up a Fee Scheduler programmatically using our documentation (not via the Pool Creation UI), they can configure certain parameters, such as the starting fee %.
  • As an LP, you can choose the specific DAMM v2 pool that has the Fee Scheduler mode and parameters that fit your requirements.
Exponential Fee Scheduler In this ICM-SOL pool example, Exponential mode is used. Fees started at 50% before dropping exponentially over time until it reached 1% after 60 seconds.
Linear Fee Scheduler In this WLFI-USD1 pool example, Linear mode is used, and fees started at 10% before dropping linearly over time until it reached 0.25% after 3 minutes.

Pool Address

On each DAMM v2 pool detail page, you can also easily open up the pool address page on the solscan explorer if required.

Community Built-in Tools

Meteora’s LP Army comprises many talented developers, who have over time built useful tools to improve LPing for everyone. The full list of tools can be found here.

Pool Chart

Popular data analytics and charting tools with more granular data have integrated Meteora’s liquidity pools, including Birdeye, GeckoTerminal, DEXScreener, DEXTools, GMGN. We’ve provided buttons that link to the specific pool page for each of these tools.

Supported Trading Platforms

Popular trading platforms and bots have also integrated Meteora’s liquidity pools, including Axiom, Banana Gun, BONKbot, Fluxbot, Jupiter, MetaSolanaBot, Photon, and Trojan. We’ve provided buttons that link specifically to each of the trading platforms. Note: For pools without SOL as the quote token, BONKbot, Photon, and Axiom won’t be in the list.

Total Positions

By default, when you create a new DAMM v2 pool or you add liquidity to a pool, you would have one position in the pool. Even if you add more liquidity, it gets added to the same position. This position is represented by a unique liquidity position NFT that you hold in your wallet address. But DAMM v2 can support multiple individual liquidity positions, so if your friend has a separate position in the same pool, and sends his liquidity position NFT to your wallet address, you would then see that you now have 2 liquidity positions (your original position and the new position sent to you). The number of positions you see on the UI would correspond to the number of unique position NFTs you hold in your wallet. On the UI, you can only select and view the details for one liquidity position at a time.

Total Deposits

This represents the total $ value of all your deposits in all your liquidity positions.

Position Value

This represents the $ value of your deposits in the specific liquidity position selected.

Fees from position

This represents the $ value of the accumulated fees for the specific liquidity position selected. For DAMM v2, fees earned by the LP do not auto-compound into the pool. They accumulate separately and have to be manually claimed by the LP.

How to Add Liquidity

Firstly, navigate to the “Deposit” tab.

Enter Deposit Amount

Under the “Deposit” tab, under “Enter deposit amount”, you can enter the amount of Base token or Quote token you’d like to deposit into the pool. The corresponding $USD value will be shown at the bottom of your input.
When you enter an amount for either the Base or Quote Token, Meteora automatically fills in the approximate amount of the other token based on the current liquidity allocation ratio.
For example, if the SOL in the pool comprises 44.93% of liquidity, while USDC comprises 55.07%: When you enter 2 USDC, the SOL input field will automatically state approximately ~0.109525293 SOL, which is equivalent to (2 / 55.07) x 44.93 = ~$1.63). The amount used may differ slightly from the expected token ratio because the token ratio within the active price bin is constantly changing as swaps occur. We’ve also provided a “Max” and a custom “%” button near the Base and Quote token fields. Clicking “Max” automatically enters your entire balance of the respective token, while clicking the custom % button automatically enters an amount based on the % indicated (e.g. 50%) After the Base token and Quote token input fields are filled, under “Deposit info”, you can check your deposit details before you confirm your transaction:
  • The estimated amount you will get
  • The Minimum Received
  • The Maximum Slippage %, which you can preset
Once you have verified that the details are acceptable, click the “Deposit” button.

Setting Liquidity Slippage

You can adjust how much change to the pool price you’re willing to accept and still add liquidity. If the pool price changes a lot while adding liquidity, your transaction may fail. Increase this slippage to improve your success rate.

How to Withdraw Liquidity

On the pool detail page, navigate to the “Withdraw” tab. Enter the amount of liquidity (LP tokens) to withdraw. In the “Withdraw Info” section, you will see a summary of how many Base tokens and Quote tokens you’d be getting:
  • The estimated amount you will get
  • The Minimum Received
  • The Maximum Slippage %, which you can preset
Once you have verified that the details are acceptable, click the orange “Withdraw” button.

How to Lock Liquidity

If you have never added and locked liquidity on Meteora before, “My locks” would show “No locks found”.

Permanent Lock Liquidity

Token teams, especially memecoins, can decide if they wish to permanently lock their liquidity on Meteaora. Liquidity gets sent to a lock token account but fees will still be claimable. To do this, navigate to the “Permanent Lock” tab and enter the amount of LP tokens you’d like to lock permanently. You’d be able to see the total value you’re locking up, as well as the individual token amounts and their equivalent $ value. When you’re ready, click the “Lock Liquidity” button. A pop-up would appear requesting confirmation. You would have to type in the text “permanently lock my liquidity never to get it back” as a way to confirm the transaction.
If you had permanently-locked your assets, you would no longer be able to access or withdraw those underlying assets.

Non-Permanent Lock Liquidity

LPs also have the option to lock their liquidity in a “Non-permanent” manner, also known as a lock with vesting. This means that the liquidity is locked and released over a preset period of time. To begin, select the “Non-permanent” tab and enter the lock amount for the LP token. There are a few parameters that you’d have to decide based on your preferences and requirements, such as:
  • Vesting Start Date
  • Vesting Duration (Minute)
  • Cliff (Optional) (Minute)
  • Unlock Schedule (Minutely)
Once these parameters are all filled up, you can proceed to click the “Lock Liquidity” button.

FAQ

Using DAMM v2 on the Meteora UI

1. When you deposit tokens into the pool, how is the LP token amount calculated?

When you deposit the token amounts on Meteora FE, it will calculate and specify the lp_token before it is sent to the program to execute. Example:
  • From token B: amount_b = lp_token (pool.current_sqrt_price - pool.min_sqrt_price)
  • So you can reverse: lp_token = (pool.current_sqrt_price - pool.min_sqrt_price) / amount_b
How is the fee collected when the pool creator selects fee collection mode as Quote only? Regarding how DAMM 2 collects fee only using the Quote token (“Token B”):
  • If a user swaps from A -> B, fee is charged on B; protocol takes some of the user’s B
  • If a user swaps from B -> A, fee is charged on B before the swap is calculated; protocol takes some of the user’s B before it gets swapped to A

Liquidity Position NFT

1. What does the position state of the NFT manage?

The position state manages unlocked_liquidity + locked_liquidity + vested liquidity. User can interact with the following flows in the same, single position:
  • Permanently lock part of the liquidity
  • Create multiple vesting schedules
  • Add more liquidity (unlocked liquidity)

2. Can I transfer a position NFT (which represents a liquidity position)?

Yes. For example, you already have a position in a pool, which is represented by a position NFT. Someone also has a position in that same pool and he sends you his position NFT. Now you would have 2 position NFTs (positions) for the same pool.

Farming

Farming user interface is coming soon.
For DAMM V2, there is an in-built farming mechanism within the program. This is unlike DAMM v1, where there is a separate farming program. For DAMM v2, each specific pool can create farming rewards and the pool has its own unique reward vault. Each reward vault can have a maximum of 2 types of reward tokens. When the initialize_reward program endpoint is used, a reward_vault for the specific pool is created, and the initiator can specify the reward token (max 2 types) for the reward_vault Rewards will be shared with all liquidity providers over the farming duration. Currently, in this beta stage, DAMM v2 Farming is not available on the Meteora UI.
I