Custom pricing hook on Robinhood Chain

Uniswap v4 Hook Contract 0x18b779b030cb3e5a0cf91d9c9f20645570d7aaec on Robinhood Chain · Custom pricing

Volume (24h)
$73
Value locked (TVL)
$2.21
All-time volume
$73
Pools using this hook
8
Swaps (24h)
94 (5 traders)
Total swaps
94

What it does

A custom-accounting hook that intercepts pool initialization, liquidity, swap and donation events and can adjust swap amounts and claim balances, with a fee manager role controlling some parameters.

How it works step by step

  • Runs logic before and after pool initialization, liquidity additions and removals, swaps and donations.
  • Uses swap return deltas so it can adjust the amounts exchanged in a swap.
  • Accounts for claims using ERC-6909 style mint and take operations.
  • Stores per-pool state in a mapping keyed by pool id and a per-address snipe exemption mapping.
  • Exposes a collect function that is callable externally to withdraw accrued amounts.
  • Restricts some configuration to a fee manager address.
Swap behaviour
beforeSwap and afterSwap run on every swap and the hook can modify swap deltas through its return delta permissions, which can change the amounts paid or received.
Liquidity behaviour
Hook implements before and after add and remove liquidity callbacks plus a before donate callback; the logic inside these callbacks could not be decoded in detail. Storage slot 0 is a mapping written in collect and afterSwap paths.
Fee behaviour
Likely adjusts or takes fees via return deltas on swaps, but the exact fee logic could not be determined without source; collect() suggests accrued amounts are withdrawn by a caller.
Owner & admin controls
A feeManager() getter exists and a NotFeeManager() revert selector is present, indicating a fee manager address gates some setter (likely the fee or pool parameters); the exact setter could not be identified without source. A collect() function is nonpayable and callable externally. No upgrade or pause selectors were found.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize and afterInitialize run on pool creation; beforeAddLiquidity and afterAddLiquidity and beforeRemoveLiquidity and afterRemoveLiquidity run on liquidity changes; beforeSwap and afterSwap run on each swap; beforeDonate and afterDonate run on donations; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take or give currency deltas during swaps.

Security & trust assessment

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

Who controls it: A fee manager address is referenced and gates privileged logic, so a compromised or malicious fee manager could alter fee-related behaviour affecting swappers and LPs.

Risk to user funds: The hook can take or mint currency through return deltas and ERC-6909 accounting during swaps and can hold balances via collect, so user and pool funds may be moved or held by the hook.

Security findings

  • [medium] Swap return delta and currency movement: Both swap return delta permissions are enabled, so the hook can modify the amounts a swapper pays or receives and can take currency via the take and mint paths.
  • [medium] Privileged fee manager role: A NotFeeManager revert and a feeManager getter indicate a privileged role that gates some parameter or fee changes.
  • [medium] ERC-6909 claims and currency handling: The contract uses ERC-6909 mint and claim style accounting and calls take, so it may hold or move user or pool currency balances.
  • [low] Address-based gating in swaps: A snipeExempt(bytes32,address) check and an EmptyFillRejected revert suggest anti-sniping or order-fill logic that can block specific addresses or fills.
  • [info] Unverified source: No source is verified, so the exact behaviour of each callback and the admin setters cannot be confirmed.

Contract details

Verified source
No
Bytecode size
11,499 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, return-delta

Pools using Custom pricing hook