Skip to main content

Fees & Burn engine

Every swap on the GEODE/WETH v4 pool pays a flat 3% hook fee. The pool itself runs at a 0% LP fee tier — the hook is the only fee taker, by design. The hook splits that 3% into two buckets, on every swap: The treasury slice is pull-withdrawn outside the swap path — it can never make a user transaction revert. Treasury withdrawals are restricted to the configured Slinq treasury address.

The buyback-and-burn engine

The 2.7% slice doesn’t burn instantly — it accumulates in pendingBurn. Burning happens counter-flow: only after a sell, and only when there’s enough WETH on hand to make a meaningful purchase.
1

A sell arrives

Someone swaps GEODE → WETH. The hook collects the 3% fee from the WETH output.
2

Trigger conditions are checked

The buyback fires only if both of the following are true:
  • The seller’s wethOut is at least 0.05 WETH
  • pendingBurn is at least 0.05 WETH
3

The hook buys GEODE back from its own pool

Budget: min(pendingBurn, wethOut). Capped at a 1% price-impact bound (sqrtPriceLimitX96) from the post-sell pool state, so it can’t be sandwiched into a bad fill.
4

GEODE is sent to the burn address

The bought-back GEODE is forwarded to 0x…dEaD. pendingBurn is debited by the actual WETH consumed, so partial fills are fine.
The buyback runs as a gas-capped, catchable external call (220K gas). If it reverts, the user’s swap still succeeds — the burn engine can never block a trade.

What this means for you

  • Buys push the price up and earn mining capacity. Buys also feed pendingBurn (their fee share goes to the burn pool, ready to deploy on the next sell).
  • Sells pay the same 3% fee, earn no capacity, but they’re what triggers the actual burn — using accumulated burn fuel to purchase and destroy GEODE supply.
  • Holding is rewarded indirectly: every sell shrinks float (counter-pressure), and every meaningful trade strengthens the burn reserve.
There is no buy-side overflow drain. If GEODE goes through a stretch of pure buying, pendingBurn simply accumulates and waits — it’ll deploy the next time a sell hits the threshold.

A note on exact-output swaps

The v1 hook does not support exact-output (specify-receive-amount) swaps — they revert. This keeps fee accounting and hook settlement straightforward. Use exact-input swaps instead; the official frontend handles the slippage math for you.