> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

Before getting started building on DBC, you should read the following resource to get a better understanding of how Meteora's DBC works:

<CardGroup cols={2}>
  <Card title="What's DBC?" icon="question" iconType="solid" href="/overview/products/dbc/what-is-dbc">
    DBC is Meteora's first bonding curve pool product that allows you to initialize a virtual reserve pool and migrate to either a DAMM v1 or DAMM v2 pool.
  </Card>

  <Card title="DBC Curve Configs" icon="gear" iconType="solid" href="/developer-guide/guides/dbc/bonding-curve-configs">
    Each DBC pool is a PDA of token mints + config. A DBC Curve Config Key contains all the settings that will dictate the behavior of your DBC pool, which includes bonding curve shape, pre-graduation fees, post-graduation fees, and more.
  </Card>
</CardGroup>

***

# DBC Program

At Meteora, we’ve developed a `Node.js <> Typescript SDK`, a `Rust SDK` and a `Go SDK` to make deploying and managing your DBC virtual pool easier. The following sections includes information on installing and using the SDKs. It also covers where to find the latest code, and how to contribute to these repositories.

## Program Details

<CardGroup cols={2}>
  <Card title="DBC Program" icon="rust" iconType="solid" href="https://github.com/MeteoraAg/dynamic-bonding-curve">
    Meteora DBC Program
  </Card>

  <Card title="DBC IDL" icon="code" iconType="solid" href="https://github.com/MeteoraAg/dynamic-bonding-curve-sdk/blob/main/packages/dynamic-bonding-curve/src/idl/dynamic-bonding-curve/idl.json">
    Meteora DBC Program IDL
  </Card>
</CardGroup>

<div className="overflow-x-auto">
  <table className="w-full border-collapse">
    <thead>
      <tr className="border-b border-gray-300 dark:border-gray-600">
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Network</th>
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Program ID</th>
      </tr>
    </thead>

    <tbody>
      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">Mainnet</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">Devnet</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN</code></td>
      </tr>
    </tbody>
  </table>
</div>

<div className="overflow-x-auto">
  <table className="w-full border-collapse">
    <thead>
      <tr className="border-b border-gray-300 dark:border-gray-600">
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Authority</th>
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Address</th>
      </tr>
    </thead>

    <tbody>
      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">Pool Authority</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">FhVo3mqL8PW5pH5U2CN4XE33DokiyZnUwuGpH2hmHLuM</code></td>
      </tr>
    </tbody>
  </table>
</div>

## Official SDKs

<CardGroup cols={2}>
  <Card title="Typescript SDK" icon="node-js" iconType="solid" href="/developer-guide/guides/dbc/typescript-sdk/getting-started">
    Official Meteora DBC Typescript SDK
  </Card>

  <Card title="Rust SDK" icon="rust" iconType="solid" href="/developer-guide/guides/dbc/rust-sdk/integration">
    Official Meteora DBC Rust SDK
  </Card>

  <Card title="Go SDK" icon="golang" iconType="solid" href="/developer-guide/guides/dbc/go-sdk/integration">
    Official Meteora DBC Go SDK
  </Card>
</CardGroup>

***

# Swap Modes

DBC supports two swap instructions:

| Instruction | Modes                                      |
| ----------- | ------------------------------------------ |
| `swap`      | ExactIn only                               |
| `swap2`     | ExactIn (0), PartialFill (1), ExactOut (2) |

`swap2` includes additional information in the `EvtSwap2` event such as `quoteReserveAmount`, `migrationThreshold`, and `includedFeeInputAmount`.

<Note>For pools with Rate Limiter enabled (`baseFeeMode == 2`), the `SYSVAR_INSTRUCTIONS_PUBKEY` must be included in the remaining accounts of the swap instruction.</Note>

# Pool Creator Transfer

Pool creators can transfer their creator rights to a new address using the `transfer_pool_creator` instruction. This transfers all creator privileges including fee claiming rights and surplus withdrawal.

***

# Migration

DBC pools can be migrated to either a DAMM v1 or DAMM v2 pool. The DAMM v1 and DAMM v2 pools are both derived from the `baseMint`, `quoteMint` and `dammConfig`.

### Flow of migration

#### DAMM V1

1. `createDammV1MigrationMetadata`
2. `createLocker` (if the token has locked vesting)
3. `migrateToDammV1`
4. `lockDammV1LpToken` (if `creatorPermanentLockedLiquidityPercentage` or `partnerPermanentLockedLiquidityPercentage` > 0)
5. `claimDammV1LpToken` (if `creatorLiquidityPercentage` or `partnerLiquidityPercentage` > 0)

#### Liquidity Vesting (DAMM V2 only)

If `partnerLiquidityVestingInfoParams` or `creatorLiquidityVestingInfoParams` are configured, vesting is handled directly via LP positions during migration. No separate `migration_metadata` account is required.

#### DAMM V2

1. `createLocker` (if the token has locked vesting)
2. `migrateToDammV2`

<Note>DAMM v2 migration now uses positions directly for vesting, removing the need for a separate `migration_metadata` account. This simplifies the migration flow and reduces the number of accounts and transactions required.</Note>

## DAMM Fee Config Keys

The following section depicts the `dammConfig` key for each pool type.

### DAMM v1 Migration Fee Config Keys:

<Note>Accessible via `DAMM_V1_MIGRATION_FEE_ADDRESS[i]` in the DBC Typescript SDK.</Note>

<div className="overflow-x-auto">
  <table className="w-full border-collapse">
    <thead>
      <tr className="border-b border-gray-300 dark:border-gray-600">
        <th className="text-center py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Migration Fee Option</th>
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Config Key</th>
      </tr>
    </thead>

    <tbody>
      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">0</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">8f848CEy8eY6PhJ3VcemtBDzPPSD4Vq7aJczLZ3o8MmX</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">1</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">HBxB8Lf14Yj8pqeJ8C4qDb5ryHL7xwpuykz31BLNYr7S</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">2</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">7v5vBdUQHTNeqk1HnduiXcgbvCyVEZ612HLmYkQoAkik</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">3</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">EkvP7d5yKxovj884d2DwmBQbrHUWRLGK6bympzrkXGja</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">4</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">9EZYAJrcqNWNQzP2trzZesP7XKMHA1jEomHzbRsdX8R2</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">5</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">8cdKo87jZU2R12KY1BUjjRPwyjgdNjLGqSGQyrDshhud</code></td>
      </tr>
    </tbody>
  </table>
</div>

### DAMM v2 Migration Fee Config Keys:

<Note>Accessible via `DAMM_V2_MIGRATION_FEE_ADDRESS[i]` in the DBC Typescript SDK.</Note>

<div className="overflow-x-auto">
  <table className="w-full border-collapse">
    <thead>
      <tr className="border-b border-gray-300 dark:border-gray-600">
        <th className="text-center py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Migration Fee Option</th>
        <th className="text-left py-3 px-4 font-semibold text-gray-900 dark:text-gray-100">Config Key</th>
      </tr>
    </thead>

    <tbody>
      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">0</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">7F6dnUcRuyM2TwR8myT1dYypFXpPSxqwKNSFNkxyNESd</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">1</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">2nHK1kju6XjphBLbNxpM5XRGFj7p9U8vvNzyZiha1z6k</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">2</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">Hv8Lmzmnju6m7kcokVKvwqz7QPmdX9XfKjJsXz8RXcjp</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">3</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">2c4cYd4reUYVRAB9kUUkrq55VPyy2FNQ3FDL4o12JXmq</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">4</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">AkmQWebAwFvWk55wBoCr5D62C6VVDTzi84NJuD9H7cFD</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">5</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">DbCRBj8McvPYHJG1ukj8RE15h2dCNUdTAESG49XpQ44u</code></td>
      </tr>

      <tr className="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800">
        <td className="text-center py-3 px-4"><strong className="text-gray-900 dark:text-gray-100">6</strong></td>
        <td className="py-3 px-4"><code className="bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono">A8gMrEPJkacWkcb3DGwtJwTe16HktSEfvwtuDh2MCtck</code></td>
      </tr>
    </tbody>
  </table>
</div>

## Migration Keeper

We run 2 migration keepers to automatically migrate DBC pools to DAMM pools.

<Note>The Migration Keepers only runs on **Mainnet**.</Note>

Keeper addresses that we are running:

1. [CQdrEsYAxRqkwmpycuTwnMKggr3cr9fqY8Qma4J9TudY](https://solscan.io/account/CQdrEsYAxRqkwmpycuTwnMKggr3cr9fqY8Qma4J9TudY)

* `pool_config.migration_quote_threshold` either requires:
  * 10 SOL
  * 750 USDC
  * 1500 JUP

2. [DeQ8dPv6ReZNQ45NfiWwS5CchWpB2BVq1QMyNV8L2uSW](https://solscan.io/account/DeQ8dPv6ReZNQ45NfiWwS5CchWpB2BVq1QMyNV8L2uSW)

* `pool_config.migration_quote_threshold` requires:
  * \>= 750 USD (`quote_mint` token)

## Manual Migrator

We have also created a [Manual Migrator](https://migrator.meteora.ag) user interface that allows you to manually migrate your DBC pool to a DAMM pool.

<Note>The Manual Migrator runs on both **Mainnet** and **Devnet**.</Note>

<Warning>Depending on your DBC Config Key, the migration process will require you to sign more than one transaction to call each instruction.</Warning>
