Permissionless Dynamic AMM with Alpha Vault Setup
Summary
Getting Started
Clone repo: https://github.com/MeteoraAg/meteora-pool-setup
Config list to reference: https://github.com/MeteoraAg/meteora-pool-setup/tree/main/config
Dependencies
Install Bun: You'll also need bun to run the scripts. Install it via bun installation. Then install the dependencies by running the command
bun install
Scripts
The following code examples can be used to initialize and seed a Dynamic AMM liquidity pool on Meteora.
We also have code examples for interacting with the Alpha Vault program. Use these examples to create and manage vaults, handle deposits and withdrawals, manage permissioned and permissionless vault configurations, and interact with escrow accounts.
1. Create Dynamic AMM Pool
Clone repo: https://github.com/MeteoraAg/meteora-pool-setup
Select an example config from the list to reference and change the parameters inside according to your needs: https://github.com/MeteoraAg/meteora-pool-setup/tree/main/config
Run the script with config file specified in the CLI.
Run:
bun run src/create_pool.ts --config <./config/create_dynamic_amm_pool.json>
Replace
<./config/create_dynamic_amm_pool.json>
with the path to your config file, after you have selected the type of config from the list and set your config parameters.
Examples:
A) Create a standard Dynamic AMM Pool
Run:
bun run src/create_pool.ts --config ./config/create_dynamic_amm_pool.json
B) Create a Dynamic AMM Pool with new token mint
Run:
bun run src/create_pool.ts --config ./config/create_dynamic_amm_pool_with_new_token.json
C) Lock Liquidity for Dynamic AMM Pool
bun run src/lock_liquidity.ts --config ./config/lock_liquidity.json
2. Create a Dynamic AMM Pool with Alpha Vault
Reference this example config: https://github.com/MeteoraAg/meteora-pool-setup/blob/main/config/create_dynamic_amm_pool_with_fcfs_alpha_vault.json
Change the parameters in the config according to your needs.
Run the config after it has been updated with your parameters:
bun run src/create_alpha_vault.ts --config ./config/create_dynamic_amm_pool_with_fcfs_alpha_vault.json
Important Notes:
If you do not want to use Alpha Vault, skip this step.
Currently, only SOL or USDC is accepted as the quote token when initializing a Dynamic AMM 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.
The Meteora website only works with SquadsX multisig. If you are using multisig, make sure your multisig is using SquadsX, otherwise you can't manage liquidity through the website.
After deployment
To view pool on the UI, access the link below
For Dynamic AMM pool:
https://app.meteora.ag/pools/<POOL_ADDRESS>
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.createBaseToken
: Configuration to create base token.baseMint
: Base token address if thecreateBaseToken
field is not set.quoteSymbol
: Quote token symbol, onlySOL
orUSDC
is supported.baseDecimals
: Base token decimal.dynamicAmm
: Dynamic AMM pool configuration.dlmm
: DLMM pool configuration.alphaVault
: Fcfs or Prorata Alpha Vault configuration.
Some configuration constraints:
createBaseToken
andbaseMint
cannot be used together.dynamicAmm
anddlmm
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 onslot
ortimestamp
.activationPoint
: To activate pool trading at a point, either slot valut or timestamp value base onactivationType
.hasAlphaVault
: Whether alpha vault is enabled or not for this pool.
Alpha Vault configuration
poolType
:dynamic
ordlmm
pool type.alphaVaultType
: Alpha Vault type, could befcfs
orprorata
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.endVestingPoint
: Absolute value, the slot or timestamp that end vesting depend on the pool activation type.maxDepositCap
: Maximum deposit cap.individualDepositingCap
: Individual deposit cap.escrowFee
: Fee to create stake escrow account.whitelistMode
:permissionless
orpermission_with_merkle_proof
orpermission_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.endVestingPoint
: Absolute value, the slot or timestamp that end vesting depend on the pool activation type.maxBuyingCap
: Maximum buying cap.escrowFee
: Fee to create stake escrow account.whitelistMode
:permissionless
orpermission_with_merkle_proof
orpermission_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.
Last updated