Skip to main content
Track DAMM v1 releases here.
Tracked vault LP supply

Release summary

What We Shipped

  • Version 1 vaults price LP shares with vault.total_lp_supply
  • SDK 2.0.0 quotes pool LP with pool.lpMintSupply (program 0.5.6) and vault LP with vault.totalLpSupply (program 0.5.7)

Program: meteora-dynamic-amm 0.5.7

Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB

Fixed

  • Version 1 vaults price LP shares with vault.total_lp_supply. The pool reads vault.total_lp_supply for version 1 vaults and lp_mint.supply for legacy (version 0) vaults.

Changed

  • libs/mercurial-vault uses the new vault layout: the last strategy slot (MAX_STRATEGY 30 → 29) now holds version, total_lp_supply and _padding0. Account size and the offsets of later fields are unchanged.
  • swap, add_balance_liquidity, add_imbalance_liquidity, remove_liquidity_single_side, lock, claim_fee, bootstrap_liquidity, get_pool_info and permissionless pool initialization read the vault LP supply with VaultUtils::get_vault_lp_supply instead of *_vault_lp_mint.supply (program 0.5.6).

Added

  • New error InvalidVaultLpSupplyAccounting, returned when a version 1 vault has total_lp_supply lower than its LP mint supply.

TypeScript SDK: @meteora-ag/dynamic-amm-sdk 2.0.0

SDK PR #229This SDK release includes program 0.5.6 and program 0.5.7 changes.

Added

  • getVaultLpSupply to get the vault LP supply used for share pricing

Changed

  • Sync IDL with DAMM v1 program 0.5.7
  • Bump @coral-xyz/anchor and @coral-xyz/borsh to 0.31.1
  • Quotes price pool LP with pool.lpMintSupply (program 0.5.6) and vault LP with vault.totalLpSupply for version 1 vaults (program 0.5.7)
  • getLpSupply and poolState.lpSupply return pool.lpMintSupply (program 0.5.6)

Removed

  • moveLockedLP, the program has no move_locked_lp endpoint

Fixed

  • Stable pool single side withdraw passes the requested out amount as minimum_out_amount instead of 0
  • Swap quotes charge a minimum trading and protocol fee of 1 token, as the program does
  • Balanced deposit quotes round token amounts up, as the program does

Breaking Changes

  • AmmIdl is the Anchor 0.30+ IDL JSON and Amm is its type. Load it with @coral-xyz/anchor 0.30 or later: new Program({ ...AmmIdl, address }, provider)
  • calculateSwapQuote and calculatePoolInfo callers must pass vaultALpSupply and vaultBLpSupply from getVaultLpSupply
  • calculatePoolInfo, StableSwap.computeImbalanceDeposit, and StableSwap.computeWithdrawOne take pool lpSupply from pool.lpMintSupply (getLpSupply / poolState.lpSupply)

Rust quote: dynamic-amm-quote 0.0.6

SDK PR #229

Changed

  • compute_quote prices vault LP with Vault::get_lp_supply (program 0.5.7)
  • Vault state uses the 0.5.7 layout with version and total_lp_supply, Pool state adds lp_mint_supply
  • rust-client deposit and pool info use the same LP supplies as the program
  • PoolError includes the program errors up to InvalidVaultLpSupplyAccounting (6065)
Tracked pool LP supply

Release summary

What We Shipped

  • Pools price LP shares with pool.lp_mint_supply
  • Withdrawals reject LP accounts that the user does not own

What To Do

IntegratorsWhat ChangedWhat To Do
Trading Terminals
  • LP value, add, and remove liquidity quotes now use pool.lp_mint_supply (program-tracked supply), NOT the SPL Token mint supply.
  • Withdrawals must be initiated by the LP account owner. Delegates are not accepted; only the owner signature is valid.
  • Update all quoting and display logic to source the LP supply from pool.lp_mint_supply.
  • Require the LP token account owner to sign for any withdrawal transactions; remove any flows relying on delegate authorities for LP burn.
  • Upgrade to @meteora-ag/dynamic-amm-sdk@2.0.0 (see SDK changelog under program 0.5.7 for further details).
Swap Routers
  • Must quote add/remove liquidity and pool shares using pool.lp_mint_supply instead of SPL Token mint supply.
  • Cannot use delegate for LP withdrawals—only the true owner is authorized.
  • Pull LP supply from pool.lp_mint_supply in every calculation and quote surfaced to routing engines.
  • Enforce and verify that the user initiating a withdraw is the LP token account owner.
Partners
  • Program tracks and controls all LP supply through pool.lp_mint_supply; integrations relying on direct SPL LP supply queries must update their logic.
  • remove_balance_liquidity and remove_liquidity_single_side require the LP token account owner to sign. LP in an account owned by the System Program or the incinerator can no longer be withdrawn.
  • Liquidity operations on pools with pool.lp_mint_supply < lp_mint.supply will be rejected until patched by administrator.
  • Review any off-chain accounting, analytics, or bots that track LP value or liquidity quoting and ensure pool.lp_mint_supply is used exclusively.
  • Prepare for stricter signer requirements for all withdrawals and liquidity removals; update any automation or user flow dependent on delegate signatures.

Program: meteora-dynamic-amm 0.5.6

Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB

Fixed

  • LP shares are priced with pool.lp_mint_supply, which changes only when the program mints or burns LP.
  • remove_balance_liquidity and remove_liquidity_single_side require user_pool_lp.owner == user before burning LP.

Changed

  • add_balance_liquidity, add_imbalance_liquidity, remove_balance_liquidity, remove_liquidity_single_side, lock, claim_fee and get_pool_info use pool.lp_mint_supply instead of lp_mint.supply.
  • Pool initialization, bootstrap_liquidity, add liquidity, remove liquidity and claim_fee update pool.lp_mint_supply by the amount of LP minted or burned.
  • bootstrap_liquidity additionally requires pool.lp_mint_supply == 0, so a pool whose LP was burned to zero outside the program can not be re-bootstrapped.

Added

  • New error LpMintSupplyAccountingNotPatched, returned when pool.lp_mint_supply is lower than lp_mint.supply.
  • New error InvalidLpOwner, returned when user_pool_lp is not owned by user in remove_balance_liquidity or remove_liquidity_single_side.

Breaking Changes

  • Every existing pool must have pool.lp_mint_supply set before this version is deployed. Liquidity operations on a pool where pool.lp_mint_supply < lp_mint.supply fail with LpMintSupplyAccountingNotPatched.
  • remove_balance_liquidity and remove_liquidity_single_side no longer accept an LP account that user only controls as a delegate; the LP account owner must sign as user.
  • Off-chain integrations that compute LP value or quote add/remove liquidity must read pool.lp_mint_supply instead of the LP mint supply.
Zap Protocol Fee Support
Mainnet deployment for Release 0.5.3 is planned for February 10, 2026, at 11:00 AM UTC+8 (Tuesday).

Release summary

What We Shipped

  • Zap Protocol Fee Support

Program: meteora-dynamic-amm 0.5.3

Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB

Changed

  • Upgrade to anchor 0.31.1
  • Add new endpoint create_operator_account and close_operator_account that allows admin to manage different operator accounts
  • Add new account Operator, that would stores whitelisted_address as well as their operational permissions
  • Add new endpoint zap_protocol_fee that allow operator to claim protocol fees and zap out to SOL/USDC or other token in pool and send to treasury address

Breaking Changes

  • withdraw_protocol_fees can only be performed by an operator. The endpoint now requires max_amount_a and max_amount_b as arguments. The accounts passed in have also been changed.

Fixed

  • Fixed initialization of stable swap error with AmountNotPeg due to the precision loss of the underlying vault exchange rate.