Meteora Dynamic Bonding Curve Explained: How Bags Tokens Work
Meteora DBC behind bags.fm: per-token configs, the fee-share setup, 9 decimals, trading on the curve and migration to a DAMM v2 pool.
Meteora's Dynamic Bonding Curve (DBC) is a bonding-curve program that other launchpads build on. Bags is the best-known: every bags.fm token is a DBC token. Where pump.fun has one curve for everyone, DBC is a toolkit - each launch is created against a config that defines its curve, its fees and where it migrates.
Configs: the curve is a setting
A DBC pool always points to a config account. The config holds the shape of the curve, the supply and decimals, the SOL target that completes it, the trading fee split and the migration target. A launchpad can share one config across all its tokens or create a new one per token.
Bags creates a config per token. It does so while setting up the fee-share config - the record of who earns the creator share of trading fees. That is why a Bags launch has an extra on-chain step before the token exists, and why the dev wallet needs about 0.03 SOL more for the rent of those accounts (launching on Bags).
Bags' curve in numbers
- 1 billion tokens with 9 decimals.
- The curve completes at 85 SOL raised.
- Migration to a Meteora DAMM v2 pool.
- Mint and freeze authority revoked (checked on live Bags mints).
Nine decimals instead of six is only a display difference: the same holding shows a raw amount 1000 times larger. Tools that read raw amounts without decimals will show odd numbers for Bags tokens - another reason to use a tool that reads the mint, like the token scanner.
Trading on the curve
DBC holds its SOL side as wrapped SOL. A buy wraps SOL into a temporary wSOL account, swaps it and closes the account in the same transaction - each buying wallet needs about 0.002 SOL of temporary rent that comes straight back (wrapped SOL explained). Pricing follows the curve set in the config: every buy moves the price up for the next one, so larger buys pay a higher average price (slippage on bonding curves).
Bundling works the same as elsewhere: the token creation, the dev buy and up to 8 more buys can go in one Jito bundle and land in the launch block together. SolBundle's Terminal buys and sells Bags tokens on the curve from many wallets at once.
Migration to DAMM v2
When the curve hits its target, the pool migrates into Meteora's DAMM v2 - a constant-product AMM. The fee-share config keeps working after migration, so the fee recipients continue to earn on trades in the new pool. On bags.fm nothing visible changes for buyers; under the hood the token now trades in a regular Meteora pool reachable from aggregators.
DBC vs LaunchLab vs pump.fun
All three are constant-product-style curves with a fixed target and an automatic migration. The differences are in who controls the parameters (per-token configs on DBC, platform accounts on LaunchLab, one global curve on pump.fun), the token program and decimals, and the destination pool. The side-by-side is in pump.fun vs LetsBonk vs Bags.
Frequently asked questions
What is Meteora DBC?
Meteora's Dynamic Bonding Curve program. Launchpads create tokens on it with a config that defines the curve, fees and migration. Bags tokens are DBC tokens.
Where do Bags tokens migrate?
To a Meteora DAMM v2 pool once the curve raises 85 SOL.
Why do Bags tokens have 9 decimals?
It is set in the token's config. It only changes how raw amounts are displayed - 1 token is 10^9 base units instead of 10^6.
Ready to build your launch?
Configure wallets, bundle execution and launch from one workspace.