Likely dynamic fee hook on Monad

Uniswap v4 Hook Contract 0x62070a800ec33605159af38de113e3cbb14900c0 on Monad · Dynamic fee

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
1

What it does

A Uniswap v4 hook that appears to run custom logic around swaps for a pool with a fixed LP fee, but without verified source its exact behaviour cannot be fully confirmed.

How it works step by step

  • Registers pools through initializePool and records pool creation state keyed by pool id
  • Exposes FIXED_LP_FEE() indicating the pool uses a fixed LP fee
  • Executes beforeSwap and afterSwap callbacks on each swap
  • Rejects pools that use native ETH as a currency via ETHPoolNotAllowed
  • Implements an ERC-165 supportsInterface check and a getHookPermissions getter
Swap behaviour
Runs beforeSwap and afterSwap callbacks on every swap in the pool.
Liquidity behaviour
Implements beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors in the dispatch table, but the hook permissions only enable swap callbacks, so these are not active.
Fee behaviour
Exposes FIXED_LP_FEE() and pools are initialized via initializePool, suggesting a fixed LP fee set at pool creation rather than a dynamic fee; the exact fee value cannot be determined from the decoded input.
Owner & admin controls
No admin controls found.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap

beforeSwap: runs before each swap and may perform checks or logic on the swap parameters. afterSwap: runs after each swap and may record or adjust state based on the swap result.

Security & trust assessment

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

Who controls it: No owner or privileged role was identified in the decoded functions, so no obvious privileged key capability was found.

Risk to user funds: Based on the enabled permissions only beforeSwap and afterSwap, the hook does not appear to take or return token deltas, so it likely cannot hold or directly move pool funds; this cannot be fully confirmed without source.

Security findings

  • [info] Per-pool state tracked on initialization: The contract stores pool-level state (a mapping of pool ids to a boolean, and a pool creation timestamp mapping) written during initializePool, indicating it tracks per-pool configuration.
  • [info] ETH pools explicitly disallowed: The bytecode contains a revert path for ETHPoolNotAllowed, meaning pools with native ETH as a currency are rejected at initialization.
  • [low] Unverified swap-time logic: Swap callbacks are enabled, so the hook executes logic on every swap; without source the exact logic in beforeSwap and afterSwap cannot be verified for correctness.

Contract details

Verified source
No
Bytecode size
3,868 bytes
Upgradeable proxy
No

Pools using Likely dynamic fee hook