Likely launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0x846c644821b9216ef2cd395dec6271cda1c420cc on Robinhood Chain · Launchpad

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

What it does

This launchpad hook takes a fee on swaps through its return-delta callbacks and divides the accrued amount among platform, community and creator recipients, so swappers generally pay a bit more than they would in a plain pool; the exact split between buys and sells is not confirmed from the bytecode.

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

How it works step by step

  • Token launch hook: the contract is itself an ERC20 (approve, transfer, transferFrom, totalSupply, balanceOf) with metadata getters (name, symbol, description, image, socials) and a launcher-gated initialization path (beforeInitialize sets an initialized flag, NotLauncher error present).
  • Collects a fee in basis points (feeBps, creatorCreditsBps) on swaps, accrued as pendingFees and totalFeesAccrued, using beforeSwapReturnDelta and afterSwapReturnDelta to take a share of the swap amount.
  • Splits accrued fees across recipients: platformRecipient, communityTreasury, creator and profile-based recipients, tracked in vaultBalances and totalWithdrawn.
  • Provides withdraw(uint8,uint256) and withdrawAll() so accounts assigned as recipients can claim their share of accrued fees.
  • Implements liquidity hooks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) that are present in the dispatch table; their logic is not separately visible from selectors alone.
  • Uses a reentrancy guard and uses the pool manager's take function to move currency out of the pool when fees are withdrawn.
Swap behaviour
beforeSwap and afterSwap are both enabled with return deltas, so the hook can take a portion of each swap's input or output as a fee and route it into its own accounting; exact split between buys and sells cannot be determined from decoded bytecode alone.
Liquidity behaviour
Liquidity add and remove callbacks are dispatched, but the bytecode does not reveal distinct behaviour beyond standard hook forwarding; treat as liquidity-management hooks with unverified logic.
Fee behaviour
A hook-level fee in basis points (feeBps) is taken on swaps via return deltas and accrued in pendingFees and totalFeesAccrued, then distributed to recipients including a creator share (creatorCreditsBps) and platform and community recipients.
Owner & admin controls
Launcher-gated initialization (NotLauncher) and a creator and recipient structure with withdraw paths; no explicit owner pause or parameter-setter selector was observed, so configurable parameters appear fixed at deployment, but this is not confirmed.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets initialization state; beforeSwap and afterSwap take fees and update fee accounting via return deltas; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take currency from swaps; liquidity callbacks are enabled in dispatch but their use cannot be confirmed from selectors alone.

Security & trust assessment

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

Who controls it: The launcher and any privileged recipient or treasury address can influence where accrued fees go; the bytecode does not show an obvious unilateral pause or fee-change function, but this is not confirmed.

Risk to user funds: The hook holds and moves fee balances on swaps and can transfer currency from the pool to recipients via take, so user swap proceeds are affected by the fee it skims.

Security findings

  • [medium] Hook takes fees via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can take a share of every swap as a fee, which directly affects trader execution.
  • [medium] Currency movement through take: The contract calls take(address,address,uint256) on the pool manager, so it can remove tokens from the pool to pay recipients.
  • [info] Recipient withdrawals gated by role: withdraw and withdrawAll pay accumulated fees to designated recipients (platform, community, creator), with reentrancy protection present.
  • [low] Launcher-gated initialization: beforeInitialize is restricted to a launcher address (NotLauncher error), so pool setup depends on that address being trustworthy.
  • [info] Source not verified: Without verified source, the exact fee formulas, recipient assignment and liquidity logic cannot be confirmed.

Contract details

Verified source
No
Bytecode size
8,826 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, return-delta

Pools using Likely launchpad hook