Liquidity management hook on Unichain

Uniswap v4 Hook Contract 0xa0b0d2d00fd544d8e0887f1a3cedd6e24baf10cc on Unichain · Liquidity management

Volume (24h)
$71.08K
Value locked (TVL)
$846.32K
All-time volume
$1.43B
Pools using this hook
20
Swaps (24h)
1,083 (85 traders)
Total swaps
1.2M

What it does

A Uniswap v4 hook that appears to manage pool liquidity through an external FRLM-style liquidity manager, with swap-time return-delta adjustments and a reinvestment pause switch.

How it works step by step

  • Hooks into pool initialization and records configuration in afterInitialize
  • Runs custom logic in beforeSwap and afterSwap, including reinvestment checks gated by a pause flag
  • Adjusts swap settlement amounts through beforeSwapReturnDelta and afterSwapReturnDelta
  • Forwards liquidity deposits and withdrawals to an external manager via depositToFRLM and withdrawFromFRLM
  • Tracks and reports linked manager and oracle contract addresses through view getters
Swap behaviour
beforeSwap and afterSwap run custom logic and the hook can modify swap deltas via return-delta permissions; the reinvestment pause flag is checked during swaps.
Liquidity behaviour
Liquidity add and remove callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) are present; they appear to be exposed for interaction with a FRLM-style liquidity manager via depositToFRLM and withdrawFromFRLM.
Fee behaviour
Dynamic fee manager is referenced by a getter, suggesting fees may be managed by an external dynamic fee component; exact fee computation cannot be determined without source.
Owner & admin controls
A privileged account can toggle reinvestment via setReinvestmentPaused(bool), which is stored in slot 0 and read during swaps. Manager addresses (poolManager, liquidityManager, policyManager, dynamicFeeManager, truncGeoOracle) are exposed as view getters; whether they are mutable or immutable cannot be confirmed from bytecode alone.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize records pool setup; beforeSwap and afterSwap run swap logic and reinvestment handling; beforeSwapReturnDelta and afterSwapReturnDelta indicate the hook can adjust swap deltas and therefore take or supply tokens during swaps.

Security & trust assessment

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

Who controls it: The reinvestment toggle is controlled by a single privileged caller. Manager contract addresses referenced by getters suggest reliance on external components whose upgradeability and ownership are unknown.

Risk to user funds: The hook can settle swap deltas and interacts with liquidity held by an external manager, so user and pool funds flow through hook-controlled logic; the degree of exposure depends on access control and manager trust assumptions that cannot be fully verified.

Security findings

  • [medium] Return-delta permissions alter swap settlement: Hook has beforeSwapReturnDelta and afterSwapReturnDelta enabled, so it can alter the amounts settled in swaps and take a portion of user flow.
  • [medium] Externally callable pause toggle with unverified access control: setReinvestmentPaused(bool) is a state-changing function reachable externally; the caller check could not be verified without source, so unauthorized toggling cannot be ruled out from bytecode.
  • [medium] Liquidity movement entry points with unverified authorization: depositToFRLM and withdrawFromFRLM are payable or nonpayable entry points that move pool liquidity through an external manager; their authorization checks are not visible without source.
  • [info] External component dependencies: Dependence on external poolManager, liquidityManager, policyManager, dynamicFeeManager and truncGeoOracle addresses means behaviour can change if those components are upgradeable or privileged.

Contract details

Verified source
No
Bytecode size
9,215 bytes
Upgradeable proxy
No
Detected patterns
return-delta

Pools using Liquidity management hook