Launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0x86aeef5d2dc53ff55ebc18172336ef9d7df260cc on Robinhood Chain · Launchpad

Volume (24h)
$4.74
Value locked (TVL)
$4.75
All-time volume
$4.74
Pools using this hook
1
Swaps (24h)
1 (1 traders)
Total swaps
1

What it does

This launchpad hook charges buy and sell fees set in basis points, with sells and buys possibly paying different rates, and sends a creator share of collected fees to the creator while the rest accrues to the pool.

How it works step by step

  • Acts as a token launchpad hook: the hook contract is itself an ERC20 (name, symbol, decimals, totalSupply, transfer, approve, burn) with a fixed TOTAL_SUPPLY and creator metadata (creator, dev, charter, website, twitter, telegram, image).
  • Initializes a Uniswap v4 pool in beforeInitialize and tracks a poolId and a launch timestamp (launchedAt) plus a poolOpen flag that gates trading.
  • Charges swap fees with buy and sell rates (buyBps, sellBps, bounded by MAX_FEE_BPS) inside beforeSwap and afterSwap, using before-swap and after-swap return deltas to take the fee from the swap.
  • Accumulates fees (pendingFees, totalFees) and splits them between a creator share (CREATOR_BPS, creatorOwed, totalClaimed) and the rest, paid out via claim().
  • Uses unlockCallback and take() on the PoolManager to move currency during fee settlement, and sends a dev payment that can fail with DevPaymentFailed.
  • Exposes liquidity callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) and a donation callback; these are present as selectors but their logic cannot be confirmed from bytecode alone.
Swap behaviour
Swaps pass through beforeSwap and afterSwap; the hook may take a fee expressed in basis points via return deltas, with buy and sell rates applied separately, so buys and sells can pay different fees (exact rates are set by stored buyBps and sellBps values not readable from the decoded data).
Liquidity behaviour
Liquidity add and remove callbacks exist (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity); their exact gating or effects could not be determined from the decoded bytecode.
Fee behaviour
Fees are charged by the hook rather than the pool's static fee: buyBps and sellBps set the rates (capped by MAX_FEE_BPS), collected fees accrue to pendingFees, and a CREATOR_BPS share is owed to the creator and claimable through claim().
Owner & admin controls
An owner (owner() via Ownable) and a dev or creator address exist; the decoded selectors suggest owner-gated parameter changes, but the exact functions and their scope could not be confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets up the pool and opening state; beforeSwap and afterSwap apply the fee and accounting; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take fee currency out of swaps; liquidity and donate selectors are present but their enabled state is not in the provided permission list.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, medium confidence).

Who controls it: A privileged owner or dev key could alter fee rates up to MAX_FEE_BPS, pause trading via poolOpen, and redirect creator or dev payments, affecting all holders and traders.

Risk to user funds: The hook can take fee currency from every swap via return deltas and can block swaps or fee settlement through its open flag and payment logic, so user swap proceeds and LP balances are exposed to its fee and pause logic.

Security findings

  • [medium] Return-delta fee capture on swaps: beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a portion of every swap, so the rate set by buyBps and sellBps directly determines how much traders lose.
  • [high] Owner-adjustable fee rates: buyBps and sellBps are stored and bounded only by MAX_FEE_BPS; an owner with setter access could raise fees up to that cap on live trades.
  • [medium] Pool open flag can gate trading: A poolOpen flag is read in the swap path, so a privileged role may be able to halt or restrict trading.
  • [medium] Currency movement via unlock and take: The hook calls unlock and take on the PoolManager to move currency, and a failed dev payment reverts with DevPaymentFailed, which can block fee settlement.
  • [info] Mutable creator and dev addresses: Creator and dev addresses receive fee shares and dev payments, so changing or compromising them redirects fee revenue.

Contract details

Verified source
No
Bytecode size
10,972 bytes
Upgradeable proxy
No
Detected patterns
erc20, launchpad, moves-currency, ownable, return-delta, self-unlock

Pools using Launchpad hook