CashCatGraduationHook on Robinhood Chain

Uniswap v4 Hook Contract 0x8526171645365821d0630f20bbe35284a3d1a040 on Robinhood Chain · Launchpad · Verified contract

Volume (24h)
$3.03K
Value locked (TVL)
$24.54K
All-time volume
$1.29M
Pools using this hook
38
Swaps (24h)
11 (5 traders)
Total swaps
7,965

What it does

A singleton hook for CashCat launch pools that marks a token as graduated in the same swap that pushes the locked position's paired-currency value past the token's threshold, and that only the launchpad can use to create pools.

How it works step by step

  • afterSwap reads the post-swap pool price from the PoolManager and computes how much of the paired currency the locked launch position would be worth at that price, rounding down.
  • If that paired amount reaches the token's snapshotted threshold, afterSwap sets a one-way graduated flag for the pool and emits TokenGraduated. The flag is never cleared.
  • beforeInitialize only allows pool creation when the initializing sender is the bound launchpad, so third parties cannot pre-initialize a launch pool key.
  • register lets the launchpad store each pool's token, threshold, position liquidity and tick range once. A second registration for the same pool reverts.
  • The hook takes no fees and returns zero deltas from afterSwap, so it does not take or redirect swap value.
Swap behaviour
afterSwap runs after every swap on a registered pool. It returns immediately once graduated is set. Before graduation it reads the pool price, computes the paired-currency principal of the locked position and latches graduation if the threshold is met. It always returns a zero delta. Unregistered pools hit a no-op path.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses the pool's static fee. The hook does not set, take or share fees.
Owner & admin controls
There is no owner, pause or upgrade mechanism. The deployer account can call setLaunchpad once to bind the launchpad, and the bind is checked against the launchpad's own graduationHook pointer. After the bind, only the launchpad can register pools, and each pool can be registered once. Pool liquidity, token and threshold cannot be changed after registration.

Enabled Uniswap v4 callbacks

beforeInitialize, afterSwap

beforeInitialize gates pool creation so only the launchpad can initialize pools that use this hook. afterSwap records the graduation milestone after each swap and always returns a zero delta.

Security & trust assessment

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

Who controls it: The deployer can bind the launchpad once and then has no further power. The launchpad can register pool configs for pools using this hook, one per pool. No party can pause the hook, change fees, move funds or upgrade the contract.

Risk to user funds: The hook holds no tokens and returns zero deltas from afterSwap, so it cannot take, owe or redirect swap value. It has no pool-level custody. Its only influence on funds is through the graduation flag, whose downstream use is in the launchpad.

Security findings

  • [low] Graduation depends on launchpad-supplied config: The threshold, token, tick range and liquidity used to compute graduation come from the launchpad's register call, and the hook trusts them once stored. A compromised or buggy launchpad could register a misleading threshold for a pool, though it cannot change it afterwards.
  • [info] Graduation effects are defined outside this contract: The NatSpec describes graduation as cosmetic. The hook only sets the graduated flag and emits an event. Any effects that depend on the flag live in the launchpad, which was not provided, so they cannot be assessed here.
  • [info] Pool creation reverts when the launchpad is not bound: beforeInitialize reverts for any sender other than the launchpad, and no pool can be initialized with this hook until setLaunchpad runs. This only affects pool creation, not trading on existing pools.
  • [low] Swap liveness depends on afterSwap never reverting: If afterSwap ever reverted when called by the PoolManager, every swap on that pool would revert. The code relies on bounded inputs from registration, the price read and the SqrtPriceMath and TickMath primitives. The argument is reasonable but has not been independently verified here.
  • [info] Unused IHooks callbacks revert: The other callbacks revert with HookNotImplemented. Their permission bits are not set in the address, so the PoolManager never calls them.

Contract details

Verified source
Yes (CashCatGraduationHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
6,457 bytes
Upgradeable proxy
No
Detected patterns
launchpad

Pools using CashCatGraduationHook