Skip to Content
ConceptsBonding curve launches (Meteora DBC → DAMM v2)

Bonding curve launches (Meteora DBC → DAMM v2)

A launch with mode: "dbc" puts the film’s token on a Meteora Dynamic Bonding Curve. Fans buy along a published curve; the price rises with each purchase. When fans have put in the funding goal, the curve graduates: Meteora migrates it into a DAMM v2 pool whose liquidity is permanently locked.

Graduation is the first funding tranche

Graduation unlocks three things on chain, with no admin key:

  1. Production budget. budgetPercent of the raise (the DBC creator migration fee) becomes claimable by the creator (POST /api/fees/:mint/tx with kind: "budget").
  2. DAO treasury. The DAO’s token allocation is the curve’s fixed-supply leftover. The config names the DAO’s native treasury as leftover_receiver, so the tokens land there at graduation. Before the film is funded the treasury is empty, so no milestone tranche can be released.
  3. Creator vesting. The creator’s tokens are DBC locked vesting, released by Meteora’s locker with the cliff measured from migration. A creator whose film never funds gets no tokens.

Who holds what

Holder
Mint / freeze authoritynone (fixed supply)
Metadataimmutable
Pool creator (fees, budget, vesting)the creator’s wallet (transfer_pool_creator in the creation tx)
Partner fee claimerfilm.fun (DBC_PARTNER_FEE_CLAIMER, a multisig on mainnet)
DAMM v2 liquidity90 % creator position + 10 % film.fun position, both permanently locked
DAOrealm authority = governance; vote base = curve supply + creator vesting
Etch walletfee payer only

Presets

PresetPrice, last vs first backerCurve fee
Steady raise≈ 1.5×1 % flat
Fan launch≈ 5×10 % → 1 % over 30 min (anti-sniper)
Custom1.2×–20×0.25 %–5 %, optional anti-sniper

Fees: Meteora’s protocol takes 20 % of each curve trading fee; the creator and film.fun split the rest 50/50. After graduation the DAMM v2 pool charges 1 % (dynamic fee on), and LP fees go to the two locked positions.

Funding goal limits

ClusterSOLUSDC
mainnet10 – 5,000750 – 500,000
devnet0.5 – 5,00050 – 500,000

The mainnet minimums are the thresholds at which Meteora’s own migration keepers graduate pools automatically. On devnet (where Meteora runs no keeper) Etch’s /api/cron/dbc-graduation does it.

Testing on devnet

  • npm run test:devnet with DBC_E2E_FUNDER set runs tests/dbc.devnet.test.ts. That covers config, pool, buys, DAO, graduation, a DAMM v2 trade and the claims, with throwaway wallets.
  • scripts/dbc-api-e2e.mjs drives the same lifecycle through the HTTP API of a running Etch (DBC_ENABLED=true). The phases are setup → launch → trade → graduate → claims → dao-propose → dao-finish. It includes a DAO proposal that releases the first milestone tranche from the treasury the curve funded.
Last updated on