Create: Stake2Earn Pool with Alpha Vault
Last updated
Last updated
are Dynamic AMM Memecoin Pools that are launched with a Stake2Earn Vault. In this page, we provide the code examples that can be used to initialize and seed a Stake2Earn Pool together with an Alpha Vault.
Memecoin Pool: A Dynamic AMM Pool created with a fee scheduler and with initial liquidity perma-locked.
Stake2Earn Vault: Stake-to-earn farming mechanism and vault where top stakers can earn a share of fees from the locked liquidity.
Stake2Earn Pool: A Memecoin Pool with a Stake2Earn Vault.
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.
Dynamic AMM SDK:
NPM:
Stake2Earn Vault SDK:
Alpha Vault SDK:
Alpha Vault Launch Calculation template: Copy this and adjust the numbers to help determine your preferred parameters.
Devnet:
Mainnet API endpoint:
API endpoint to get Stake2Earn vault info from pool address:
Devnet API endpoint:
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.
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.
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...
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.
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.
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.
Please refer to this example, in the section under let allocations = [
Find your Stake2Earn Vault public key address. Put it in the example above and allocate the % of fees from permanently locked liquidity that you intend to go to the Stake2Earn vault (for top stakers to earn).
After creating the Memecoin Pool and setting up the fee allocation between wallets, please use this example to create the Stake2Earn Vault:
Please use this example to create the Alpha Vault:
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
: Only wallets that are whitelisted can deposit into the Alpha Vault
You are recommended to configure your Stake2Earn staking rewards distribution start time (fee claim start time) to be approximately 48 hours after launch. This allows more time for total fee rewards to accumulate from trading activity in the memecoin pool. A bigger total fee reward would help make your Stake2Earn Vault look more appealing to potential stakers.
If you do not want to use Alpha Vault, you can just Create a Memecoin Pool with a Stake2Earn Vault.
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.
To view pool on the UI, access the links below
For Dynamic AMM and Memecoin Pool: https://app.meteora.ag/pools/<POOL_ADDRESS>
CustomizablePermissionless Dynamic AMM: After pool activation point (trading starts)
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.
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.
createBaseToken
and baseMint
cannot be used together.
dynamicAmm
and dlmm
cannot be used together.
mintBaseTokenAmount
: Base token amount to be minted.
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.
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.
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. 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
.
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. 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
.
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.
topListLength
: Length of the top list.
unstakeLockDurationSecs
: Duration need wait before withdraw. Starting from the unstack action timestamp.
secondsToFullUnlock
: Time required for locked claim fee to be fully dripped.
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 preferred pool_config_key
, reference this example in the Dynamic AMM SDK:
Please put your pool public key address in this example: to derive the address of the Stake2Earn Vault for the pool, even before it is created.
Read the and code examples there for more information.
permission_with_merkle_proof
: 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.
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.
startFeeDistributeTimestamp
: When the fee start distributes. The timestamp should be 48h after pool activate to accumulate more rewards to attract stakers as in
Please read our .