Introduction
Build your own fully customizable bonding curve with DBC. DBC allows you to configure everything from the curve shape to the trading fees.
Program Address
- Mainnet-beta:
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
- Devnet:
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
Resources
- Dynamic Bonding Curve Program
- Dynamic Bonding Curve Typescript SDK
- Interface Definition Language (IDL)
Flow of DBC Pool -> DAMM v1/v2 Pool
Concepts
- Pre-bonding: DBC pool - where the newly minted token discovers its price. No need for an LP.
- Post-bonding: DAMM v1/v2 pool - where the accumulated
quote_mint
tokens in the bonding curve + a portion of thebase_mint
tokens are migrated to form the liquidity pool of the new token - Partner: Launchpad
- Creator: Token Pool Creator
Flow
Step 1: Create DBC Config Key
Partner creates a DBC Config Key that consists of the curve shape, migrated pool fee, and many more.
Step 2: Create DBC Token Pool
Creator creates a DBC Token Pool with the Partner’s DBC Config Key. This action will mint the new token and initialise a DBC Pool.
Step 3: Trade DBC Token Pool
The DBC Token Pool is tradeable on all trading terminals and trading bots (including Jupiter Pro, Axiom, Photon, GMGN, BullX etc.)
Step 4: Migrate to DAMM Pool
Once the DBC Token Pool has accumulated enough quote_mint
tokens (pool_state::quote_reserve >= pool_config::migration_quote_threshold
), our migrator keeper will automatically migrate the DBC pool to a DAMM Pool.
migration_quote_threshold
and a portion of the base_mint
tokens will form the liquidity pool of the DAMM Pool.Step 5: Trade on graduated DAMM v1/v2 Pool
The graduated DAMM v1/v2 Pool is also tradeable on all trading terminals and trading bots (including Jupiter Pro, Axiom, Photon, GMGN, BullX etc.)
Migration
DAMM Fee Config Keys
DAMM (v1) Migration Fee Config Keys:
migration_fee_option == 0:
8f848CEy8eY6PhJ3VcemtBDzPPSD4Vq7aJczLZ3o8MmXmigration_fee_option == 1:
HBxB8Lf14Yj8pqeJ8C4qDb5ryHL7xwpuykz31BLNYr7Smigration_fee_option == 2:
7v5vBdUQHTNeqk1HnduiXcgbvCyVEZ612HLmYkQoAkikmigration_fee_option == 3:
EkvP7d5yKxovj884d2DwmBQbrHUWRLGK6bympzrkXGjamigration_fee_option == 4:
9EZYAJrcqNWNQzP2trzZesP7XKMHA1jEomHzbRsdX8R2migration_fee_option == 5:
8cdKo87jZU2R12KY1BUjjRPwyjgdNjLGqSGQyrDshhud
DAMM v2 Migration Fee Config Keys:
migration_fee_option == 0:
7F6dnUcRuyM2TwR8myT1dYypFXpPSxqwKNSFNkxyNESdmigration_fee_option == 1:
2nHK1kju6XjphBLbNxpM5XRGFj7p9U8vvNzyZiha1z6kmigration_fee_option == 2:
Hv8Lmzmnju6m7kcokVKvwqz7QPmdX9XfKjJsXz8RXcjpmigration_fee_option == 3:
2c4cYd4reUYVRAB9kUUkrq55VPyy2FNQ3FDL4o12JXmqmigration_fee_option == 4:
AkmQWebAwFvWk55wBoCr5D62C6VVDTzi84NJuD9H7cFDmigration_fee_option == 5:
DbCRBj8McvPYHJG1ukj8RE15h2dCNUdTAESG49XpQ44u
Migration Keeper
We run 2 migration keepers on Mainnet to automatically migrate DBC pools to DAMM pools.
Keeper addresses that we are running:
pool_config.migration_quote_threshold
requirements:- 10 SOL
- 750 USDC
- 1500 JUP
pool_config.migration_quote_threshold
requirements:- >= 750 USD (
quote_mint
token)
- >= 750 USD (
Manual Migrator
We have created a Manual Migrator user interface that allows you to manually migrate your DBC pool to a DAMM pool on both Mainnet and Devnet.
Config Key Parameters
pool_fees
Type: object
(includes base_fee
and optional dynamic_fee
)
Defines the trading fee for any pool created from this configuration. Partner can add a fee scheduler or rate limiter in base_fee
or just a fixed fee.
collect_fee_mode
Type: 0 | 1
0: Only collects fee in quote token.
1: Collects fee in both tokens.
migration_option
Type: number
Currently only supports migration to Meteora DAMM. Set to 0
.
activation_type
Type: 0 | 1
0: Slot
1: Timestamp
Indicates the time unit for pool operations, mainly for fee scheduler/rate limiter and dynamic fee calculations.
token_type
Type: 0 | 1
0: SPL Token
1: Token2022
token_decimal
Type: number
(6-9)
Token decimals used when creating the virtual pool. Only supports 6 to 9.
partner_lp_percentage
Type: number
Percentage of LP that partner can claim after migration.
partner_locked_lp_percentage
Type: number
Percentage of LP that partner will have locked after migration.
creator_lp_percentage
Type: number
Percentage of LP that creator can claim after migration.
creator_locked_lp_percentage
Type: number
Percentage of LP that creator will have locked after migration.
migration_quote_threshold
Type: number
Threshold for quote token. When the virtual pool reserve reaches this amount, the token will graduate and be migrated.
fee_claimer
Type: address
Address of the partner that can claim trading fees from virtual pools and locked LPs.
owner
Type: address
Owner of the configuration.
quote_mint
Type: address
Quote mint address that the virtual pool will support.
locked_vesting
Type: object
Locked vesting for creator after migration (tokens will be migrated to Jup lock).
migration_fee_option
Type: number
Fee option for graduated pool. Supported: 0.25%, 0.3%, 1%, 2%, 4%, 6%.
token_supply
Type: number
If specified, token will have fixed supply pre- and post-migration. Leftover will be returned to leftover_receiver
(configured in config key).
creator_trading_fee_percentage
Type: number
Percentage of trading fee and surplus pool creator can get for a pool.
token_update_authority
Type: 0 | 1
0: Mutable
1: Immutable
Option to allow creator to update token metadata.
migration_fee
Type: number
Option to configure migration fee from migration quote threshold. Migration fee can be shared between partner and creator.
sqrt_start_price
Type: number
Square root of min price in the bonding curve for the virtual pools.
curve
Type: array
of (square price, liquidity)
Defines the liquidity distribution for the virtual pools.