Launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0xcdaa0e43089793346c2fe2e2557987ad39ad20cc on Robinhood Chain · Launchpad

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

What it does

This launchpad hook charges a fee in basis points on swaps and sends the accumulated fees to a fee recipient, so traders on both buys and sells receive slightly less than the pool quote, though whether buys and sells are charged differently could not be confirmed from the bytecode.

This read was written for the hook 0xb54a…20cc on Robinhood Chain and reused here: the two run the same code.

How it works step by step

  • Hook is a launchpad-style token hook with a name, symbol, metadata, image and social links exposed as view functions, plus ERC20 transfer, transferFrom and approve selectors, indicating the hook contract is itself an ERC20 token.
  • beforeInitialize is gated by a launcher address (NotLauncher error selector present) and sets an initialized flag in storage slot 3.
  • beforeSwap and afterSwap both write to a packed slot holding counters and fee totals, and track buyCount, sellCount and totalFeesPaid.
  • Fee logic uses a feeBps value and a feeRecipient address, with pendingFees accumulated and paid out via a take(address,address,uint256) call to the pool manager.
  • beforeSwap and afterSwap return deltas (beforeSwapReturnDelta and afterSwapReturnDelta are enabled), so the hook can take a portion of swap amounts as fees.
  • Liquidity add and remove callbacks are present in the dispatch table but appear to be non-trivial only as pass-through or revert paths; no meaningful liquidity accounting was identified in the decoded storage.
Swap behaviour
On each swap beforeSwap and afterSwap run and update buy and sell counters and accumulated fees; the hook takes a fee via return deltas, so the trader receives less than the pool amount by the feeBps percentage. Whether buys and sells are charged differently could not be determined from the decoded bytecode.
Liquidity behaviour
Liquidity add and remove callbacks are dispatched but no state changes to liquidity accounting were clearly decoded; they appear to pass through without custom logic.
Fee behaviour
A fee in basis points (feeBps) is taken on swaps via return deltas and accumulated in pendingFees and totalFeesPaid, with the proceeds directed to feeRecipient. The exact fee rate and split between buys and sells could not be confirmed from the bytecode.
Owner & admin controls
A launcher address is the only privileged caller identified (via NotLauncher). No explicit pause, upgrade or parameter-change function was identified; feeBps and feeRecipient appear to be set at initialization, but whether they can be changed later could not be confirmed.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize gates pool creation to the launcher; beforeSwap and afterSwap track counters, fees and return deltas for fee collection; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take currency from swaps; liquidity callbacks are present but not clearly customized.

Security & trust assessment

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

Who controls it: The launcher and the fee recipient can influence fees and pool access; if feeBps is mutable a privileged key could raise the fee rate on existing pools.

Risk to user funds: The hook can take currency from swaps via return deltas and send accumulated fees to feeRecipient, so user swap proceeds are directly exposed to the fee rate; it does not appear to hold a general custody balance beyond pending fees.

Security findings

  • [medium] Hook takes fees via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can skim a share of every swap into feeRecipient, reducing trader output.
  • [low] Launcher gates pool initialization: beforeInitialize reverts with NotLauncher for non-launcher callers, so the launcher address controls which pools can use this hook.
  • [medium] Unverified source: Without verified source, the exact fee bounds, whether feeBps or feeRecipient can be changed later, and any upgrade path cannot be confirmed from the bytecode.
  • [info] Unbounded fee parameter possible: The presence of a feeBps value suggests fee rate is set by configuration; without bounds checks visible, a high rate would cost traders heavily.

Contract details

Verified source
No
Bytecode size
9,027 bytes
Upgradeable proxy
No
Detected patterns
erc20, fee-sharing, moves-currency, return-delta

Pools using Launchpad hook