Access control hook on Robinhood Chain

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

Volume (24h)
$0.39
Value locked (TVL)
$83
All-time volume
$563
Pools using this hook
8
Swaps (24h)
2 (1 traders)
Total swaps
408

What it does

A Uniswap v4 hook that gates pool initialization through a deployer-controlled authorization mapping and forwards settlement to a one-time-set adapter.

How it works step by step

  • Enables only the beforeInitialize permission for this hook address
  • Checks and records a pending initialization flag keyed by uint256 in beforeInitialize
  • Lets the deployer authorize initialization keys via authorize(bytes32)
  • Stores a settlement adapter address once, guarded by AdapterAlreadySet
  • Exposes ChangedUserData for deployer-controlled user metadata updates
  • Other lifecycle callbacks are present as view stubs with no observed state effects
Swap behaviour
No swap callbacks.
Liquidity behaviour
Only beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are dispatched as view stubs; no liquidity state changes were identified.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
A deployer-gated authorize(bytes32) and a ChangedUserData(address,string,string,address) setter write to storage; the deployer address is immutable-style and checked via OnlyDeployer. The settleAdapter slot is set once (AdapterAlreadySet guard), so the adapter cannot be replaced after first set. No pause or upgrade mechanism was found.

Enabled Uniswap v4 callbacks

beforeInitialize

beforeInitialize is enabled and is the only callback with a state-writing body; it consults a pending-init mapping keyed by uint256 before a pool is initialized. The remaining dispatched hook callbacks appear as view stubs and do not appear to modify state.

Security & trust assessment

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

Who controls it: The deployer key controls authorize and ChangedUserData writes and can authorize pool initialization keys; a compromised deployer key could gate which pools may initialize through this hook.

Risk to user funds: No evidence the hook holds, moves or blocks user or pool funds; its influence is on pool initialization authorization and the configured adapter, with no token transfers identified in the decoded bytecode.

Security findings

  • [medium] Pool initialization gated by hook state: beforeInitialize is the only enabled permission and writes to a mapping keyed by uint256 gated by a pending-init check, so pool creation depends on this hook's authorization state.
  • [medium] Single privileged deployer key: authorize and ChangedUserData are callable only by the deployer role, so a single privileged key controls authorization.
  • [info] Adapter set once: The settleAdapter storage slot is written once with an AdapterAlreadySet guard, limiting later changes to the settlement adapter.
  • [info] No swap or liquidity fund handling detected: Swap, donate and liquidity callbacks exist as view stubs without observed state writes, so they should not move or block user funds.

Contract details

Verified source
No
Bytecode size
1,791 bytes
Upgradeable proxy
No

Pools using Access control hook