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
- SPY / cSPY (1.00% fee) — 24h volume $0, TVL $382, 0 swaps today