Fee sharing hook on Robinhood Chain

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

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

What it does

A Uniswap v4 hook that charges a swap fee on trades, splits it between a fee vault and other receivers, and restricts liquidity additions and trading for some addresses.

How it works step by step

  • Charges a basis-point fee on swaps and routes a share to a vault fee receiver
  • Tracks accrued fees per address and lets holders claim them via claimFees
  • Gates liquidity additions through beforeAddLiquidity with a LiquidityNotAllowed error
  • Uses beforeSwapReturnDelta to take currency during swaps
  • Exposes owner-controlled router, fee receiver and pool pinning settings
Swap behaviour
beforeSwap runs a custom fee and wallet-limit check and can take currency via return deltas, so part of each swap flows to the hook and its fee receivers.
Liquidity behaviour
beforeAddLiquidity gates liquidity additions (the LiquidityNotAllowed error selector appears, suggesting additions are restricted to permitted addresses or states). beforeRemoveLiquidity and afterRemoveLiquidity selectors are present as view stubs with no clear mutation observed.
Fee behaviour
A fee (FEE_BPS, FEE_VAULT_BPS selectors present) is taken on buys and sells and split between a vault fee receiver and other parties; accrued fees are tracked per address in a mapping (feesOwed) and withdrawn through claimFees. Exact percentages are not determinable from the bytecode alone.
Owner & admin controls
Owner (Ownable) can transfer or renounce ownership, set the router via setRouter, set fee receivers via setFeeReceivers, and pin the pool via pinPool; owner can also toggle a boolean at slot 2 offset 20 via function 0x3bb97df7. No explicit pause function is observed.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeAddLiquidity: restricts or gates adding liquidity. beforeSwap: applies the custom fee and max-wallet or trading checks before a swap, and may run custom accounting. beforeSwapReturnDelta: allows the hook to take or give currency during swaps, used to route fees and tokens out of the swap.

Security & trust assessment

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

Who controls it: The owner can change the router, fee receivers and pinned pool and can transfer ownership. A malicious or compromised owner could redirect fee receivers to themselves, change the router to a malicious contract, or alter fee-related parameters affecting trader outcomes.

Risk to user funds: The hook can take currency via return deltas on swaps, holds accrued fees in its own balance and mapping, and can block liquidity additions and certain trades. Owner-controlled routing and fee receivers can redirect those funds.

Security findings

  • [high] Return-delta currency extraction: beforeSwapReturnDelta lets the hook take currency during swaps, so the hook itself can extract value from every swap that passes through the pool.
  • [medium] Owner can redirect fees and routing: setFeeReceivers and setRouter are owner-callable, so the owner can redirect fee flows and route swaps through an arbitrary router.
  • [medium] Trading and liquidity restrictions: beforeAddLiquidity and beforeSwap contain restriction-related errors and a max-wallet getter, indicating the hook can block liquidity provision or trades for some addresses.
  • [medium] Hook custodies accrued fees: The hook holds fee balances and pending burn/reserve accounting (feesOwed, pendingBurn, reserve), so it custodies tokens that users may need to claim.

Contract details

Verified source
No
Bytecode size
8,162 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, fee-sharing, liquidity-management, moves-currency, ownable, return-delta

Pools using Fee sharing hook