CatchFamilyHookV1 on Robinhood Chain

Uniswap v4 Hook Contract 0xe47059cdcb36f96acf7a79791acec540b793c0cc on Robinhood Chain · Dynamic fee · Verified contract

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

What it does

A fixed-fee hook on the canonical cAsset/underlying pool that charges a 3% Catch fee in underlying on both buys and sells, layered on the pool's 1% native fee.

How it works step by step

  • Charges a fixed 3% fee in underlying on the underlying leg of every swap in the canonical pool (both directions, exact-in and exact-out).
  • Keeps the native 1% Uniswap pool fee separate from the hook fee.
  • Mints ERC-6909 claims on PoolManager for accrued underlying fees instead of withdrawing funds mid-swap.
  • Redeems accrued underlying claims via unlockCallback and routes them permissionlessly to the immutable family fee ledger through flushDirect.
  • Rejects partial fills on underlying-specified swaps so users cannot be charged a full fee on an incomplete fill.
Swap behaviour
beforeSwap and afterSwap charge a 3% fee in underlying on every swap where underlying is one leg, handled as specified-currency or unspecified-currency deltas depending on swap direction; swaps where underlying is not involved pass through unchanged.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
A fixed 3% Catch fee (HOOK_FEE_BPS = 300) is charged in the underlying asset on swaps where underlying is the specified or unspecified currency, computed on gross for exact-input and on net for exact-output. The native Uniswap pool fee is a fixed 1% (LP_FEE = 10000). Hook fees accrue as ERC-6909 claims on PoolManager and can be flushed permissionlessly to the immutable fee ledger.
Owner & admin controls
No owner or pause controls found. The only privileged path is the factory, which can call bindFeeLedger once (to set the immutable fee ledger) and registerPool to register the canonical pool; neither can change fee rates, which are constants (HOOK_FEE_BPS 300, LP_FEE 10000). Fee ledger is bound once and checked against a codehash on flush.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: charges the 3% underlying fee when underlying is the specified currency and returns a specified-currency delta; afterSwap: charges the fee when underlying is the unspecified currency, reverts on partial fills of specified-underlying swaps, and returns an unspecified-currency delta; beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take the fee from swap deltas.

Security & trust assessment

Risk level: low (verified source, high confidence).

Who controls it: No privileged key can alter pool fees, pause swaps, upgrade the contract or move funds. The factory can only perform a one-time ledger binding and pool registration, so centralization risk is limited to the factory and the immutable ledger.

Risk to user funds: The hook can hold accrued underlying fee claims as ERC-6909 balances on PoolManager and can redeem them to the fee ledger. It can take up to the fee on each underlying-leg swap, but cannot block or move pool liquidity beyond these fees, and has no pause function.

Security findings

  • [info] Partial fills revert on underlying-specified swaps: Swaps are reverted with PartialFillNotSupported if a price limit causes a partial fill of a swap whose specified currency is underlying, protecting traders from paying a full fee on a partial fill but also causing such swaps to fail under limits.
  • [medium] Hook takes tokens via return deltas: The hook takes its 3% fee via beforeSwap and afterSwap return deltas and holds minted ERC-6909 underlying claims, so swap settlement depends on the hook's delta accounting being correct.
  • [low] Unlimited underlying approval to fee ledger: The fee ledger is bound once to the factory and checked against a stored codehash before each flush; the underlying token is approved to the ledger with max allowance, so a compromised or buggy ledger could drain accrued underlying held for flush.

Contract details

Verified source
Yes (CatchFamilyHookV1)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
6,036 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta, self-unlock

Pools using CatchFamilyHookV1