Liquidity management hook on Robinhood Chain

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

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

What it does

A Uniswap v4 hook that manages liquidity for pools it is attached to, with privileged owner and keeper roles that control its operation.

How it works step by step

  • Runs logic on pool initialization (beforeInitialize) to set up per-pool state.
  • Gates and accounts for liquidity added through beforeAddLiquidity.
  • Reads live pricing and pool slot0 state before swaps (beforeSwap).
  • Calls the pool manager's unlock, modifyLiquidity, take, settle and sync functions to manage balances itself.
  • Tracks allocations per address and per pool and exposes owner-controlled pause and keeper-driven rebalancing.
Swap behaviour
beforeSwap is enabled and reads pool state and live price before swaps; the hook may move currency during swaps through its unlock and settle flow.
Liquidity behaviour
beforeAddLiquidity is enabled and the contract calls modifyLiquidity on the pool manager and tracks allocations per address (mapping slot 4); it appears to manage liquidity positions held by the hook itself rather than leaving LP funds passive.
Fee behaviour
Not determined from decoded bytecode; the hook does not expose a clear fee-setting function, so it likely uses the pool's static fee or fees captured through liquidity movements.
Owner & admin controls
Owner (slot 0) can set owner via setOwner and keeper via setKeeper, and can pause/unpause pools via setPaused(bytes32,bool). The keeper address (slot 1) can call privileged functions such as the rebalancing/order-management entry points (selectors 0x4eb8a253, 0xc17253ab, 0xdf5cbdcb). Upgradeability and timelocks could not be determined from the bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap

beforeInitialize: validates and initializes pool state on pool creation. beforeAddLiquidity: gates or accounts for liquidity added to the pool. beforeSwap: performs logic before swaps, including reading pool state and price (livePrice) and possibly moving currency via take/settle/sync.

Security & trust assessment

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

Who controls it: The owner can reassign ownership and the keeper, and can pause pools. The keeper can execute privileged liquidity and state-changing operations. A compromised owner or keeper key could redirect or lock hook-managed funds or disrupt swaps and liquidity additions.

Risk to user funds: The hook can hold tokens and move pool currency through its unlock/take/settle flow and can pause pools, so LP and swap funds routed through it depend on owner and keeper honesty. The exact extent of user exposure cannot be confirmed without source.

Security findings

  • [medium] Owner pause control: Owner can pause pools via setPaused, which can block swaps or liquidity additions for affected pools.
  • [medium] Hook moves currency: Hook calls take, settle and sync and transfers tokens (transfer selector present), so it holds and moves pool currency as part of its logic.
  • [medium] Privileged keeper role: Keeper role can invoke state-changing functions (selectors 0x4eb8a253, 0xc17253ab, 0xdf5cbdcb) with access to hook-held liquidity, a central point of trust.
  • [info] Self-unlock pattern: Bytecode contains self-unlock behaviour (calls unlock and unlockCallback), meaning the hook opens its own pool manager unlock sessions to move funds.
  • [info] Unverified source: No verified source, so exact access checks and upgrade mechanisms cannot be confirmed.

Contract details

Verified source
No
Bytecode size
16,729 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, self-unlock

Pools using Liquidity management hook