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
- BASELINE / USDG (0.00% fee) — 24h volume $0, TVL $0, 2 swaps today
- USDG / BULLISH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- MOONCAT / SPCX (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / OHM (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SPY / BOWJONES (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / BULLSHIT (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SPCX / MARSCOIN (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ABUNDANCE / USDG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / WALLSTREET (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- SPY / TEST (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / SHOGGOTH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / CAPCAT (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- COMPANY / USDG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / TEST (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- TOKEN / COIN (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / REGARDS (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / HODL (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / RBX6900 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- RICKROLL / USDG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- PARABOLIC / USDG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today