Utility hook on Robinhood Chain

Uniswap v4 Hook Contract 0xc81fd894c0ace037d133af4886550ac8133568e8 on Robinhood Chain · Utility

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

What it does

A Uniswap v4 hook with an admin-managed executor set and a routed action dispatcher, which appears to act on swaps and pool operations, though its exact purpose could not be confirmed without source.

How it works step by step

  • Admin nominates and hands over admin role through a two-step transfer
  • Admin adds or removes executor addresses that are allowed to call executeActions
  • executeActions accepts arrays of action codes and payloads and dispatches them
  • Actions are routed to target contracts via a bytes4 => address routes mapping
  • Hook participates in pool lifecycle via beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap and beforeDonate
  • beforeSwap can return a delta to adjust swap settlement
Swap behaviour
beforeSwap and afterSwap are enabled, and beforeSwap can return a delta, but the specific swap logic could not be decoded.
Liquidity behaviour
The beforeAddLiquidity permission is enabled but no dedicated liquidity-specific selector was decoded; any logic would run inside the hook's internal callback path. No further liquidity behaviour could be confirmed from the bytecode alone.
Fee behaviour
No fee logic was identified in the decoded functions; fees are not set or taken by the hook itself based on the visible selectors. Uses the pool's static fee as far as can be determined.
Owner & admin controls
Two-step admin transfer: admin calls transferAdmin(address) to set pendingAdmin (slot 1), and the pending admin calls acceptAdmin() to take over. Admin can addExecutor(address) and removeExecutor(address), which toggle entries in the executor mapping (slot 5). Executors are authorized to call executeActions. No pause or upgrade function was found in the decoded selectors.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta

beforeInitialize: runs once when a pool using this hook is initialized. beforeAddLiquidity: runs before liquidity is added to a pool using this hook. beforeSwap: runs before each swap and can return a delta, which lets the hook adjust swap accounting. afterSwap: runs after each swap. beforeDonate: runs before donations to a pool using this hook. beforeSwapReturnDelta: lets the hook's beforeSwap return a delta that changes what the pool settles for the swapper.

Security & trust assessment

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

Who controls it: A single admin key can add or remove executors, and executors can trigger executeActions, which dispatches actions (run(bytes) and routed calls) against the hook. The admin can also nominate a new admin. A compromised admin or executor key could direct hook-controlled actions and their token flows.

Risk to user funds: Because beforeSwapReturnDelta is enabled and executeActions can route actions to configured targets, the hook may be able to move or retain tokens tied to swaps and liquidity operations. Exact flows cannot be confirmed without source, so exposure is potentially significant.

Security findings

  • [high] Return-delta permission with generic action router: The hook has beforeSwapReturnDelta enabled, so its beforeSwap callback can alter the amounts settled on a swap, and executeActions routes arbitrary actions through the hook.
  • [medium] Configurable action router: executeActions(uint8[],bytes[]) is payable and dispatches through a routes mapping (bytes4 => address) and a run(bytes) selector, so the set of callable behaviour depends on admin-configured routes.
  • [medium] Single-key executor and admin control: Executor permissions are managed by a single admin key with no timelock or multisig visible in the bytecode.
  • [info] Two-step admin transfer: Two-step admin transfer (transferAdmin then acceptAdmin) is present, which limits accidental loss of admin control.

Contract details

Verified source
No
Bytecode size
6,024 bytes
Upgradeable proxy
No
Detected patterns
return-delta

Pools using Utility hook