Fee sharing hook on Base

Uniswap v4 Hook Contract 0x2276fc8a5f0073970a76011589900e10482b60cc on Base · Fee sharing

Volume (24h)
$2.90K
Value locked (TVL)
$0
All-time volume
$2.90K
Pools using this hook
2
Swaps (24h)
124 (33 traders)
Total swaps
124

What it does

Traders on these pools pay an extra capped, per-pool registered swap fee that is collected by the hook for recipients to withdraw later, while LPs can add and remove liquidity freely.

How it works step by step

  • Charges an extra fee on swaps, taken directly from the swap amounts through return deltas.
  • Fees are set per address (likely per token or creator) via a register function, checked against a hard-coded MAX_FEE cap (exact value not readable from bytecode).
  • Collected fees accrue to a recipient's balance inside the hook's accounting and can later be released (withdrawn).
  • A one-time bind function links the hook to a controlling address (likely a factory or owner); it cannot be rebound.
  • Does not touch liquidity adds or removals; LPs withdraw freely.
Swap behaviour
On each swap the hook looks up the fee registered for the pool and deducts it from the swap input or output, crediting the amount to a fee recipient's accrued balance. No allowlist or pause logic is visible.
Liquidity behaviour
No liquidity callbacks are enabled; LPs can add and withdraw freely.
Fee behaviour
An extra per-address fee is charged on swaps on top of the pool's LP fee, capped by a MAX_FEE constant whose exact percentage cannot be confirmed from bytecode. Fees accrue to registered recipients and are paid out via release.
Owner & admin controls
A bound controller (set once via bind) appears to be able to register fees per address up to MAX_FEE, reverting with FeeTooHigh above the cap. The cap value is unknown from bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: validates/sets up the pool on creation; beforeSwap: computes and takes the fee before the swap; afterSwap: takes or records fee on swap output; beforeSwapReturnDelta/afterSwapReturnDelta: let the hook deduct its fee from swap amounts.

Security & trust assessment

Risk level: medium, estimated (decoded bytecode, medium confidence).

Who controls it: A single bound address (set once) appears to control fee registration, limited by the hard-coded MAX_FEE cap. It cannot affect LP withdrawals.

Risk to user funds: The hook can take a fee from swap amounts up to its MAX_FEE cap (exact percentage unknown). LP principal cannot be locked or drained.

Security findings

  • [low] Swap fee taken via return deltas: The hook deducts a registered fee from swaps, bounded by a MAX_FEE constant whose exact value is not verifiable from bytecode.
  • [info] Unverified source: Analysis is based on decoded bytecode; who may call register and release is inferred, not confirmed.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks are disabled, so the hook can never block or charge LP withdrawals.

Contract details

Verified source
No
Bytecode size
3,362 bytes
Upgradeable proxy
No
Detected patterns
ownable, return-delta

Pools using Fee sharing hook