DLMM is a concentrated liquidity AMM that uses a dynamic fee mechanism to adjust liquidity based on market conditions.
Price Calculation Formulas
price=(1+BASIS_POINT_MAXbin_step)active_id
Where:
BASIS_POINT_MAX
= 10,000
- Uses Q64.64 fixed-point arithmetic
- Example: For
bin_step = 10
, price = (1.001)^active_id
Selling X for Y:
min_price=spot_price×BASIS_POINT_MAXBASIS_POINT_MAX−max_price_impact_bps
Selling Y for X:
min_price=spot_price×BASIS_POINT_MAX−max_price_impact_bpsBASIS_POINT_MAX
Total Trading Fee
total_fee_rate=min(base_fee_rate+variable_fee_rate,MAX_FEE_RATE)
base_fee_rate=base_factor×bin_step×10×10base_fee_power_factor
variable_fee_rate=SCALE(volatility_accumulator×bin_step)2×variable_fee_control+OFFSET
Where:
OFFSET
= 99,999,999,999
SCALE
= 100,000,000,000
composition_fee=FEE_PRECISION2swap_amount×total_fee_rate×(1+total_fee_rate)
Where:
MAX_FEE_RATE
= 100,000,000
L=price×x+y
Where:
L
is liquidity
x
and y
are token amounts
- Price is in Q64.64 format
liquidity_share=bin_liquidityin_liquidity×liquidity_supply