Launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0xa11bdae367d2e1c97864de3b484166546762e0cc on Robinhood Chain · Launchpad

Volume (24h)
$350
Value locked (TVL)
$41.66K
All-time volume
$14.79M
Pools using this hook
1
Swaps (24h)
5 (5 traders)
Total swaps
25,777

What it does

A Uniswap v4 hook for a token launch pool that gates and taxes swaps during a launch window, accrues fees, and is controlled by privileged roles that can pause trading and withdraw funds.

How it works step by step

  • Validates pool initialization in beforeInitialize
  • Gates swaps in beforeSwap based on pause state and launch window timing
  • Tracks per-address launch purchases and total fees accrued in afterSwap
  • Takes or settles currency via return deltas and the PoolManager unlock/take flow
  • Accrues fees that can be withdrawn to a fee recipient or treasury
  • Provides role-based admin functions including pause and emergency withdrawals
Swap behaviour
beforeSwap and afterSwap run on every swap; they check paused state and launch-window status, and set return deltas that can take or settle currency during trades.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fee constants BPS, FEE_BPS and OWNER_FEE_BPS are exposed, and accrued fees are tracked in pendingFees and totalFeesAccrued, with fees withdrawable to a feeRecipient or treasury; the exact fee split logic cannot be confirmed without source.
Owner & admin controls
Role-based access control (DEFAULT_ADMIN_ROLE via grantRole, revokeRole, renounceRole) with a paused flag settable through setPaused; setLaunchRouter sets the launch router address; emergencyWithdrawETH and emergencyWithdrawToken let privileged roles pull funds; withdrawOwnerFees and flush control fee withdrawal and flushing; initialize can be called once to set up the hook.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize validates pool setup at pool creation; beforeSwap and afterSwap run during swaps and read launch-window state; beforeSwapReturnDelta and afterSwapReturnDelta indicate the hook can take or settle currency deltas during swaps, which lets it skim or redirect value from trades; the hook also self-unlocks the PoolManager (unlockCallback, take, mint/burn of ERC6909 claims).

Security & trust assessment

Risk level: high (decoded bytecode, low confidence).

Who controls it: A privileged admin can pause trading, change the launch router, withdraw ETH and arbitrary ERC20 tokens through emergency functions, withdraw accrued owner fees, and grant or revoke roles, so the admin key can drain or freeze funds held by the hook and affect swap outcomes.

Risk to user funds: The hook can hold ETH and ERC20 balances and ERC6909 claims, and privileged roles can withdraw them via emergency and owner-fee functions; swaps can be paused and return deltas can alter currency flows during trades.

Security findings

  • [high] Privileged emergency withdrawal: emergencyWithdrawETH and emergencyWithdrawToken allow a privileged role to move hook-held balances to any address.
  • [medium] Return-delta swap interception: The hook sets return deltas on swaps and uses self-unlock with take and mint/burn, so it can take or redirect currency during trades, affecting trader and LP outcomes.
  • [medium] Pausable swaps: setPaused lets a privileged role halt swaps through beforeSwap checks, blocking trading.
  • [medium] Role-based centralization: Role administration via grantRole and the admin role can add new privileged holders; roles and the launch router are not timelocked based on the visible surface.
  • [info] Unverified source: Source is unverified, so behaviour is inferred from selectors and storage only and actual logic may differ.

Contract details

Verified source
No
Bytecode size
16,434 bytes
Upgradeable proxy
No
Detected patterns
erc20, erc6909-claims, moves-currency, pausable, return-delta, self-unlock

Pools using Launchpad hook