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
- ETH / WBTC (Dynamic fee) — 24h volume $67.94K, TVL $814.30K, 608 swaps today
- USDC / XRP (Dynamic fee) — 24h volume $1.66K, TVL $11.84K, 176 swaps today
- USDC / ZEC (Dynamic fee) — 24h volume $1.24K, TVL $14.05K, 243 swaps today
- USDC / XPL (Dynamic fee) — 24h volume $131, TVL $1.53K, 13 swaps today
- USDC / DOGE (Dynamic fee) — 24h volume $115, TVL $3.78K, 43 swaps today
- USDC / ZEC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / XPL (Dynamic fee) — 24h volume $0, TVL $12, 0 swaps today
- USDC / XRP (Dynamic fee) — 24h volume $0, TVL $760, 0 swaps today
- ETH / WBTC (Dynamic fee) — 24h volume $0, TVL $42, 0 swaps today
- ETH / USD₮0 (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / DOGE (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / rsETH (Dynamic fee) — 24h volume $0, TVL $1.11, 0 swaps today
- ETH / WBTC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / WBTC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / USDC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USD₮0 (Dynamic fee) — 24h volume $0, TVL $0.50, 0 swaps today
- USDC / 0xbbeb…e7e8 (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- ETH / 0x1edb…a7a2 (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDC / USD₮0 (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HOOF (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today