Fee sharing hook on Robinhood Chain

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

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

What it does

This hook takes a fixed fee on each swap into a per-pool balance that the fee recipient can claim, and blocks swaps when a pool is paused or, during the launch window, when the trader is not allowlisted, so every trade pays the hook fee on top of the pool fee.

How it works step by step

  • Records a pool-specific token and fee configuration in beforeInitialize, keyed by pool id, for pools that are bound to this hook
  • Takes a fixed fee (FEE_BPS) on swaps through beforeSwap and afterSwap return deltas, redirecting the fee amount to a stored pending-fee balance rather than the LP pool
  • Accumulates pending fees per pool and lets claimFees(bytes32) withdraw them to FEE_RECIPIENT via the pool manager unlock flow (unlock, unlockCallback, take, mint/burn ERC6909 claims)
  • Supports per-pool pause and unpause (pause(bytes32), unpause(bytes32), paused, SwapsPaused error) that can block swaps for a given pool
  • Includes an allowlist mechanism (isAllowed, ALLOWLIST_DURATION, hasStarted) that gates which addresses may trade during an initial period
Swap behaviour
Swaps are gated in beforeSwap (reverts when the pool is paused or the sender is not allowed during the allowlist window) and the hook takes a fee through afterSwap return delta; trades pay FEE_BPS on the output side, while non-allowlisted traders are blocked early in the launch window.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses a fixed hook fee (FEE_BPS, with BPS denominator) plus the pool's LP_FEE; collected fees are accumulated in pendingFees per pool and claimable by FEE_RECIPIENT.
Owner & admin controls
Owner (owner()) can pause and unpause individual pools; fee recipient receives claimed fees. No upgrade mechanism is visible in the decoded selectors.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize binds the pool and stores its configuration; beforeSwap enforces pause and allowlist checks; afterSwap takes the hook fee via afterSwapReturnDelta; beforeSwapReturnDelta is enabled for the hook-side delta accounting.

Security & trust assessment

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

Who controls it: The owner controls per-pool pausing and the allowlist state, and the fee recipient is fixed in the contract; a compromised owner key could halt trading across pools.

Risk to user funds: The hook holds accumulated fee balances as ERC6909 claims and can take a share of each swap's currency via return deltas; a pause can block swaps but not withdraw user LP funds.

Security findings

  • [medium] Hook takes fees via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and afterSwap moves currency (take/mint), so the hook extracts value from every swap it is attached to.
  • [medium] Owner can pause pools: pause(bytes32) and unpause(bytes32) are owner-gated (OnlyOwner error present), letting a single key halt swaps in any bound pool.
  • [low] Allowlist can block trading: beforeSwap reverts for addresses not on the allowlist during ALLOWLIST_DURATION, so early traders can be excluded from the pool.
  • [info] Unverified source: No verified source is available, so the exact fee math, allowlist management, and fee recipient logic are inferred from bytecode only.

Contract details

Verified source
No
Bytecode size
7,918 bytes
Upgradeable proxy
No
Detected patterns
access-control, erc20, erc6909-claims, fee-sharing, moves-currency, ownable, return-delta, self-unlock

Pools using Fee sharing hook