DumpsterDumpster Docs
Protocol

Fee Structure

How fee rates are resolved for the bonding curve and DumpsterSwap.

Protocol

Fee schedule

Curve rates and AMM rates have separate settings in one FeeConfig account. Curve trading uses protocol and creator rates directly; DumpsterSwap retains its market-cap tiers and flat fallback.

Components

ComponentWhat it does
protocolFeeBpsThe platform fee collected by the protocol fee recipient.
creatorFeeBpsThe creator fee credited to the creator vault on Dumpster or DumpsterSwap.
lpFeeBpsThe AMM LP fee. Relevant on DumpsterSwap, not on the bonding curve.

Curve rates

The normal initial choice is protocol 950 (0.95%) plus creator 300 (0.30%), supplied explicitly at initialization. Curve reads feeConfig.curveFees independently of market cap, first-buy status and AMM tiers. There is no LP component. The stored fee authority can change these rates for all active curves; they are not snapshotted at token creation.

Despite the Bps suffix, fee rates use denominator 100,000: one stored unit is 0.001%. Both Curve fields are u16, and their sum may be up to 100,000 (100%); 1.25% is not a hard administrative cap. The program does not automatically install the normal initial values.

Each fee is ceil(principal * rate / 100000), rounded separately. Buys add the fees to fee-exclusive GOR principal; sells subtract them from gross output. Normal rates make a 100 GOR principal buy cost 101.25 GOR and a 100 GOR gross sell return 98.75 GOR, excluding network costs. Small raw-unit trades can differ from the nominal percentage because of rounding.

An explicit default Curve creator suppresses only the creator fee; missing client data is not that exception. Fees exceeding gross sell output reject, while a legitimate zero-net sell retains the minimum-output rule.

AMM fee resolution

  • DumpsterSwap supports up to 30 market-cap tiers, independently of Curve rates.
  • Each tier contains a Fees object.
  • Non-canonical pools use flat fees. Canonical pools also use flat fees when no tiers exist or market cap is below the first threshold.
  • Otherwise, select the greatest threshold not exceeding pretrade market cap. Graduation itself does not select a tier.
  • Each tier and the flat row contain u16 components whose sum is at most 100,000.

updateCurveFees changes only Curve rates; updateTiers changes only AMM tiers and flat fees. getFees(marketCap, isCanonical) remains an AMM schedule query, not a Curve rate lookup or transaction quote. AMM LP retention, canonicality and creator applicability are unchanged by this separation.

What integrations should assume

import { getFee, getAmmFees, computeFeesBps } from '@dumpster-cash/dumpster-sdk';

These helpers consume supplied snapshots; they do not fetch live rates. Curve helpers use the independent rates, creator applicability and integer cash flows; AMM selectors retain their schedule behavior. Use paired Curve inputs and distinguish a failed quote from a valid zero-net sell. See SDK Curve fees before building transaction bounds.

Protocol fee recipients

Each trade pays its protocol fee to one selected recipient, not a split across the configured list. In recipient fields, the default public key marks an unused slot; it is not an eligible payment destination. These rules require the program and SDK versions described above.

VenueConfiguration ruleTrade destination
Bonding curveA nondefault primary plus seven optional slots. Active optional entries must be sorted and unique, followed by empty slots; all seven may be empty.A nondefault primary or optional entry.
DumpsterSwapOne to eight sorted, unique active entries, followed by empty slots. Initialization uses the admin once and seven empty slots.A nondefault entry in the stored list.

These requirements still apply when the protocol fee rate is zero. The curve primary may also appear in its optional list; that does not duplicate a payment. A nondefault address is not proof of spendability or control, so administrators must choose destinations they can use.

Trades validate the selected destination. Migration requires the configured primary recipient, even when an optional entry is selected for trading.

Migration is primary-only, unlike trading; see migration configuration. SDK selection and empty-set errors are described in fee helpers.

On this page