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
- ETH / CAPYBOOST (1.00% fee) — 24h volume $0, TVL $785, 0 swaps today
- ETH / MONK (1.00% fee) — 24h volume $0, TVL $0.02, 0 swaps today
- ETH / CYKABLYAT (1.00% fee) — 24h volume $0, TVL $0.48, 0 swaps today