The creator chooses the fee, from 1% to 5%, at launch. It is charged on every swap in both directions for the life of the pool, and it is immutable: no contract in the chain has a function to change it afterwards. A higher fee fuels the position faster and slows trading down.
Where it is taken. The pool's LP fee is zero. The fee is taken by Doppler's Rehype hook (0x5f9e…3215) on the output of each swap: a buy pays it in the coin, a sell pays it in USDG. The hook then swaps the coin-side fee into USDG inside the same call, so what leaves the pool is USDG only. No keeper, no operator, no inventory of coins waiting to be sold.
Where it goes. Doppler keeps 5% of every fee, its protocol fee for the launch stack. The remaining 95% is transferred in USDG to the coin's fee sink, a small contract created in the launch transaction for that coin alone. Its flush() is public and does one thing: 15% of the trading fee to the protocol treasury, 80% to the coin's sub-wallet, and any coins that ever reached it burned. Two mechanical details: USDG fees below 1 USDG wait on the hook until the next swap pushes them over, so small sells arrive in batches; and because the coin-side fee is sold back into the pool, every buy carries a small sell of its own fee.
Uniswap's protocol fee. Uniswap v4's fee switch is active on Robinhood Chain. Its policy classifies pools by hook; pools with Doppler's hook are currently assessed at zero. If Uniswap ever assigns them a fee (at most 0.1% per swap), it is additive and paid by the trader; the engine's share does not change.