Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0xa8ba026aeee1a29eb65cba4acbd8f8ef2b00e800 on Ethereum · Launchpad

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

What it does

This launchpad hook bootstraps a single token pool and gates initialization and liquidity additions, routing accumulated fees between a treasury share and the rest through owner-set settings; swap pricing is not altered by the hook, so swaps pay the pool's standard fee.

How it works step by step

  • Acts as a token launchpad hook that gates pool initialization and liquidity addition for a single pool configuration stored in its storage slots.
  • Exposes launch(int24,uint160,uint256) which is payable and writes pool key fields and a launched flag, indicating the hook bootstraps a new pool and sale.
  • Uses unlockCallback and PoolManager-style calls (unlock, modifyLiquidity, take, settle, sync) to move currency in and out of the pool during launch and flush operations.
  • Tracks pending fees, lastFlushAt and a flusher address, and provides flush(uint256) to periodically settle accumulated value to the pool or treasury.
  • Has a notifyReward(uint256) selector and mintFor/transfer selectors, consistent with distributing rewards or tokens to participants.
  • Maintains an owner plus a treasury address with setTreasury and setFlusher setters, and a TREASURY_BPS constant splitting proceeds.
Swap behaviour
No swap callbacks.
Liquidity behaviour
beforeAddLiquidity is enabled and is the only liquidity callback permitted; it is a view-style check that can gate adding liquidity to the launched pool. Remove-liquidity and afterAddLiquidity callbacks are present as selectors but not enabled in the hook permissions.
Fee behaviour
Uses LP_FEE and BPS constants with TREASURY_BPS; pendingFees accumulates value that flush(uint256) distributes, so fees are routed to the treasury share and the remainder rather than being a per-swap dynamic fee.
Owner & admin controls
Owner (owner()) can call setTreasury(address) and setFlusher(address), changing where proceeds go and which address may trigger flushes. No pause or upgrade mechanism was identified from the selectors.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity

beforeInitialize is used to validate or restrict pool initialization for the launched token pair. beforeAddLiquidity is used to gate liquidity provision into the pool.

Security & trust assessment

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

Who controls it: A single owner key controls the treasury address and can designate the flusher, so a compromised owner could redirect fee proceeds.

Risk to user funds: The hook can hold pending fees and move currency through the pool manager during launch and flush, so user and pool funds pass through its accounting; exact accounting bounds could not be confirmed without source.

Security findings

  • [medium] Owner can redirect proceeds: setTreasury(address) lets the owner change the treasury recipient at any time, so future accumulated fees could be redirected by a privileged key.
  • [low] Flusher role controls settlement timing: setFlusher(address) and flush(uint256) let a designated address trigger settlement of pending fees; the timing and amounts depend on that role.
  • [medium] Currency movement via unlock callback: The hook calls unlock, take, settle and sync and holds pending fee balances, so it can move pool currency and hold funds between flushes.
  • [info] Ownable without visible timelock: Owner selector and NotOwner error indicate a single-owner access pattern with no timelock or multisig evidence in the bytecode.

Contract details

Verified source
No
Bytecode size
14,413 bytes
Upgradeable proxy
No
Detected patterns
erc20, launchpad, moves-currency, ownable, rewards, self-unlock

Pools using Launchpad hook