Likely launchpad hook on Ink

Uniswap v4 Hook Contract 0xf287f43a772a622676d0212d2ce8f36d626020cc on Ink · 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 hook appears to be a token launch contract that skims a configurable tithe from swaps through return deltas, so swappers likely pay a bit more on each trade while the accrued fees are withdrawn by the launcher or recipients.

This read was written for the hook 0x5ca1…20cc on Robinhood Chain and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Acts as a launcher-controlled token launch hook that is initialized once in beforeInitialize and gated by a launcher address (NotLauncher error selector present).
  • Exposes token metadata views (name, symbol, decimals, totalSupply, metadata, tokenURI, socials such as website, twitter, discord, telegram, farcaster) consistent with a token launch wrapper.
  • Maintains a titheBps fee parameter bounded by TITHE_MIN_BPS and TITHE_MAX_BPS and tracks fees accrued and pending via storage slots.
  • Uses a multi-recipient withdrawal scheme (recipient(uint8), bearerOf(uint8), vaultBalances(uint256), withdraw(uint8,uint256), withdrawAll) that moves currency out of the hook via take().
  • Implements ERC20-style balanceOf, transfer, transferFrom, approve and allowance functions, suggesting the hook itself issues a transferable token or share representation.
  • Uses a reentrancy guard (ReentrancyGuardReentrantCall selector present) around state-changing paths.
Swap behaviour
beforeSwap and afterSwap are both enabled with return-delta permissions, so the hook can take a portion of swap amounts (a tithe, bounded by titheBps) and record it as accrued fees; exact trade-by-trade direction and the precise fee formula cannot be confirmed from bytecode alone.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are present in the dispatch table but the hook permissions do not enable liquidity callbacks, so these are likely not invoked by the pool manager for this hook.
Fee behaviour
Uses a hook-level tithe in basis points (titheBps, feeBps) that is taken through return deltas on swaps and accrued into pendingFees and totalFeesAccrued; the pool's static fee is not confirmed to be the only fee source.
Owner & admin controls
A launcher address (gated by NotLauncher) and a creator are referenced; withdraw and withdrawAll move accrued balances; the exact owner or pause controls are not verifiable without source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets up the initialized state and launcher-gated parameters; beforeSwap and afterSwap apply the tithe via return deltas and update fee accounting; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take currency from the swap.

Security & trust assessment

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

Who controls it: A launcher or creator key could adjust the tithe within bounds and control withdrawal flows that release accrued currency to recipients.

Risk to user funds: The hook takes currency from swaps via return deltas and holds accrued fees and vault balances, so user trade value is partly captured by the hook and the balances are withdrawable through privileged paths.

Security findings

  • [medium] Return-delta fee capture: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can take a share of every swap through return deltas, increasing cost for traders.
  • [high] Privileged withdrawal paths: withdraw(uint8,uint256) and withdrawAll() move accrued currency via take(); access control on these paths could not be fully confirmed from bytecode, so balances may be extractable by a privileged party.
  • [medium] Launcher-controlled parameters: Initialization and fee parameters appear gated by a launcher address, so the launcher can influence titheBps within the min and max bounds.
  • [info] Reentrancy guard present: A ReentrancyGuard error selector is present, indicating state-changing withdrawal and swap paths are guarded against reentrancy.

Contract details

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

Pools using Likely launchpad hook