Liquidity management hook on Robinhood Chain

Uniswap v4 Hook Contract 0xbd525a9968460da65d0b66edfa8eefdba072d0cc on Robinhood Chain · Liquidity management

Volume (24h)
$234
Value locked (TVL)
$213
All-time volume
$89.46K
Pools using this hook
25
Swaps (24h)
88 (71 traders)
Total swaps
1,665

What it does

A Uniswap v4 hook that manages protocol-owned liquidity and fee reinvestment for a pool by taking a share of swap flows and routing it into a fee-reinvestment liquidity manager.

How it works step by step

  • Initializes per-pool fee and POL state after pool initialization
  • Accounts for swap fees in beforeSwap and afterSwap and tracks a POL share per pool
  • Takes or returns swap deltas via beforeSwapReturnDelta and afterSwapReturnDelta
  • Exposes depositToFRLM and withdrawFromFRLM to move liquidity into and out of a liquidity manager
  • Reinvests accrued fees into liquidity through reinvest()
  • Allows the owner to pause reinvestment with setReinvestmentPaused
Swap behaviour
beforeSwap and afterSwap execute fee and POL accounting, and the return-delta permissions let the hook adjust the amounts settled on swaps.
Liquidity behaviour
Before and after liquidity add/remove callbacks are present; deposits to and withdrawals from a FRLM (fee-reinvestment liquidity manager) are exposed through depositToFRLM and withdrawFromFRLM, and reinvest() can recycle accrued fees into liquidity.
Fee behaviour
Fees are notified and tracked per pool via a fee state and POL share mapping (notifyFee, getFeeState, getPoolPOLShare); the hook appears to take a portion of swap fees as protocol-owned liquidity via return deltas, though the exact split cannot be confirmed without source.
Owner & admin controls
Owner-gated functions are indicated by the owner() call selector in bytecode; setReinvestmentPaused(bool) lets the controlling address pause reinvestment of POL/fees. No upgrade proxy or source verification was found, so exact owner-restricted parameter changes cannot be confirmed.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize initializes pool state and oracle; beforeSwap and afterSwap run fee/POL accounting and reinvestment logic; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take or return a delta on swaps; liquidity and donate callbacks are implemented for liquidity management hooks.

Security & trust assessment

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

Who controls it: A privileged owner can pause reinvestment and, via the FRLM-related functions, direct how pool liquidity is deposited or withdrawn; the liquidityManager, policyManager and dynamicFeeManager addresses are external controllers that could alter behaviour if they are upgradeable or owner-controlled.

Risk to user funds: The hook can receive and move pool balances through return deltas and FRLM deposit and withdrawal flows, so pool funds and LP positions are exposed to its accounting logic and to the managers it calls.

Security findings

  • [medium] Return deltas alter swap settlement: The hook has beforeSwapReturnDelta and afterSwapReturnDelta enabled, so it can take a cut of swap amounts and route them into POL or reinvestment rather than the pool.
  • [medium] Owner can pause reinvestment: setReinvestmentPaused and the owner() call indicate a single privileged controller can halt reinvestment and the FRLM flows.
  • [medium] Reliance on external managers: Withdrawal and reinvestment logic depends on external liquidityManager and policyManager contracts whose code was not inspected.
  • [info] Unverified source: The source is not verified, so the exact fee split and reinvestment rules were inferred from selectors only.

Contract details

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

Pools using Liquidity management hook