The Multi-Segment Bonding Curve
DBC uses a piecewise concentrated-liquidity curve with up to 16 segments. Each segment is defined by a(sqrt_price, liquidity) pair, creating a price path from the initial price to the migration price.
The curve is stored as an array of LiquidityDistributionConfig points in the PoolConfig account:
MAX_CURVE_POINT_CONFIG = 16 points.
How the Curve Works
The curve defines how many quote tokens are needed to move the price through each segment:Example: Two-Segment Curve
Key Curve Parameters
sqrt_start_price
The initial price when the pool opens. Token price starts here and moves up as buyers purchase.
sqrt_price per segment
Each segment’s sqrt_price is the upper price bound of that segment. When the current price reaches it, trading moves to the next segment.
migration_sqrt_price
The price at which the pool migrates. Derived from migration_quote_threshold and the total curve:
swap_base_amount
Total base tokens available for sale through the curve:
Token Supply Models
- Dynamic Supply
- Fixed Supply
Base tokens are minted on demand as buyers purchase. The total supply grows with each buy.
fixed_token_supply_flag = 0- Requires the
token_update_authorityto be set so the program can mint - Post-migration: minting authority is revoked
Visualizing Curve Shapes
Different curve shapes serve different launch strategies:Steep-then-flat (standard launch)
Steep-then-flat (standard launch)
A steep early segment rewards early buyers with a lower average price, then the curve flattens as the supply enters wider distribution. Most DBC launches use this shape.Wait — actually it’s the opposite: low liquidity = steep price, high liquidity = flat price.Correct shape for “cheap early, expensive later”:
- Segment 1: low liquidity (steep — small buys push price up a lot)
- Last segment: high liquidity (flat — many tokens needed to move price)
Flat price (stable launch)
Flat price (stable launch)
All segments at roughly equal liquidity creates a near-linear price path. Price discovery is gradual and predictable.
Exponential / aggressive
Exponential / aggressive
Very low liquidity throughout → price spikes rapidly. Not recommended for broad distribution.
Calculating Curve Parameters
The TypeScript SDK provides helpers for building curve configurations:Constraints
| Constraint | Value |
|---|---|
| Max curve segments | 16 |
sqrt_price ordering | Must be strictly ascending |
| Minimum liquidity per segment | > 0 |
token_decimal | 1–9 |

