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
- CROWN / USDC (Dynamic fee) — 24h volume $2.20K, TVL $12.00K, 23 swaps today