Skip to main content
This page summarizes the DBC implementation details that are useful when reading pool state, building integrations, or checking whether a claim or migration action is allowed.

Main Accounts

SDK state readers normalize standard and transfer-hook account variants. Raw account readers and indexers should still distinguish PoolConfig from ConfigWithTransferHook, and VirtualPool from TransferHookPool.

Lifecycle State

The shared PoolState inside VirtualPool and TransferHookPool tracks migration progress with four states. When the quote reserve reaches migration_quote_threshold, normal curve trading stops. If locked vesting is configured, the pool moves to PostBondingCurve; otherwise it moves directly to LockedVesting.

Core Limits

Permissions

Several claim paths also use one-time flags on the pool state, so a valid signer cannot claim the same surplus, migration fee, pool creation fee, or leftover more than once.

Claims by Lifecycle Stage

Token Support

DBC can launch SPL Token or Token 2022 base mints. New configs must migrate to DAMM v2. Existing DAMM v1 pools can still graduate. Transfer-hook launches are Token 2022 only. They use ConfigWithTransferHook, TransferHookPool, swap2_with_transfer_hook, and transfer-hook-aware trading fee claims. The base mint’s transfer hook is revoked when the curve completes. Quote mints can be SPL Token mints. A Token 2022 quote mint is permissionless when its extensions are limited to MetadataPointer, TokenMetadata, and a TransferFeeConfig whose current fee is zero and whose transfer fee config authority is revoked. Other extensions, a non-zero transfer fee, or a live transfer fee config authority need a TokenBadge. A non-zero fee or a live authority is accepted only by create_config2. The Token 2022 native mint is rejected as a quote mint. Token teams apply for that badge with the Token 2022 Whitelist Request Form. Do not include the token launch date or time. An operator with CreateTokenBadge calls create_token_badge after review. See Quote mint token badges.

Config Validation Highlights

DBC validates the launch template before it can be used:
  • The quote mint must be permissionless, or a valid token badge must be supplied at remaining account index 0. A missing badge returns InvalidQuoteMint. A badge that does not match the mint returns InvalidTokenBadge.
  • A quote mint with a non-zero transfer fee or a live transfer fee config authority is accepted only by create_config2.
  • A base transfer fee, or that quote-mint case, requires constant token supply, no locked vesting, MigrationFeeOption::Customizable, and MigratedCollectFeeMode::Compounding.
  • The collect fee mode must be QuoteToken or OutputToken.
  • The migration target must be DAMM v2. MeteoraDamm is rejected for new configs and new pools.
  • BaseFeeMode::RateLimiter is rejected for new configs and new pools.
  • Transfer-hook configs must use Token 2022 and a valid executable transfer-hook program.
  • Mint-authority token authority options are only valid for transfer-hook configs.
  • Liquidity percentages across partner, creator, permanent locks, and vesting must add to 100%.
  • Curve prices must strictly increase and every active curve point must have positive liquidity.
  • Fixed-supply configs must set a non-default leftover receiver and must provide enough supply for the curve, migration liquidity, locked vesting, and the 25% swap buffer.