Dynamic fee hook on Robinhood Chain

Uniswap v4 Hook Contract 0x60d31599d69cd9aa6644e6402857c5cbf7d7e0c4 on Robinhood Chain · Dynamic fee

Volume (24h)
$25.17K
Value locked (TVL)
$26.18K
All-time volume
$451.46K
Pools using this hook
68
Swaps (24h)
175 (103 traders)
Total swaps
3,144

What it does

A Uniswap v4 hook that sets per-pool configuration and can override swap fees and take a delta from swaps, behaviour that cannot be fully confirmed without verified source.

How it works step by step

  • Validates and stores per-pool configuration at pool initialization (beforeInitialize, mapping in slot 3).
  • Quotes a fee for a given pool and swap direction via quoteFee.
  • Returns a dynamic fee override during beforeSwap when the fee flags are set.
  • Runs afterSwap logic and takes currency via the pool manager's take function, using afterSwapReturnDelta.
  • Owner-controlled ownership (two-step) and an owner-set address in storage that the swap path reads.
Swap behaviour
beforeSwap may return a fee override based on stored pool configuration, and afterSwap with return delta can take a share of the swap amount and send it through the pool manager.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
The hook exposes quoteFee and an OVERRIDE_FEE_FLAG and DYNAMIC_FEE_FLAG, and reads a per-pool config keyed by a mapping in slot 3 (configOf), suggesting it can supply a per-swap fee override from stored configuration. The exact fee formula cannot be determined from the decoded bytecode.
Owner & admin controls
Owner (Ownable2Step: transferOwnership then acceptOwnership) can call renounceOwnership and transferOwnership; slot 2 is written by the function selected 0x292d2b51 with a single address argument, which appears to set a privileged address (likely a registry, fee controller or config address) that the swap callbacks read. Exact parameter semantics cannot be confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, afterSwapReturnDelta

beforeInitialize: reads and validates per-pool configuration when a pool is initialized. beforeSwap: may return a dynamic fee override for the swap. afterSwap: runs post-swap logic and may adjust balances. afterSwapReturnDelta: lets the hook take a portion of the swap output or input as a delta, which is how it can move currency.

Security & trust assessment

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

Who controls it: The owner controls ownership transfer and whatever address is stored in slot 2, which the swap path depends on; a malicious or compromised owner could redirect the hook's dependencies or change behaviour through that address.

Risk to user funds: The hook can take a delta from swaps via the pool manager take call and so can capture part of user swap value. It does not appear to hold user LP funds directly, but its fee and delta logic determines how much users receive.

Security findings

  • [medium] Hook takes currency from swaps: The hook enables afterSwapReturnDelta and the bytecode calls take(address,address,uint256) on the pool manager, so it can extract tokens from swaps.
  • [medium] Owner-controlled dependency address: Ownable with a two-step transfer; renounceOwnership is available. The owner can re-point the address in slot 2 that is read during swaps.
  • [low] Parameters changeable by owner: Swap-time logic reads storage that is written by an owner-only function, so the owner can alter swap outcomes without a redeploy.
  • [info] Source not verified: Without verified source, the exact fee and delta formulas, and the meaning of the stored address, cannot be confirmed.

Contract details

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

Pools using Dynamic fee hook