Likely fee sharing hook on Robinhood Chain

Uniswap v4 Hook Contract 0xef390e933332cd788df6cd7dbb80c0267331e044 on Robinhood Chain · Fee sharing

Volume (24h)
$0
Value locked (TVL)
$7.96K
All-time volume
$1.36M
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
11,970

What it does

A Uniswap v4 hook that charges owner-set buy and sell fees on swaps, routes those fees to a dev wallet, and applies per-swap quote-token limits that the owner can remove.

This read was written for the hook 0xf91f…e044 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

  • Charges a buy fee and a sell fee expressed in basis points, bounded by MAX_FEE_BPS.
  • Takes the fee from swap output through afterSwapReturnDelta and transfers it to the dev wallet.
  • Enforces a maximum quote-token amount per swap while limits are enabled.
  • Lets the owner exempt specific addresses from the limits.
  • Lets the owner permanently disable limits via removeLimits.
Swap behaviour
afterSwap takes a buy or sell fee in basis points from the swap delta and transfers it to the dev wallet, with limit checks against maxQuotePerSwap when limits are enabled and exempt addresses bypassing them.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are exposed but the permissions do not enable them, so the hook does not act on liquidity changes.
Fee behaviour
Buy and sell fees are set by the owner in basis points through setSwapFees and bounded by MAX_FEE_BPS; afterSwap takes a fee via return delta and routes it to the dev wallet, with the quote token used as the fee currency.
Owner & admin controls
Owner (slot 0) can set the dev wallet, set buy and sell fee basis points (up to MAX_FEE_BPS), toggle per-address limit exemptions, remove the per-swap quote limits permanently via removeLimits, transfer ownership, and call an unnamed nonpayable function with selector 0xf73c5829 that writes the boolean stored in slot 2 (likely a pause or toggle) while the owner-only setters are not gated by a verified modifier in source.

Enabled Uniswap v4 callbacks

beforeInitialize, afterSwap, afterSwapReturnDelta

beforeInitialize is used to validate or set up the pool at creation; afterSwap is used to take a fee from the swap output and send it to the dev wallet; afterSwapReturnDelta lets the hook adjust the swap delta so it can take a share of the traded amount.

Security & trust assessment

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

Who controls it: The owner key can change fees up to the cap, redirect fee proceeds by changing the dev wallet, exempt addresses from limits, transfer ownership, and call the unnamed toggle function, so a compromised owner can alter trading costs for all users immediately.

Risk to user funds: The hook takes a fee in the quote token on swaps via return delta and sends it to the dev wallet, so it can hold or move a portion of swap proceeds; it does not hold LP principal, and the unnamed toggle could block swaps if it acts as a pause.

Security findings

  • [medium] Owner-adjustable swap fees: Owner can set buy and sell fees via setSwapFees, bounded by MAX_FEE_BPS, which changes the cost of every swap.
  • [medium] Owner can redirect fee proceeds: setDevWallet is owner-controlled and afterSwap moves fee tokens to the stored dev wallet, so changing the address redirects fee revenue.
  • [medium] Hook moves swap currency: The hook uses afterSwapReturnDelta and the take function, so it moves currency out of the pool on swaps; a bug in fee math could misroute pool funds.
  • [low] Unnamed state-changing function: Selector 0xf73c5829 is an unnamed nonpayable owner-reachable function writing slot 2, whose purpose cannot be confirmed without source and may block trading.
  • [info] Limits can be permanently removed: removeLimits is irreversible and clears the limitsEnabled flag, which is an intentional one-way change by the owner.

Contract details

Verified source
No
Bytecode size
4,726 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, ownable, return-delta

Pools using Likely fee sharing hook