CBLaunchV4Hook on Robinhood Chain

Uniswap v4 Hook Contract 0xfe3158bcec99f483ea1619b43e0769d99f705840 on Robinhood Chain · Oracle · Verified contract

Volume (24h)
$0
Value locked (TVL)
$786
All-time volume
$51.63K
Pools using this hook
3
Swaps (24h)
0 (0 traders)
Total swaps
36,174

What it does

Records a time-weighted price history for a launched Uniswap V4 pool and can close the pool so only the launcher can add liquidity, without taking fees or altering swaps.

How it works step by step

  • afterInitialize seeds the pool's observation history with the opening tick, but only for pools created by the launcher and only when observations are enabled.
  • afterSwap reads the current tick from PoolManager storage and appends a cumulative observation once per block, inside a try/catch so failures cannot revert trades.
  • beforeAddLiquidity rejects liquidity additions from anyone except the launcher when the pool is configured as closed.
  • observe and lastObservationAge expose tick accumulators over arbitrary past windows, refusing windows that span a recorded history gap.
  • configure lets the launcher register a pool's options once, before the pool is initialized, and those options cannot change afterwards.
Swap behaviour
afterSwap records the post-swap tick into the pool's observation history when observations are enabled, and returns a zero delta so swap amounts are unchanged.
Liquidity behaviour
beforeAddLiquidity reverts with LiquidityClosed for any sender other than LAUNCHER when the pool's closedLiquidity option is true, so only the launch position can supply liquidity to closed pools. Open pools accept liquidity normally.
Fee behaviour
The hook never sets or takes fees: beforeAddLiquidity and afterSwap return no fee or delta. Pool fees are handled by the launch contract and the pool's own fee settings.
Owner & admin controls
The hook has no owner, pause, upgrade or parameter-setting functions. The only privileged party is LAUNCHER, an immutable address that alone may call configure() once per pool and open pools naming this hook; it cannot change a pool's options after configuration.

Enabled Uniswap v4 callbacks

afterInitialize, beforeAddLiquidity, afterSwap

afterInitialize seeds the price history at the opening tick and rejects pools not created by the launcher. beforeAddLiquidity enforces the closed-liquidity guard. afterSwap records the post-swap tick into an append-only observation array, wrapped in try/catch so recording failures cannot revert swaps.

Security & trust assessment

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

Who controls it: The LAUNCHER address controls which pools are configured and is the only depositor allowed into closed pools. It cannot alter fees, pause swaps, or change recorded history.

Risk to user funds: The hook holds no tokens and returns no deltas, so it cannot move or custody pool funds. Its only power over user funds is blocking non-launcher liquidity provision on closed pools, which does not affect holders' ability to swap or withdraw.

Security findings

  • [info] No upgradeability, pause or owner: The hook is deployed with the immutable LAUNCHER address and the constructor enforces the exact flag address pattern, so callbacks cannot be silently disabled.
  • [info] Swaps cannot be blocked or repriced by the hook: afterSwap returns a zero delta and omits the returns-delta flag, so the hook cannot alter swap amounts. Recording failures are caught and only mark historyBrokenAt, so a failing recorder cannot block exits.
  • [low] Hardcoded PoolManager storage layout: The hook reads slot0 from PoolManager storage using a hardcoded POOLS_SLOT offset that mirrors Uniswap's layout. A wrong offset would silently record incorrect ticks, though the contract notes this was verified by fork test.
  • [info] Oracle readings can be refused across gaps: Observations are recorded once per block and the price-history gap marker blocks windows spanning a missed write, reducing the risk of manipulated or corrupted TWAP readings.

Contract details

Verified source
Yes (CBLaunchV4Hook)
Compiler
solc 0.8.24+commit.e11b9ed9
Bytecode size
4,927 bytes
Upgradeable proxy
No
Detected patterns
launchpad, oracle

Pools using CBLaunchV4Hook