Meteora
  • Meteora: The most dynamic and sustainable liquidity layer on Solana
  • PRODUCT OVERVIEW
    • Meteora Liquidity Pools
      • DLMM Overview
        • What is DLMM?
        • DLMM Program
        • Dynamic Fees
        • Strategies & Use Cases
        • DLMM Farming Rewards
      • DLMM Launch Pool Overview
      • Dynamic AMM Overview
        • What is a Dynamic AMM Pool?
        • Dynamic AMM LP Fee and APY Calculation
        • Creating a Dynamic AMM Pool via the UI
        • Claiming Fees from Permanently Locked Liquidity
        • Dynamic AMM Stable Pools
        • Dynamic LST Pools
        • Additional yield from Dynamic Vaults
        • Dynamic AMM Farm Overview
      • DAMM v2 Overview
      • Memecoin Pool Overview
        • Memecoin Pool v2
          • What is Memecoin Pool v2?
        • Memecoin Pool v1
          • What is Memecoin Pool v1?
          • Permanently Locking Liquidity
      • Stake2Earn Pool Overview
        • What is a Stake2Earn Pool?
        • Stake2Earn for Launchpads
      • Multi-Token Stable Pool Overview
    • Alpha Vault Overview
    • Dynamic Vault Overview
      • What is a Dynamic Vault?
      • Dynamic Vault Program
      • Hermes - Meteora's Keeper
        • Algorithm to find optimal yield allocations
        • Rebalance crank
        • Operation fee calculation
      • Design Goals
      • Security
      • Dynamic Vaults Whitepaper
      • Dynamic Vaults Community Explainers
      • Affiliate Program for Dynamic Vault
        • Become an Affiliate Partner (Dynamic Vaults)
    • Dynamic Bonding Curve (DBC) Overview
      • What is the Dynamic Bonding Curve?
      • Customizable Pool Configuration
      • Bonding Curve Formula
      • DBC Migrator Keeper
    • Meteora’s Anti-Sniper Suite
  • INTEGRATION
    • DLMM Integration
      • DLMM SDK
        • DLMM TypeScript SDK
        • CPI Examples
      • DLMM API
      • Fetching information on locked liquidity in a DLMM
    • Dynamic AMM Pool Integration
      • Dynamic AMM SDK
        • Dynamic AMM TypeScript SDK
        • CPI Examples
      • Dynamic AMM API
        • Pool Info
        • Pool State
      • Setting Pool and Fee Config for Dynamic AMM Pools
      • Create Dynamic Pool with Timestamp/Slot Activation
      • Dynamic AMM - Farm Integration
    • DAMM v2 Integration
      • DAMM v2 SDK
        • DAMM v2 TypeScript SDK
        • DAMM v2 Rust SDK
      • Setting Pool and Fee Config for DAMM v2
      • Technical FAQ
    • Memecoin Pool Integration
      • Memecoin Pool v2 Integration
        • Setting Pool and Fee Config for Memecoin Pool v2
      • Memecoin Pool v1 Integration
        • TypeScript Code Examples
        • CPI Examples
        • Setting Pool and Fee Config for Memecoin Pool v1
        • Track permanently-locked liquidity in Memecoin Pool v1
        • Track Protocol Fee from swaps in Memecoin Pool v1
    • Stake2Earn Pool Integration
    • Dynamic Vault Integration
      • Using TypeScript-Client
      • Using Rust-Client
      • Using CPI
      • Vault API
        • Vault Info
        • Vault State
      • Vault Developer Resources
    • Alpha Vault Integration
      • Alpha Vault TypeScript SDK
      • Alpha Vault without Whitelist Setup
      • Alpha Vault with Whitelist Setup
    • Dynamic Bonding Curve (DBC) Integration
      • DBC SDK
        • DBC TypeScript SDK
        • DBC Rust SDK
      • DBC Fee Scheduler Formula
      • Program Repo
      • Technical FAQ
  • TOKEN LAUNCH POOLS
    • Steps to Create a Pool for a Token Launch
      • Create: DLMM Launch Pool
      • Create: Dynamic AMM Pool
      • Create: Memecoin Pool v1
      • Create: Stake2Earn Pool
      • Create: Pools with Alpha Vault
        • Create: DLMM Launch Pool with Alpha Vault
        • Create: Dynamic AMM Pool with Alpha Vault
        • Create: Memecoin Pool with Alpha Vault
        • Create: Stake2Earn Pool with Alpha Vault
    • Anti-Sniper Fee Suite for a Token Launch
  • Resources
    • Audits
    • Meteora Program IDs
    • Meteora APIs
    • Devnet Testing
    • Community Data Dashboards & Tools
    • Meteora Brand Assets
    • THE MASSIVE METEORA STIMULUS PACKAGE
      • Overview
      • 1. Dynamic Liquidity Market Maker (DLMM)
      • 2. Formation Of An LP Army DAO
      • 3. The 10% Stimulus Proposal
  • USER FAQ
    • Getting Started LPing
      • Supported Wallets
      • Prepare SOL
      • SOL required for Rent
      • What is Wrapped SOL?
      • What is an AMM?
      • What does it mean to provide liquidity?
      • How to swap to the tokens required for adding liquidity to a pool
      • How to quickly check if a token has any risks
      • Viewing your transaction history
      • My wallet has been compromised. What should I do?
    • Differences between DLMM and Dynamic Pools
    • DLMM FAQ
    • Dynamic AMM FAQ
      • How is the pool price of the token calculated in a Dynamic AMM?
      • What is a Meteora LP token?
      • How do I see fees earned on a Dynamic AMM Pool?
      • How to track your earnings for a Dynamic Pool?
      • What is Virtual Price in a Dynamic Pool?
      • How do LP tokens, fees, and virtual price work for Dynamic Pools?
      • Why must I add liquidity in non-stable Dynamic Pools using a 50:50 value ratio?
      • What is AMP in a Dynamic Pool with stable coins?
      • Why is the USDT-USDC pool not 1:1 in ratio of assets?
      • Can I create an LST, FX, or Multi-token pool using the Dynamic Pool creation tool?
    • Alpha Vault FAQ
    • Why is the token sometimes not picked up and tradable on Jupiter?
    • How do I create a new farm?
    • Video Tutorials to Get Started
      • LP Army Boot Camp
      • DLMM Strategy Sessions / Jam Sessions
  • Security and Risks
    • Risk of Impermanent Loss (IL)
    • Risk of depositing into an imbalanced pool / pool with price out of sync
    • Smart contract risk
    • Risk of a stablecoin depeg
    • Operational risk for dynamic vaults and pools
    • Lending risk for dynamic vaults and pools
  • legal
    • Terms of Service
    • Stake2Earn Terms of Service
Powered by GitBook
On this page
  • Summary
  • Getting Started
  • 1. Install dependencies and initialize AmmImpl instance
  • 1.1 Install dependencies
  • 1.2 Initialize AmmImpl instance
  • 2. Choose a suitable Pool and Fee Config
  • 2.1 Public Pool Config List
  • 2.2 Default Pool Config used by Meteora Frontend
  • 2.3 New Custom Pool Config and Fee Curve for Integrators / Launchpads
  • 2.4 Custom Fee Curve for a Specific Pool
  • 3. Create the Memecoin Pool
  • How to assign which wallets can claim fees from the permanently-locked liquidity
  • 4. Create the Alpha Vault
  • Alpha Vault with Whitelist
  • Important Notes
  • After deployment
  • When can you withdraw tokens from the pool?
  • Other Configuration Details
  • General configuration
  • Some configuration constraints:
  • Create Base Token configuration
  • Dynamic AMM configuration
  • Alpha Vault configuration
  • Alpha Vault Prorata configuration
  • Alpha Vault Key Components
  • Other Alpha Vault Considerations
  1. TOKEN LAUNCH POOLS
  2. Steps to Create a Pool for a Token Launch
  3. Create: Pools with Alpha Vault

Create: Memecoin Pool with Alpha Vault

PreviousCreate: Dynamic AMM Pool with Alpha VaultNextCreate: Stake2Earn Pool with Alpha Vault

Last updated 3 days ago

Summary

are a subset of Dynamic AMM Pools. A Memecoin Pool is a Dynamic AMM Pool that has a fee scheduler, with liquidity permanently locked at pool creation.

Below we provide the code examples that can be used to initialize and seed a Memecoin Pool together with an Alpha Vault.

  • Memecoin Pool: A Dynamic AMM Pool created with a fee scheduler and with initial liquidity perma-locked.

  • Alpha Vault: Anti-sniper tool that allows depositors into the Alpha Vault to be the first to buy from the pool and be guaranteed a share of tokens at the same average price as all other depositors.

Getting Started

  • Dynamic AMM SDK:

  • NPM:

  • Alpha Vault SDK:

  • Alpha Vault Launch Calculation template: Copy this and adjust the numbers to help determine your preferred parameters.

  • Devnet:

1. Install dependencies and initialize AmmImpl instance

1.1 Install dependencies

# NPM
npm i @meteora-ag/dynamic-amm-sdk @coral-xyz/anchor @solana/web3.js @solana/spl-token
# YARN
yarn add @meteora-ag/dynamic-amm-sdk @coral-xyz/anchor @solana/web3.js @solana/spl-token
# Or, use any package manager of your choice.

1.2 Initialize AmmImpl instance

import AmmImpl, { MAINNET_POOL } from '@meteora-ag/dynamic-amm-sdk';
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
import { AnchorProvider, Wallet } from '@coral-xyz/anchor';

// Connection, Wallet, and AnchorProvider to interact with the network
const mainnetConnection = new Connection('https://api.mainnet-beta.solana.com');
const mockWallet = new Wallet(new Keypair());
const provider = new AnchorProvider(mainnetConnection, mockWallet, {
  commitment: 'confirmed',
});
// Alternatively, to use Solana Wallet Adapter

// Create single instance
const constantProductPool = await AmmImpl.create(mainnetConnection, MAINNET_POOL.USDC_SOL);
const stablePool = await AmmImpl.create(mainnetConnection, MAINNET_POOL.USDT_USDC);
// Or with any other pool address, refer to the pool creation section below
const pool = await AmmImpl.create(mainnetConnection, new PublicKey('...'));

// If you need to create multiple, can consider using `createMultiple`
const pools = [MAINNET_POOL.USDC_SOL, MAINNET_POOL.USDT_USDC];
const [constantProductPool, stablePool] = await AmmImpl.createMultiple(mainnetConnection, pools);

2. Choose a suitable Pool and Fee Config

Before creating the pool, you need to choose a suitable pool and fee config.

If you want to create an Alpha Vault along with your new pool, you also need to find a pool_config_key that is mapped to a vault_config_key that meets your requirements.

If none of the pool_config_key in the list meet your requirements, please reach out to Meteora for a custom pool config key.

2.1 Public Pool Config List

    • Using this endpoint, integrators can input the config pubkey, and it will return an array of fee update timings for the config, if there's any.

    • Integrators may choose a pool_config_key with a fee curve that suits your integration.

  • If there is no existing config in the list that fits your project's requirement, a new config needs to be created.

  • Only the Meteora team can create a new config to add it to the preset pool config list.

2.2 Default Pool Config used by Meteora Frontend

  • By default, Meteora's frontend is currently using this pool config key for Memecoin Pool creation: FiENCCbPi3rFh5pW2AJ59HC53yM32eLaCjMKxRqanKFJ

  • For the FiENCCbPi3rFh5pW2AJ59HC53yM32eLaCjMKxRqanKFJ pool config, it doesn't allow creation of any Alpha Vault, therefore it's field vault_config_key is 1111111...

2.3 New Custom Pool Config and Fee Curve for Integrators / Launchpads

Custom Pool Config Key: Integrators such as launchpads or other partners may need to use their own unique custom pool config key, if they want custom pool_creator_authority to prevent front-running of the token launch pool.

NOTE:

  • New dedicated config keys can only be created by Meteora. Please reach out to us if this is required.

  • The pool_creator_authority doesn't work with program address. It's not a program whitelist, it needs to be a PDA (program derived address) or normal account.

Custom Fee Curve: If you are an integrator, Meteora can also apply a custom fee curve/schedule for your pools, but we will need to create a dedicated config key for your team, where pool_creator_authority is linked to your signer wallet for pool creation. You would need to send us your signer wallet that would be used to deploy the pools.

NOTE:

  • Even with a dedicated config key for your team, Meteora would need to customize the fee curve/schedule for you. You can't do it on your own.

  • Custom Pool Config and Fee Curve is used by integrators such as Moonshot by DEX Screener.

2.4 Custom Fee Curve for a Specific Pool

If required, Meteora can set a custom fee curve for a single, specific pool. This would override the fee curve used by the pool's config key, doesn't matter which config key is used.

3. Create the Memecoin Pool

Using the example, update it with your pool config selected and other parameters in order to create a Memecoin Pool - which is a Dynamic AMM Pool with a fee scheduler and with liquidity (LP tokens) locked at creation.

How to assign which wallets can claim fees from the permanently-locked liquidity

Please refer to this example, in the section under let allocations = [

In the config file, you can specify different wallet addresses to receive fees from the locked liquidity, and the % to allocate to each wallet. Multiple wallets are possible, but their allocations must add up to 100%.

4. Create the Alpha Vault

After selecting your preferred pool config and creating a Memecoin Pool, please use this example to create the Alpha Vault:

Alpha Vault with Whitelist

For some launches, the project may want to restrict which wallet addresses are allowed to deposit funds into the Alpha Vault, so in the config file used in the script to create the Alpha Vault, the whitelistMode needs to be specified.

  • permissionless: No whitelist, anyone can deposit into the Alpha Vault

  • permission_with_authority: In this mode, only the Alpha Vault creator can create escrow account with max_cap. This allows the creator to use a permissioned (with whitelist) setup without having to use the merkle tree. Creator needs to pay SOL rent for each escrow account for the whitelisted wallets, so this Alpha Vault whitelist mode is suitable for scenarios where there are very few whitelisted addresses (e.g. =<100). If they need to support a lot more whitelisted addresses, they should still use the merkle tree (PermissionWithMerkleProof whitelist mode).

Important Notes

  • Currently, only SOL or USDC is accepted as the quote token when initializing a Memecoin Pool, Dynamic AMM Pool, or DLMM Pool with Alpha Vault in a permissionless setup. Since the Alpha Vault can't tell what the quote token would be, the quote token is limited to SOL or USDC. However, any quote token can be used if you use a config key that doesn't have Alpha Vault.

  • If you plan to use a multisig on the Meteora website, please make sure it is the SquadsX multisig, as that is the only type supported on Meteora website. Otherwise, you can't manage liquidity through the website.

  • There is a minimum ~1 hour 5 minutes period between the deposit close time and the pool activation time.

After deployment

To view pool on the UI, access the links below

  • For Dynamic AMM and Memecoin Pool: https://app.meteora.ag/pools/<POOL_ADDRESS>

When can you withdraw tokens from the pool?

  • CustomizablePermissionless Dynamic AMM: After pool activation point (trading starts)

Other Configuration Details

There are various config files that can be found in the config directory.

It contains all the configurations required to run the scripts. We also need to provide the keypair for the payer wallet in keypair.json file.

General configuration

  • rpcUrl: Solana RPC URL to get data and send transactions.

  • keypairFilePath: Keypair file path to send transactions.

  • dryRun: Set to true to send transactions.

  • computeUnitPriceMicroLamports: CU price in micro lamports unit. For example: 100000.

  • createBaseToken: Configuration to create base token.

  • baseMint: Base token address if the createBaseToken field is not set.

  • quoteSymbol: Quote token symbol, only SOL or USDC is supported.

  • quoteMint: Quote token mint, in case the user wants to create a DLMM launch pool with a token other than SOL or USDC.

  • dynamicAmm: Dynamic AMM pool configuration.

  • alphaVault: Fcfs or Prorata Alpha Vault configuration.

Some configuration constraints:

  • createBaseToken and baseMint cannot be used together.

  • dynamicAmm and dlmm cannot be used together.

Create Base Token configuration

  • mintBaseTokenAmount: Base token amount to be minted.

Dynamic AMM configuration

  • baseAmount: Base token amount.

  • quoteAmount: Quote token amount.

  • tradeFeeNumerator: Trade fee numerator, with fee denominator is set to 100_000.

  • activationType: To activate pool trading base on slot or timestamp.

  • activationPoint: To activate pool trading at a point, either slot valut or timestamp value base on activationType.

  • hasAlphaVault: Whether alpha vault is enabled or not for this pool.

Alpha Vault configuration

  • poolType: dynamic or dlmm pool type.

  • alphaVaultType: Alpha Vault type, could be fcfs or prorata

  • depositingPoint: Absolute value that, the slot or timestamp that allows deposit depend on the pool activation type.

  • startVestingPoint: Absolute value, the slot or timestamp that start vesting depend on the pool activation type. If no vesting is required, you should put this as 1 sec after the pool's activationPoint

  • endVestingPoint: Absolute value, the slot or timestamp that end vesting depend on the pool activation type. If no vesting is required, this should be the same as startVestingPoint

  • maxDepositCap: Maximum deposit cap.

  • individualDepositingCap: Individual deposit cap.

  • escrowFee: Fee to create stake escrow account. If this fee is added, it will be a one-time fee charged when users create a stake escrow account. This acts as a tax and makes it prohibitively expensive for users to attempt to use multiple wallets to bypass the individual deposit cap. It's charged in native SOL (non-wrapped version) and will be sent to the Meteora treasury.

  • whitelistMode: permissionless or permission_with_merkle_proof or permission_with_authority.

Alpha Vault Prorata configuration

  • depositingPoint: Absolute value that, the slot or timestamp that allows deposit depend on the pool activation type.

  • startVestingPoint: Absolute value, the slot or timestamp that start vesting depend on the pool activation type. If no vesting is required, you should put this as 1 sec after the pool's activationPoint

  • endVestingPoint: Absolute value, the slot or timestamp that end vesting depend on the pool activation type. If no vesting is required, this should be the same as startVestingPoint

  • maxBuyingCap: Maximum buying cap.

  • escrowFee: Fee to create stake escrow account. If this fee is added, it will be a one-time fee charged when users create a stake escrow account. This acts as a tax and makes it prohibitively expensive for users to attempt to use multiple wallets to bypass the individual deposit cap. It's charged in native SOL (non-wrapped version) and will be sent to the Meteora treasury.

  • whitelistMode: permissionless or permission_with_merkle_proof or permission_with_authority.

Alpha Vault Key Components

  • Vault Types: Supports both permissionless (without whitelist) and permissioned (with whitelist) Alpha Vaults.

  • Whitelist Modes:

    • Without whitelist:

      • Permissionless

    • With whitelist:

      • PermissionWithMerkleProof

      • PermissionWithAuthority

  • alphaVaultType (Vault Mode):

    • Pro-rata

    • FCFS (First-Come, First-Served)

  • Individual Deposit Cap:

    • Global individual deposit cap without whitelist only possible on FCFS vault mode, not possible on Pro rata vault mode.

Alpha Vault TypeScript SDK

Other Alpha Vault Considerations

What fee parameters to choose depends on your project's needs. You will need to look at the and choose a suitable pool_config_key with your preferred fee parameters.

Pool config list:

Devnet API: You can also get the list of config keys from devnet API

API endpoint to return the associated fee curve for each existing config:

Note: For more information about setting Pool and Fee Config for Memecoin Pools, please read .

After selecting your pool_config_key , reference this example in the Dynamic AMM SDK:

Read the and code examples there for more information.

permission_with_merkle_proof: In this mode, only wallets that are whitelisted can deposit into the Alpha Vault. needs to be provided by the project to Meteora, for the Merkle proof to be hosted by Meteora. Alpha Vault deposits should not open until the Merkle proof is hosted by Meteora.

After creating the Alpha Vault for your pool, check out the for different ways to interact with it. For example, depositing funds into the Alpha Vault, cranking the Alpha Vault to buy tokens from the pool, or claiming purchased tokens from the Alpha Vault.

Please read our .

Memecoin Pools
https://github.com/mercurial-finance/mercurial-dynamic-amm-sdk
https://www.npmjs.com/package/@mercurial-finance/dynamic-amm-sdk
https://docs.meteora.ag/alpha-vault/alpha-vault-typescript-sdk
google sheet
https://devnet.meteora.ag/
pool config list
https://amm-v2.meteora.ag/swagger-ui/#/pools/get_all_pool_configs
https://devnet-amm-v2.meteora.ag/pool-configs
https://amm-v2.meteora.ag/swagger-ui/#/fee_config/get_config_associated_fee_configs
here
https://github.com/MeteoraAg/dynamic-amm-sdk/blob/main/ts-client/src/examples/create_pool_and_lock_liquidity.ts
https://github.com/MeteoraAg/dynamic-amm-sdk/blob/main/ts-client/src/examples/create_pool_and_lock_liquidity.ts#L121
https://github.com/MeteoraAg/alpha-vault-sdk/blob/f6a6d0e2113fd94c14d94403b08fe83ff40c4791/ts-client/src/alpha-vault/index.ts#L256
Alpha Vault SDK
Csv file containing the list of whitelisted wallets
Alpha Vault SDK
Alpha Vault FAQ