> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# How to use DAMM v2

> User Guide

## Navigating DAMM v2 pools

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](https://meteoraag.medium.com/dynamic-amm-v2-helping-lps-and-launches-win-c56128c883ad) 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:**

<CardGroup cols={1}>
  <Card title="Broad Token Support" icon="coin" iconType="solid">
    Supports a wide range of SPL tokens and select Token 2022 extensions, letting you provide liquidity for more token types.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Dynamic Fees" icon="chart-simple" iconType="solid">
    Dynamic fees boost the fees you earn during periods of high market volatility, helping LPs maximize returns when trading activity increases.
  </Card>

  <Card title="Anti-Sniper Tools" icon="shield-check" iconType="solid">
    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.
  </Card>
</CardGroup>

**LPs also have:**

<CardGroup cols={1}>
  <Card title="Receive Fees in Quote Token" icon="coins" iconType="solid">
    Choose to receive your liquidity provider fees directly in a stable quote token like USDC, instead of the pool tokens.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Flexible Liquidity Locking & Vesting" icon="lock" iconType="solid">
    Lock your memecoin liquidity with a customizable vesting period or even permanently lock it, while still being able to claim your earned fees.
  </Card>

  <Card title="Transfer LP Position via NFT" icon="arrow-right-arrow-left" iconType="solid">
    Effortlessly transfer your liquidity position to another person by simply sending the NFT that represents your LP position.
  </Card>
</CardGroup>

**Token creators can even:**

<CardGroup cols={1}>
  <Card title="Launch With a Single Token" icon="arrow-up-right-dots" iconType="solid">
    Launch a new pool using just your token, without needing USDC or other stablecoins.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Custom Trading Start Time" icon="clock" iconType="solid">
    Set a specific future time when pool trading should be enabled, allowing for launches, announcements, or fair trading starts.
  </Card>

  <Card title="Concentrated Liquidity Ranges" icon="sliders" iconType="solid">
    Open a pool with a fixed price range to provide higher capital efficiency, similar to Uniswap v3-style concentrated liquidity.
  </Card>
</CardGroup>

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.

<Frame>
  <img src="https://mintcdn.com/meteora/xMKMoQSqQgEMI6aM/images/user-guide/navigate-damm-v2.webp?fit=max&auto=format&n=xMKMoQSqQgEMI6aM&q=85&s=0d91c84669872d4b98cca7e200fbc440" width="2285" height="1377" data-path="images/user-guide/navigate-damm-v2.webp" />
</Frame>

To illustrate the various features of DAMM v2, we will be referring to a few pools in this guide, for example [SOL-USDC](https://app.meteora.ag/dammv2/8Pm2kZpnxD3hoMmt4bjStX2Pw2Z9abpbHzZxMPqxPmie), [URANUS-USDC](https://app.meteora.ag/dammv2/7ccKzmrXBpFHwyZGPqPuKL6bEyWAETSnHwnWe3jEneVc), [WLFI-USD1](https://app.meteora.ag/dammv2/F6L1RKAKwNuWwyCwweja6uxAkRv41XFTRWmg8tKGkn83), and [ICM-SOL](https://app.meteora.ag/dammv2/FLuXAxxqMbLkKHWHHCAiX2ub8qZuoC9bb35bSRDNDMo2).

<Frame>
  <img src="https://mintcdn.com/meteora/xMKMoQSqQgEMI6aM/images/user-guide/icm-sol-damm-v2-pool.webp?fit=max&auto=format&n=xMKMoQSqQgEMI6aM&q=85&s=490c3ec0dd2ab2206b0d2965034e5b2f" width="2288" height="1381" data-path="images/user-guide/icm-sol-damm-v2-pool.webp" />
</Frame>

### 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](https://app.meteora.ag/dammv2/7ccKzmrXBpFHwyZGPqPuKL6bEyWAETSnHwnWe3jEneVc)

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-tvl.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=287f8759828d501b4efe52407d360a60" width="727" height="145" data-path="images/user-guide/damm-v2-tvl.webp" />
</Frame>

### 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](https://app.meteora.ag/dammv2/8Pm2kZpnxD3hoMmt4bjStX2Pw2Z9abpbHzZxMPqxPmie), where the price range is concentrated at 70 - 440 USDC/SOL.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-price-range.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=d8f17df49ed18b0bb4338eb663d6ab6d" width="759" height="602" data-path="images/user-guide/damm-v2-price-range.webp" />
</Frame>

### 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](https://app.meteora.ag/dammv2/FLuXAxxqMbLkKHWHHCAiX2ub8qZuoC9bb35bSRDNDMo2), \$820,815.85 in TVL is actually made up of 24,451,511 ICM and 2,064.47 SOL.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-liquidity-allocation.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=eb4185bed2078a882921b1f94a9ead3f" width="764" height="548" data-path="images/user-guide/damm-v2-liquidity-allocation.webp" />
</Frame>

<Note>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.</Note>

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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-liquidity-allocation-quick-links.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=23e85d7e9df170ce3425523098190d9e" width="341" height="141" data-path="images/user-guide/damm-v2-liquidity-allocation-quick-links.webp" />
</Frame>

<Tip>You can also view the Jupiter Organic Score for the token and if the token has any risks. </Tip>

### 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

```math theme={"system"}
Base Fee + Dynamic Fee
```

#### Protocol Fee

Amount of fees charged on each trade that goes to the protocol or integrations. For DAMM v2 pools, **20%** Protocol Fee and **80%** LP Fee apply to both standard and Launch Pools.

#### Referral Fee

Swap hosts can include a referral account in the swap transaction to receive a **Referral Fee** equal to **20%** of the protocol 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](https://app.meteora.ag/dammv2/FLuXAxxqMbLkKHWHHCAiX2ub8qZuoC9bb35bSRDNDMo2) pool example, Exponential mode is used. Fees started at 50% before dropping exponentially over time until it reached 1% after 60 seconds.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-exponential-fee-scheduler.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=77f8c5d92ae45722acb64a6dd15eff3b" width="1420" height="668" data-path="images/user-guide/damm-v2-exponential-fee-scheduler.webp" />
</Frame>

**Linear Fee Scheduler**

In this [WLFI-USD1](https://app.meteora.ag/dammv2/F6L1RKAKwNuWwyCwweja6uxAkRv41XFTRWmg8tKGkn83) pool example, Linear mode is used, and fees started at 10% before dropping linearly over time until it reached 0.25% after 3 minutes.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-linear-fee-scheduler.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=f61de8435abf6243fea4636f32a69ebf" width="715" height="343" data-path="images/user-guide/damm-v2-linear-fee-scheduler.webp" />
</Frame>

#### Pool Address

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

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-pool-address.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=89953dc30ba236ba208a0cd37a0a997a" width="729" height="77" data-path="images/user-guide/damm-v2-pool-address.webp" />
</Frame>

#### 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](https://www.lparmy.com/community-tools).

#### 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-pool-chart.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=a498eb6c472c671dcaf72ed6beca527a" width="566" height="106" data-path="images/user-guide/damm-v2-pool-chart.webp" />
</Frame>

#### 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-supported-trading-platforms.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=c45f7315b4e143e44433c5babb94ec57" width="655" height="141" data-path="images/user-guide/damm-v2-supported-trading-platforms.webp" />
</Frame>

#### 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-enter-deposit-amount.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=e6894362ee10ed0bf4174ad26885bcd4" width="541" height="658" data-path="images/user-guide/damm-v2-enter-deposit-amount.webp" />
</Frame>

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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-liquidity-allocation-ratio.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=38b6776c91c6ad3cc08eddf415728324" width="726" height="182" data-path="images/user-guide/damm-v2-liquidity-allocation-ratio.webp" />
</Frame>

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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-deposit.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=31a24d7f5a37ddfa403214774dd4d36c" width="514" height="257" data-path="images/user-guide/damm-v2-deposit.webp" />
</Frame>

### 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-setting-liquidity-slippage.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=a2da3f2299fef9c90ac33c3a0ddc58f3" width="541" height="412" data-path="images/user-guide/damm-v2-setting-liquidity-slippage.webp" />
</Frame>

## 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-withdraw.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=59bcc9ab578fd9ee5f3272569b251bb9" width="539" height="740" data-path="images/user-guide/damm-v2-withdraw.webp" />
</Frame>

## How to Lock Liquidity

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

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-my-locks.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=0e4bffb57e63ab39f4328aa0abc392a1" width="536" height="741" data-path="images/user-guide/damm-v2-my-locks.webp" />
</Frame>

### Permanent Lock Liquidity

Token teams, especially memecoins, can decide if they wish to permanently lock their liquidity on Meteora. 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.

<Note>If you had permanently-locked your assets, you would no longer be able to access or withdraw those underlying assets.</Note>

### 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.

<Frame>
  <img src="https://mintcdn.com/meteora/aMC-jKNXyXhA4Xlj/images/user-guide/damm-v2-lock-liquidity.webp?fit=max&auto=format&n=aMC-jKNXyXhA4Xlj&q=85&s=d27663ce7e08ab8fd79706a61f70fb61" width="518" height="201" data-path="images/user-guide/damm-v2-lock-liquidity.webp" />
</Frame>

## 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

<Note>Farming user interface is coming soon.</Note>

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.
