The Fee and the Floor
The buzz
Every trade in the hive pays rent. The rent is split two ways: half to the creator who built the place, half into a jar bolted to the floor. When the jar has something in it, anyone can tip it into the pool as a bid just under the market price. That bid is now part of the pool FOREVER. There is no lever, no key, no admin, no "emergency function", no governance proposal #7 to take it back out. We didn't make it hard to withdraw; we didn't write the function. Unruggable by omission. 🍯
So the floor under the price gets a little thicker with every trade, and when the price dips into it, the floor buys FLY. And when the price recovers, that FLY gets sold back at a higher price — the floor earns — and the FLY it earns as fees gets burned. Buy the dip, sell the rip, burn the profits. A machine that does the thing you keep saying you'll do.
The hive grows.
The boring part
The protocol fee
- 0.80% of the USDG side of every swap, buy or sell. Always in USDG.
- Hard cap 1.00% (
MAX_HOOK_FEE_BPS), a constant. The controller can lower it, never raise it past the cap. "Fee set to 50% lol" is a rug you have seen; it is not a rug you can see here. - Split by
creatorShareBps, 50% at launch (controller-tunable 0–100%):- to the creator: paid out in the same transaction, per swap; the hook never holds it
- to the pot (
pendingLiquidityUsdg): held in the hook until compounded
- The controller can switch the fee off (
setFeePaused). That switch does not stop trading; it is a circuit breaker for the fee path only (see Risks). Pausing the fee makes trading CHEAPER, never impossible.
So at the defaults, 0.40% of every dollar traded goes to the creator, and 0.40% becomes floor. Say that out loud before you buy; we do. The creator's alpha is your volume, not your bag.
Compounding the pot
compound() is permissionless. Anyone may call it; the caller is paid a bounty
(Keepers). What it does:
- Takes at most one tranche — 2,000 USDG — from the pot, once per 30 minutes.
- Places it as a USDG-only bid in a band that starts at the first tick-spacing strictly under the reference price (so 0–2% under it) and runs ten spacings deep (about 22%).
- If the previous band is still clear of the market, the new USDG joins it; if the price has moved into the previous band, a new band is opened and the old one is left in place (its accrued fees are swept first).
The reference price is the higher of the current price and its 30–60-minute
time-weighted average — or rather the lower FLY price of the two, which is the safe side.
This is what stops someone from pumping the price for one transaction, compounding, and
selling into a bid placed at their own pumped price. The security review proved that attack
against an earlier version and then proved the fix (docs/security-review-living-pool.md,
F-02). Yes, we tried to rob our own machine. It bit us. Then we fixed the teeth.
Why single-sided, why under the price
The pot is USDG. A position at the price would have to hold FLY too, which would mean the
hook buying FLY at spot inside compound() — with the protocol's own money, at a price the
caller may have just moved. Aping with the treasury: no. A bid just under the price needs no
swap, has no slippage, and can only ever buy FLY below the average. It is "at the current
price" in every sense Uniswap allows without a swap. The floor never FOMOs.
What the floor does over time
- Bands are never removed. Not by the creator, not by the controller, not by anyone. There is no function. Diamond hands, but the hands are bytecode.
- A band that is bought through in a dip keeps its FLY and sells it back if the price recovers through it. It earns fees in both currencies both ways.
- The USDG fees it earns go back into the pot. The FLY fees it earns are burned by
burnAccruedFly(), also permissionless. - The principal FLY a band holds is not burned; it is the inventory that defends the next dip. Ammo stays in the chamber.
How fast it grows
At the defaults the floor grows at 0.40% of USDG volume:
| Volume | Locked |
|---|---|
| $100k | $400 |
| $1M | $4,000 |
| $10M | $40,000 |
It is SLOW. Read the table again. "Every trade adds to the floor" is true from the first trade; "the floor protects the price" becomes true only when the numbers get big — and at launch they are tiny. We would rather you knew than found out. This is not a floor you can stand on yet. It is a floor that is being poured.
One honest distinction
- Locked liquidity — the bands — lives inside Uniswap's PoolManager and is irremovable.
- Pending liquidity — the pot — is a USDG balance held by the hook until compounded. USDG is a regulated stablecoin whose issuer can freeze addresses (Risks). "Locked forever" is a claim we make about the bands. About the pot, we make no such claim, and neither should you.