DAMM v1 pool addresses are derived differently depending on the pool type. Only some pools require a config key - others use just the token mints and curve information.
  • Permissionless pools w/o config: curveType + tokenAMint + tokenBMint
  • Permissionless pools w/ config: tokenAMint + tokenBMint + config
  • Permissioned pools: Use arbitrary addresses (not PDAs)
  • Customizable pools: "pool" + tokenAMint + tokenBMint
Configs are basically where you configure the fees of the pool and the time the pool starts trading. In a config, if the pool_creator_authority is 11111111111111111111111111111111, that means that it is a public config and anyone can use the config to create their DAMM v1 pool.
If you would like a private config, such that the pool_creator_authority is your specific public address, you can reach out to the team on discord to create a private config.
The list of config key addresses on devnet can be found here.
If you want to create an Alpha Vault along with your DAMM v1 pool, you will need to find a pool_config_key that is mapped to a vault_config_key that meets your requirements.
The list of vault config keys on devnet can be found here.
If there is no existing config in the list that fits your project’s requirement, you can reach out to the team on discord to create a new config.

Adding a Fee Scheduler to a Config

For DAMM v1, the anti-snipe Fee Scheduler is applied offchain. Our team at Meteora can assist in applying a custom fee scheduler for your pools where we will create a dedicated config key for your team with pool_creator_authority linked to your signer wallet for pool creation.
Because the fee scheduler is applied offchain, Meteora would need to customize the fee curve/schedule for you. You can’t do it on your own.
You can use the following API endpoint to check the associated fee scheduler configuration of a config key.

Understanding Pool Config Fields

FieldDescription
config_addressConfig key address
trade_fee_bpsPool trading fee
protocol_fee_bpsProtocol fee charged from pool trading fee (fixed)
activation_durationUsed to determine when exactly the pool will start trading
vault_config_keyAlpha vault config key. Address of the vault config key. If it is 11111111111111111111111111111111, means no alpha vault.
pool_creator_authorityAddress which can use the pool config key to create a pool. If it is 11111111111111111111111111111111, it’s public and available for everyone to use
activation_typePool activation type. 0 = slot, 1 = time
Pool Activation Time Calculation (depending on the activation_type)
  • current_time + activation_duration
  • current_slot + activation_duration

Pool Config Example

{
  "config_address": "FiENCCbPi3rFh5pW2AJ59HC53yM32eLaCjMKxRqanKFJ",
  "trade_fee_bps": 1500,
  "protocol_fee_bps": 2000,
  "activation_duration": 0,
  "vault_config_key": "11111111111111111111111111111111",
  "pool_creator_authority": "11111111111111111111111111111111",
  "activation_type": 0
}

User Flow Example

A pool config may or may not have an associated vault config. There’s no vault config associated when the vault_config_key is 11111111111111111111111111111111. When the pool config has a vault config, user can create the pool + Alpha Vault that is binded (auto-whitelisted) by the pool. The Alpha Vault created will inherit the parameters (Pro Rata / FCFS + buying_cap, vesting duration, etc.) from the vault config.

Creating Pool ABC/SOL with an Alpha Vault

Let’s say a user wants to create the pool ABC/SOL with an Alpha Vault, the user will need to:
  1. Check for pool config that have vault_config_key not = 1111..., and pool_creator_authority is the user or 1111... (accessible by the public)
  2. Based on the vault requirement the user wants, the user will need to:
    • a) Check all the pool configs from step 1, which are each mapped to a vault_config_key, as well as
    • b) Check for vault config and look for one that fits the requirement
  3. If the user finds a requirement that suits their needs, they can use that pool_config_key to create the pool, then use the pool config-mapped vault_config_key to create the vault. As long as vault_config_key is used, the vault is automatically whitelisted upon pool creation.
All the settings are already predefined by pool_config + its mapped vault_config_key.
The permutations for pool config + Alpha Vault are created by Meteora. Please reach out to us on discord if you need a specific configuration.

Pool Config Example

{
  "config_address": "8aPHoLN8ke6PhWeYA7ELi19fppptVYUCQvqKWR5yP1sn",
  "trade_fee_bps": 150,
  "protocol_fee_bps": 2000,
  "activation_duration": 1512000,
  "vault_config_key": "7ixojP8Zuu4csfTycHi8ywQymHm9zxAhu1TjnFuJaq2R",
  "pool_creator_authority": "5unTfT2kssBuNvHPY6LbJfJpLqEcdMxGYLWHwShaeTLi",
  "activation_type": 0
}

Alpha Vault Config Example

{
  "address": "7ixojP8Zuu4csfTycHi8ywQymHm9zxAhu1TjnFuJaq2R",
  "max_depositing_cap": 10,
  "start_vesting_duration": 1,
  "end_vesting_duration": 24107,
  "depositing_duration_until_last_join_point": 24107,
  "individual_depositing_cap": 1,
  "escrow_fee": 0,
  "activation_type": 0
}
In this example above, only the pool_creator_authority => 5unTfT2kssBuNvHPY6LbJfJpLqEcdMxGYLWHwShaeTLi can use the pool config 8aPHoLN8ke6PhWeYA7ELi19fppptVYUCQvqKWR5yP1sn to create a pool with the below settings:
  • 1.5% fee
  • 20% protocol fee (this is fixed Meteora fee)
  • Pool starts trading after 1512000 slot upon creation
  • Slot based activation
You can also create a binded Alpha Vault with FCFS config as shown below:
  • Max deposit cap = 10 token
  • Vested over 24106 slot after pool activate
  • Deposit opens at 24107 slot before vault crank
  • Every escrow maximum can only deposit 1 token