Access control hook on Robinhood Chain

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

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

What it does

A minimal Uniswap v4 hook that only runs at pool initialization, gating which pools can be created through an authorization mapping rather than changing swaps or liquidity.

How it works step by step

  • Enables only the beforeInitialize permission, so it runs when a pool is created.
  • beforeInitialize (0xdc98354e) checks and records a uint256-keyed flag in storage slot 1.
  • authorize(bytes32) (0x3c66fe68) sets authorization entries in the same mapping.
  • pendingInit(bytes32) (0x6df42cad) exposes the pending initialization state for lookup.
  • Other lifecycle callbacks exist in the dispatcher but are not enabled by the address permissions.
Swap behaviour
No swap callbacks.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are exposed as dispatched selectors but no state-changing logic beyond the permission gate is evident; treat as pass-through pending source review.
Fee behaviour
No fee logic identified in the decoded functions; the hook does not appear to set or take fees.
Owner & admin controls
Storage slot 0 holds an address with a bool flag; functions 0x191d618f (setter) and 0x3c66fe68 (authorize) appear to manage an authorized/owner-style address, so a privileged key likely exists, but exact semantics are not confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize

Only beforeInitialize is enabled by the hook address; beforeInitialize (0xdc98354e) writes a mapping keyed by uint256 in slot 1, likely recording a pending or initialized pool identifier, and pendingInit (0x6df42cad) reads it back.

Security & trust assessment

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

Who controls it: A privileged address stored in slot 0 can call the authorize/setter functions; the extent of its power over pool initialization is not verifiable from bytecode alone.

Risk to user funds: No token transfers, return-delta accounting or fee-taking logic was identified; the hook appears unable to hold or move user funds, though it may block pool initialization if the authorization mapping is not set.

Security findings

  • [info] Privileged address in storage: Slot 0 holds an address-typed value written by 0x191d618f and read by several functions, consistent with an owner or authorized controller.
  • [low] Initialization gated by authorization mapping: authorize(bytes32) at 0x3c66fe68 writes to a uint256-keyed mapping in slot 1, indicating an allowlist-style gate on pool initialization.
  • [info] Most callbacks declared but not enabled: The contract exposes a HookNotImplemented error selector and Panic revert, but the enabled permission set is only beforeInitialize, so most callbacks are unreachable by the pool manager.

Contract details

Verified source
No
Bytecode size
2,252 bytes
Upgradeable proxy
No

Pools using Access control hook