Skip to main content
Transfer-hook pools are Token 2022 DBC launches where the base mint has an active transfer hook during bonding-curve trading. Use this path when a launch needs token-transfer logic during the DBC phase, such as allowlist checks or transfer accounting that lives in a separate transfer-hook program. The hook is a pre-migration feature. When the curve completes, DBC revokes the transfer-hook program and transfer-hook authority from the base mint so the token can graduate to DAMM v2 liquidity.

Account Model

Transfer-hook launches use separate account discriminators while keeping the same core config and pool fields. The TypeScript SDK’s state service fetches both account families. client.state.getPoolConfig, getPoolConfigs, getPool, and pool list helpers return normalized config and pool shapes for both standard and transfer-hook accounts.

Launch Rules

Trading

Transfer-hook pools must use the transfer-hook swap path. swap2_with_transfer_hook supports the same swap modes as swap2: exact in, partial fill, and exact out. It also accepts TransferHookAccountsInfo, which describes how the remaining accounts are sliced for the transfer-hook CPI. If a transfer-hook pool is sent through a standard swap instruction, the program returns PoolTypeMismatch. If transfer-hook remaining accounts are missing, malformed, duplicated, or use the wrong slice type, the transfer fails before token movement.

Fee Claims

Transfer-hook pools also use transfer-hook-aware trading fee claim paths. For standard pools, use claim_trading_fee / claim_creator_trading_fee, or the SDK’s claimPartnerTradingFee, claimPartnerTradingFeeToReceiver, claimCreatorTradingFee, and claimCreatorTradingFeeToReceiver methods.

Completion And Migration

Transfer hooks are active only while the pool is trading on the bonding curve. When a transfer-hook pool reaches the configured migration quote threshold, DBC:
  1. Marks the curve complete.
  2. Moves the pool to PostBondingCurve when locked vesting is configured, or LockedVesting otherwise.
  3. Revokes the transfer-hook program id and transfer-hook authority from the base mint.
  4. Emits EvtCurveCompleteWithTransferHook.
After that, the pool follows the normal DAMM v2 migration flow. The migrated DAMM v2 pool receives a Token 2022 mint without an active transfer hook.

Events

Indexers should handle the transfer-hook-specific event variants. See DBC Program Events for the full event table.