Skip to main content
  • initialize_pool requires a static config key. The pool PDA is derived from "pool" + staticConfig + the sorted token mint pair.
  • initialize_pool_with_dynamic_config requires a dynamic config key and the configured pool_creator_authority signer. The pool PDA is derived from "pool" + dynamicConfig + the sorted token mint pair.
  • initialize_customizable_pool does not use a config key. The pool PDA is derived from "customizable_pool" + the sorted token mint pair.
DAMM v2 configs define how pools are created and how pool fees are initialized. The cp-amm program currently supports two config account types:
  • Static config: stores the pool fee parameters, collect fee mode, activation type, optional alpha vault config, price range, and optional pool creator authority.
  • Dynamic config: stores only the config index and pool_creator_authority; the pool creator supplies the pool-specific fee, activation, alpha vault, price range, and liquidity parameters when calling initialize_pool_with_dynamic_config.
The config account uses config_type = 0 for static configs and config_type = 1 for dynamic configs.

Config Fields

Fee Parameters

pool_fees contains a base fee, optional dynamic fee, protocol fee percent, referral fee percent, and optional compounding fee bps.

Base Fee Modes

For the current pool version, base fees are bounded from 1 bps (0.01%) up to 9,900 bps (99%). Operator post-creation fee updates are capped at 10%.

Collect Fee Modes

Static Configs

Static configs can be used to create pools with initialize_pool. If pool_creator_authority is the default pubkey, any payer can create a pool with that static config. If it is non-default, only that authority can create pools with the config. Static configs are useful when the token pair cannot be bought before launch time. Launchpads typically prefer dynamic configs when they need launch-specific fee curves or authority-gated pool creation. To fetch static config key addresses, use the getAllConfigs function in the TypeScript SDK.
Integrators cannot change the configuration for that particular static config key.
When dynamicFee = true, the pool includes the optional volatility-based dynamic fee. The total trading fee is the base fee plus the current dynamic fee, capped by the pool version’s maximum fee.

Dynamic Configs

Dynamic configs are authority-gated. The config account stores only the index, config_type = 1, and pool_creator_authority; the authority signer must be present when creating a pool with initialize_pool_with_dynamic_config. When using a dynamic config, the pool creator supplies these values during pool creation: This model is usually the best fit for launchpads and integrators that need custom launch fee curves while preventing unauthorized pool creation for the same token pair and config.
If you’re a launchpad or integrator that’s keen to create your own unique custom pool config key with custom pool_fees, please reach out to the team on discord.