Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0x057574b52d493f39e66d42734a1bf6a1fbb278cc on Ethereum · Launchpad

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

What it does

This hook runs a token launch where traders and LPs interact with a pool whose swaps and fees are adjusted by the contract during the sale, but the exact direction of fee or price changes cannot be confirmed from the bytecode alone.

How it works step by step

  • Acts as a launch hook for a token sale: deposits are accepted through depositFor and deposit while the sale window is open, tracked per account in storage
  • Tracks deposited balances by account and by index, with a position mapping per account and a pending counter
  • Uses beforeSwap and afterSwap with return-delta permissions, so the hook can adjust swap amounts and take a share of swap flows
  • Uses beforeInitialize and afterInitialize to set up pool state at pool creation, and beforeAddLiquidity to gate liquidity additions
  • Exposes ballot and book views and a remit function that appears to return funds or distribute proceeds after the sale
  • Tracks an interest rate between MIN_RATE and MAX_RATE and accrues interest that can be claimed per account via claimInterest
Swap behaviour
beforeSwap and afterSwap are enabled with return-delta permissions, so the hook can alter the swap amounts it returns; the exact fee or price effect per trade direction cannot be determined from the decoded bytecode.
Liquidity behaviour
beforeAddLiquidity is enabled and can block or gate liquidity additions; beforeRemoveLiquidity and afterRemoveLiquidity selectors exist but their hook permissions are not enabled on this address.
Fee behaviour
The hook calls updateDynamicLPFee on the pool manager, so it sets a dynamic LP fee; the exact fee schedule and which trades pay more or less cannot be determined from the decoded bytecode.
Owner & admin controls
An OWNER() getter, a treasury() getter, and a poke() function exist; owner-only gating and parameter-change paths cannot be confirmed without source. remit() and claimInterest() move funds to recipients.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize and afterInitialize set up pool state at creation; beforeAddLiquidity gates liquidity additions; beforeSwap and afterSwap run the sale-related swap logic; beforeSwapReturnDelta and afterSwapReturnDelta let the hook change the swap amounts it settles.

Security & trust assessment

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

Who controls it: An owner or treasury key may control remit, poke and parameter-related paths; without source the exact powers are unverified.

Risk to user funds: The hook holds deposited tokens and can take tokens through swap return deltas, so user deposits and swap flows depend on the contract's sale and remit logic.

Security findings

  • [high] Return-delta permissions: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can take or reallocate tokens from swaps through return deltas.
  • [high] Hook holds deposited funds: deposit, depositFor and withdraw functions indicate the contract custodies user deposits and pays out via remit and claimInterest.
  • [medium] Dynamic fee updates: The hook calls updateDynamicLPFee, so the fee applied to swaps is set by contract logic that may be adjustable by an owner or the sale state.
  • [medium] Owner and treasury privileges: OWNER and treasury getters exist alongside remit and poke, suggesting privileged roles that could affect fund flows; the exact authority cannot be confirmed from bytecode.

Contract details

Verified source
No
Bytecode size
12,138 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, launchpad, return-delta

Pools using Launchpad hook