Likely dynamic fee hook on Base

Uniswap v4 Hook Contract 0x02f4d74e76245d249b364203bf4051144c70e080 on Base · Dynamic fee

Volume (24h)
$2.20K
Value locked (TVL)
$12.00K
All-time volume
$25.91K
Pools using this hook
1
Swaps (24h)
23 (5 traders)
Total swaps
93

What it does

A time-decaying dynamic fee hook that anchors a fee schedule to pool initialization and applies it to swaps once activated by an admin.

How it works step by step

  • Records the pool's opening sqrt price and start time during beforeInitialize
  • Exposes a fee schedule computed from elapsed time via feeAtElapsed
  • Reports the current fee through currentFee for the active pool
  • Uses a single bool flag set by activate() to enable the schedule
  • Reads poolManager and positionManager references as immutable configuration
Swap behaviour
beforeSwap is a view-style callback that reads activation state and the current fee from the schedule, so swaps are priced using a time-dependent fee.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
A fee schedule is computed by feeAtElapsed(uint256) as a function of time elapsed since opening, and currentFee() reads the current value; beforeSwap likely applies this fee to swaps, so fees appear time-dependent rather than static.
Owner & admin controls
An admin address is exposed via admin(), and activate() is nonpayable; the only storage slot is a bool flag set by activate(), so the admin role appears limited to triggering activation. No pause, upgrade or fee-parameter setters were decoded.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap

beforeInitialize records the opening sqrt price and pool identity for the pool; beforeSwap reads the activation state and current fee to gate or price swaps.

Security & trust assessment

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

Who controls it: The admin address can call activate(), which flips the bool flag that gates the schedule; the decoded code does not show a way to change fee parameters after deployment.

Risk to user funds: The hook has no return-delta or token-taking permissions visible in its enabled callbacks, so it does not appear to hold or move user funds directly; it only affects the fee applied to swaps.

Security findings

  • [info] Activation gated by a single flag: The bool flag at slot 0 is written only by activate(), and beforeSwap and currentFee() read it, so activation status controls whether the fee schedule is live.
  • [info] Schedule anchored at pool initialization: Opening time and opening price are fixed at initialization via startedAt and openingSqrtPriceX96 getters, which suggests a launch-style schedule.
  • [low] Unverified fee logic: Without verified source the exact fee curve and whether beforeSwap can revert when inactive cannot be confirmed from the decoded selectors alone.

Contract details

Verified source
No
Bytecode size
2,363 bytes
Upgradeable proxy
No

Pools using Likely dynamic fee hook