CashCatHookV2 on Robinhood Chain
Uniswap v4 Hook Contract 0x75a54357d9c78a2db19004a5fdc76c50f9242aec on Robinhood Chain · Fee sharing · Verified contract
- Volume (24h)
- $9.88K
- Value locked (TVL)
- $140.23K
- All-time volume
- $63.75M
- Pools using this hook
- 9,166
- Swaps (24h)
- 159 (82 traders)
- Total swaps
- 684,012
What it does
A fee engine for CashCat launchpad pools that skims a flat fee (max 10%) on the quote side of every swap, splits it between the pool creator and the platform, and permanently locks liquidity.
How it works step by step
- Takes a flat per-pool fee on the quote currency (currency0) of every swap, using beforeSwap and afterSwap return deltas and holding the proceeds as ERC6909 claims in the pool manager.
- Only the factory can register pools and seed liquidity. Liquidity can be added once per pool and can never be removed, and donations are blocked.
- Anyone can call sweep to redeem pending fee claims into the real asset. The creator share is credited to a per-pool tab, and the platform share is paid to the treasury in ETH or booked in platformTab for ERC-20 quotes.
- The fee recipient (creator) calls claim to withdraw the tab in full or in part to any address, and can hand the stream to a new address with updateCreator.
- Non-native platform balances are released only by the per-currency sink registered by the owner, through deliverPlatform, which pays a destination directly.
- Swaps that only partially fill on the specified side, or that move nothing on either side, are rejected.
- Swap behaviour
- beforeSwap charges the fee up front when the quote is the specified currency (exact-in buys, exact-out sells), minting claims and returning a before-swap delta. afterSwap charges the fee on the actual quote moved when the quote is unspecified, returning an unspecified delta. It reverts with PartialFillRejected if a specified-side swap fills only partly, and with EmptyFillRejected if nothing moved on either side. A FeeAccrued event is emitted once per swap.
- Liquidity behaviour
- Only the factory can add liquidity, and only once per pool (seeded flag). Every later add reverts with LiquidityAlreadySeeded. All liquidity removals revert with LiquidityLocked, and donations revert with DonationsLocked.
- Fee behaviour
- Each pool has a flat fee rate fixed at registration, capped by the hook at 10% (MAX_FEE_RATE = 100000 pips), with the LP fee required to be 0. The fee is taken on the quote side. Exact-output swaps are grossed up so they pay the same effective rate. At sweep, creatorFeeBps (fixed at launch, up to 100%) goes to the creator tab, and the rest goes to the platform. Native platform shares are pushed to the treasury, and the push is parked in platformTab if it fails. ERC-20 platform shares always park in platformTab.
- Owner & admin controls
- The owner (Ownable2Step, renounceable) can call setTreasury to redirect the platform's native share (not to the hook itself), and setSink to set or clear the per-currency sink for non-native platform balances (the sink must be a contract). The factory address is immutable and decides which pools are registered, but the hook caps fee rates at 10%. The hook is not upgradeable and has no pause. The owner cannot change pool fee rates, creator shares or creator balances. Each creator can change their own creator address.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool creation to the factory, requires a registered config, a matching currency0 and a zero LP fee. beforeAddLiquidity enforces the factory-only, one-time seed. beforeRemoveLiquidity always reverts to lock liquidity. beforeSwap takes the fee when the quote is the specified currency. afterSwap takes the fee when the quote is the unspecified currency and rejects partial or empty fills. beforeDonate always reverts. beforeSwapReturnDelta and afterSwapReturnDelta let the hook claim the fee as a delta on the swap.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner can redirect the platform share (treasury and sinks) but cannot touch creator balances, change fee rates, upgrade the hook or pause trading. The factory controls which pools exist and their parameters, within the 10% fee cap. A creator controls the destination of their own fee stream.
Risk to user funds: The hook holds ERC6909 claims and then real assets (ETH or the quote token) for pending fees, creator tabs and platform tabs. These can only leave through claim by the creator, collectPlatform to the treasury (ETH only) or deliverPlatform by the registered sink. LP liquidity cannot be withdrawn at all, since removals always revert. Traders' swaps are not otherwise blocked, but the pool's quote token issuer could freeze the hook's balance.
Security findings
- [medium] Liquidity permanently locked: beforeRemoveLiquidity always reverts and only one seed add is allowed, so LPs can never withdraw and the pool's depth is fixed. This is intended, but it is irreversible, and pool health depends entirely on trading.
- [info] Hook takes fees via return deltas: beforeSwap and afterSwap mint ERC6909 claims for the fee and return deltas, so traders pay up to 10% of the quote leg on every swap. The cap is enforced in register.
- [medium] Factory controls registration: The immutable factory alone chooses the creator, creatorFeeBps and feeRate for each pool, and the factory is described as upgradeable. The hook only bounds the fee rate to at most 10% and creatorFeeBps to at most 100%.
- [low] Owner controls platform payout destinations: The owner can change the treasury and the non-native sinks, which redirects only the platform share. A sink can pull any booked non-native platform balance through deliverPlatform to any address.
- [low] Swap reverts on partial or empty fills: PartialFillRejected and EmptyFillRejected make price-limited or partially fillable swaps revert, which can break integrations that expect partial fills. A quote token that delivers nothing on redemption makes sweep and claim revert.
Contract details
- Verified source
- Yes (CashCatHookV2)
- Compiler
- solc 0.8.28+commit.7893614a
- Bytecode size
- 13,927 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, moves-currency, ownable, return-delta, self-unlock
Pools using CashCatHookV2
- ETH / LOL (0.00% fee) — 24h volume $6.89K, TVL $26.52K, 79 swaps today
- ETH / HOPKIN (0.00% fee) — 24h volume $837, TVL $0.13, 8 swaps today
- ETH / PURRS (0.00% fee) — 24h volume $688, TVL $6.59K, 6 swaps today
- ETH / OURO (0.00% fee) — 24h volume $322, TVL $21.34K, 15 swaps today
- ETH / GATO (0.00% fee) — 24h volume $290, TVL $2.78K, 5 swaps today
- ETH / CATURN (0.00% fee) — 24h volume $253, TVL $0.13, 3 swaps today
- ETH / WIF (0.00% fee) — 24h volume $253, TVL $0.13, 3 swaps today
- ETH / CATONIT (0.00% fee) — 24h volume $180, TVL $1.47K, 7 swaps today
- ETH / 9TO5 (0.00% fee) — 24h volume $111, TVL $6.25K, 1 swaps today
- ETH / HOOD10 (0.00% fee) — 24h volume $30, TVL $9.83K, 5 swaps today
- ETH / akcat (0.00% fee) — 24h volume $17, TVL $390, 1 swaps today
- ETH / BX5OT (0.00% fee) — 24h volume $1.69, TVL $0.27, 1 swaps today
- ETH / CASHWHALE (0.00% fee) — 24h volume $0.15, TVL $648, 1 swaps today
- ETH / LIGHT (0.00% fee) — 24h volume $0.13, TVL $0, 1 swaps today
- USDG / VAI (0.00% fee) — 24h volume $0.13, TVL $201, 1 swaps today
- ETH / QUORO (0.00% fee) — 24h volume $0.13, TVL $0, 1 swaps today
- ETH / MOTO (0.00% fee) — 24h volume $0.13, TVL $0.09, 1 swaps today
- ETH / TEKCAT (0.00% fee) — 24h volume $0.13, TVL $2.30, 1 swaps today
- ETH / JEWEL (0.00% fee) — 24h volume $0.13, TVL $0, 1 swaps today
- ETH / MORPHANOS (0.00% fee) — 24h volume $0.13, TVL $0, 1 swaps today