Fee sharing hook on Robinhood Chain

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

Volume (24h)
$31.10K
Value locked (TVL)
$5.17K
All-time volume
$341.16K
Pools using this hook
16
Swaps (24h)
350 (154 traders)
Total swaps
3,245

What it does

A Uniswap v4 hook that takes a configurable fee share on swaps for a protocol recipient, with pool creator and recipient roles managed by privileged keys.

How it works step by step

  • Registers each pool on initialization and tracks creator rights per pool id
  • Takes a protocol share of swap fees via return deltas (FEE_BPS, PROTOCOL_SHARE_BPS)
  • Settles and custodies currency with the PoolManager through unlock, take, mint and burn
  • Tracks liquidity add and remove timing per pool and exposes owed and claimable balances
  • Allows a claim and claimMany flow for accrued ERC-6909 claims by recipients
  • Uses a two-step creator proposal and acceptance with a recipient delay
Swap behaviour
beforeSwap and afterSwap are implemented with return-delta permissions, so the hook can adjust swap amounts and take a protocol fee portion during swaps.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are implemented and appear to record per-pool timestamps (uint40 mapping written on add) and may gate removal; afterAddLiquidity and afterRemoveLiquidity are present as view-stubs. Specific gating logic is not confirmed.
Fee behaviour
Contains constants FEE_BPS, LP_FEE, PROTOCOL_SHARE_BPS and a feeTerms(bytes32) getter, indicating a hook-managed fee with a protocol share split, likely taken via return deltas on swaps; exact formula cannot be confirmed without source.
Owner & admin controls
Unverified bytecode shows an owner-like role (mapping keyed by uint8 role id, setters via selectors 0xd6c4dad5 and 0x05ea488e) and a two-step creator proposal/accept flow (proposeCreator, acceptCreator, pendingCreator) keyed by pool id. A RECIPIENT_DELAY constant and DelayNotOver/NotRecipient errors suggest a timelocked recipient change. No pause or upgrade function identified.

Enabled Uniswap v4 callbacks

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

beforeInitialize registers pool metadata; beforeAddLiquidity and beforeRemoveLiquidity track liquidity timing and ranges (CURVE_TICK_LOWER, FULL_RANGE_UPPER, TICK_SPACING suggest a bounded curve position); beforeSwap and afterSwap with return-delta flags let the hook take or redirect a portion of swap amounts; beforeDonate is enabled but its effect is unclear; the self-unlock and take/mint/burn selectors indicate the hook settles currency and ERC-6909 claims through the PoolManager.

Security & trust assessment

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

Who controls it: A privileged role can propose and accept creator changes, reassign role addresses and possibly change the recipient, redirecting protocol fee share and claimable balances to a new party.

Risk to user funds: The hook can take a share of swap output through return deltas and holds or mints ERC-6909 claims on behalf of pool participants, so user and LP funds flow through its accounting; a compromised privileged key could redirect the protocol share or claimable balances.

Security findings

  • [medium] Return-delta fee capture: Hook uses beforeSwapReturnDelta and afterSwapReturnDelta to take or redirect tokens from swaps, so swap flows depend on the hook's accounting.
  • [medium] Hook custodies claims and moves currency: Hook calls unlock, take, mint and burn on the PoolManager and holds ERC-6909 claims, so it can custody user-facing balances between operations.
  • [medium] Privileged role reassignment: proposeCreator and acceptCreator plus role setters allow an authorised key to change who controls pool creator rights and recipients; a delay constant limits some changes.
  • [info] Unverified bytecode: Without verified source, the exact fee formula, delay enforcement and role checks cannot be confirmed; findings are inferred from selectors and errors.

Contract details

Verified source
No
Bytecode size
15,919 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, return-delta, self-unlock

Pools using Fee sharing hook