Access control hook on Robinhood Chain

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

Volume (24h)
$355
Value locked (TVL)
$0
All-time volume
$355
Pools using this hook
1
Swaps (24h)
11 (6 traders)
Total swaps
11

What it does

This hook only allows swaps while a linked market contract says trading is open and may adjust each swap's output by an amount that cannot be verified from bytecode, while LPs can always add and withdraw liquidity freely.

This read was written for the hook 0x4f7b…a0c4 on Robinhood Chain and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Links a Uniswap v4 pool to an external 'market' contract and a fixed pool manager, with no adjustable storage of its own.
  • On pool creation, checks the pool setup (likely the pool key and fee) against the market contract and rejects invalid fees.
  • Before each swap, asks the market contract whether trading is enabled and blocks swaps with a 'trading closed' error if not.
  • After each swap, can adjust swap amounts through a return delta, likely to take a fee. The exact amount cannot be confirmed from bytecode.
  • Never runs on liquidity adds or removals, so LPs can always withdraw.
Swap behaviour
Swaps only go through while the linked market contract reports trading as enabled; otherwise they revert. After a swap the hook may change the swap output via a return delta, with the amount unknown from bytecode.
Liquidity behaviour
No liquidity callbacks; LPs can add and withdraw freely.
Fee behaviour
The hook validates the pool fee at creation and may take or adjust swap amounts after each swap. The exact fee percentage and recipient cannot be determined from the unverified bytecode.
Owner & admin controls
The hook has no owner functions or storage. Whoever controls the external market contract can open or close trading, which pauses swaps.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, afterSwapReturnDelta

beforeInitialize: checks the pool configuration and fee when the pool is created; beforeSwap: blocks swaps when the market says trading is closed; afterSwap: runs post-swap logic; afterSwapReturnDelta: lets the hook change the swap output amount.

Security & trust assessment

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

Who controls it: The hook itself is immutable and not a proxy, but trading status depends on an external market contract whose controller can close trading. The bytecode does not show who that controller is or what limits apply to them.

Risk to user funds: The hook can affect traders' swap output through the afterSwap return delta, with an unknown maximum amount. LP principal cannot be locked or taken by this hook.

Security findings

  • [medium] Swaps can be paused by the market contract: Every swap reverts unless the external market contract reports trading as enabled, so whoever controls that contract can halt trading.
  • [medium] Swap return delta with unverified amount: The hook can change swap outputs after each trade. Without source code, the size of any deduction cannot be confirmed.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks are disabled, so the hook can never block or charge LP withdrawals.

Contract details

Verified source
No
Bytecode size
3,316 bytes
Upgradeable proxy
No
Detected patterns
return-delta

Pools using Access control hook