LaunchHoodHook on Robinhood Chain

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

Volume (24h)
$90
Value locked (TVL)
$12.58K
All-time volume
$3.79M
Pools using this hook
17
Swaps (24h)
5 (2 traders)
Total swaps
23,887

What it does

A singleton Uniswap v4 hook for the launchhood.fun memecoin launchpad that keeps each token's pool locked until graduation and skims a fixed percentage of the ETH side of every post-graduation swap into a fee balance collected by the locker.

How it works step by step

  • Restricts pool initialization to the factory via beforeInitialize
  • Blocks swaps and liquidity additions until the meme token's transfersEnabled() returns true
  • Takes a per-token fee in ETH on swaps using beforeSwap and afterSwap return deltas
  • Accrues fees in pendingFees[meme] and emits SwapFeeAccrued
  • Lets only the locker collect accrued ETH via collectFees, which emits FeesCollected
Swap behaviour
After graduation, beforeSwap takes the fee from the ETH amount when ETH is the specified currency, and afterSwap takes it from the ETH leg when ETH is unspecified. Before graduation, swaps revert with NotGraduatedYet.
Liquidity behaviour
beforeAddLiquidity reverts until the meme token has graduated (transfersEnabled() is true), blocking liquidity additions before graduation. No remove-liquidity callbacks and no liquidity return deltas.
Fee behaviour
Charges a per-token swap fee in ETH only, in V4 fee units (10000 = 1%). On ETH-specified swaps the fee is taken in beforeSwap via beforeSwapReturnDelta; on ETH-unspecified swaps it is taken in afterSwap via afterSwapReturnDelta. Accrued fees are held in pendingFees[meme] until the locker collects them. Pools are created with a zero LP fee, so LPs earn nothing directly from the pool.
Owner & admin controls
No owner or pause controls in the hook. The factory is the only caller allowed to register each pool's swap fee (registerPool, once per token) and to set the locker address (setLocker, once). Locker is the only address that can call collectFees. Fee rates are immutable after registration.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool initialization to the factory. beforeAddLiquidity blocks adds until graduation. beforeSwap enforces graduation gating and takes the ETH swap fee as a before-swap return delta. afterSwap takes the ETH swap fee on the unspecified leg as an after-swap return delta. beforeSwapReturnDelta and afterSwapReturnDelta are enabled so the hook can take a share of swap amounts.

Security & trust assessment

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

Who controls it: The factory controls which pools can be registered and sets the locker once; no ongoing owner can change fees, pause swaps or upgrade the contract. The locker collects all accrued fees, so the factory and locker wiring determines where fee ETH goes.

Risk to user funds: The hook can hold ETH skimmed from swaps in pendingFees until the locker collects it. It cannot move meme token balances or block exits beyond the pre-graduation lock. Users' ETH is taken as a fee within swap settlement and is not otherwise custodied.

Security findings

  • [info] Pre-graduation trading lock: beforeSwap and beforeAddLiquidity revert with NotGraduatedYet while transfersEnabled() on the meme token is false, so trading is blocked until graduation.
  • [low] Fee ETH held by the hook until collection: The hook takes ETH from the PoolManager via take() and holds it in pendingFees until the locker calls collectFees. Fee accounting depends on the external meme token's transfersEnabled() return value and the factory and locker correctly wiring the hook.
  • [low] Hook holds user-paid ETH fees: The hook keeps ETH from swaps via return deltas. Accrued fees sit in contract balance until collectFees is called; a failing locker transfer reverts the collection.
  • [info] Immutable fee configuration: Fee rates are fixed per token at registration and cannot be changed by an admin, and the factory-only setters are one-shot.

Contract details

Verified source
Yes (LaunchHoodHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
5,699 bytes
Upgradeable proxy
No
Detected patterns
launchpad, return-delta

Pools using LaunchHoodHook