Access control hook on Robinhood Chain

Uniswap v4 Hook Contract 0x45cf3081092b8e238220c5c95f5155291cb38840 on Robinhood Chain · Access control

Volume (24h)
$3.22M
Value locked (TVL)
$24.60K
All-time volume
$3.22M
Pools using this hook
1
Swaps (24h)
9,500 (642 traders)
Total swaps
9,500

What it does

This hook appears to gate liquidity additions and swap activity with address-based controls such as nonces, a signer, and a sell toggle, but the exact behaviour cannot be fully confirmed without source.

How it works step by step

  • Runs a beforeAddLiquidity check that may restrict who can provide liquidity
  • Runs an afterSwap callback that updates per-address state (nonces and last user records)
  • Exposes a signer() getter, indicating an off-chain authorization key
  • Exposes sellEnabled() and a list getter, suggesting a sell whitelist or toggle
  • Exposes getETHBalance(), indicating the hook may hold native ETH
Swap behaviour
afterSwap updates per-address state and a sell-enabled flag may restrict selling; the precise restriction logic could not be determined from the bytecode.
Liquidity behaviour
beforeAddLiquidity and afterAddLiquidity selectors are present, and the hook tracks per-address nonces, so adding liquidity may be gated by a signed-authorization or nonce check; the exact condition could not be confirmed from bytecode alone.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
A signer() function and a storage address in slot 0 suggest a privileged signer or owner, but no setter was identified from the decoded selectors, so admin control scope cannot be fully confirmed.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, afterSwap

beforeAddLiquidity gates liquidity provision; afterSwap updates per-address state (nonces/lastUser) after each swap.

Security & trust assessment

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

Who controls it: A privileged signer address (stored in slot 0) may control which addresses are permitted to add liquidity or sell; a compromised signer could block or allow specific participants.

Risk to user funds: The hook may restrict who can add liquidity or sell, and may hold native ETH via getETHBalance; whether it can move or seize pool funds could not be determined from the decoded bytecode.

Security findings

  • [medium] Privileged signer dependency: The hook exposes signer() and stores an address in slot 0, indicating an off-chain signing authority that may gate participation.
  • [medium] Possible sell restriction toggle: The hook exposes sellEnabled() and a list-style getter, which suggests a toggle that can restrict selling by some or all users.
  • [low] Native ETH balance held by hook: The hook exposes getETHBalance() and a poolManager() getter; it may hold native ETH, which implies a potential custody surface.
  • [info] Unverified source: No verified source is available, so function purposes and access checks are inferred from selectors and storage only.

Contract details

Verified source
No
Bytecode size
12,193 bytes
Upgradeable proxy
No

Pools using Access control hook