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
- USDG / COIN (Dynamic fee) — 24h volume $25.17K, TVL $26.18K, 175 swaps today
- USDG / INTC (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / MSTR (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- QUBT / USDG (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / PENG (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / SNAP (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / RBLX (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / MRVL (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / PLTR (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / ORCL (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / META (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- MRNA / USDG (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- AMC / USDG (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / BE (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / ON (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- LMT / USDG (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / NVDA (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / AMD (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / WYFI (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- USDG / UPS (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today