Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0x92568ec3f25956f6788aaa8938c93bafb183bfff on Ethereum · Launchpad

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

What it does

This launch hook charges a dynamic fee that starts high and decays toward a base rate, and it can take currency from swaps and liquidity actions, but because it is an upgradeable, pausable proxy with no verified source, its exact fee direction and who receives the fees cannot be confirmed.

How it works step by step

  • Proxy whose implementation is initialized once via initialize(), storing a token, a router, a manager, a ledger, a treasury and a liquidity keeper address.
  • Tracks a price observation ring buffer (observations, observationIndex, observationCount, pokeObservation) and a lastTick/lastPriceUpdate used for pricing.
  • Applies a launch fee that starts at LAUNCH_FEE_START_BPS and decays toward BASE_FEE_BPS, exposed through currentFeeBps().
  • Uses before-swap and after-swap return deltas, so the hook can take or give currency during swaps and alter the amounts a trader receives.
  • Uses after-liquidity return deltas and calls take(address,address,uint256) on the manager, so it can move currency when liquidity is added or removed.
  • Has a pausable mechanism (paused()) and a governance address, and tracks rounds and accruals.
Swap behaviour
beforeSwap and afterSwap are active and beforeSwap/afterSwap return deltas are enabled, so the hook can adjust swap amounts and fees; the exact direction of which trades pay more cannot be determined from bytecode alone.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are active, with after-liquidity return deltas enabled, so the hook can settle currency with the pool manager on liquidity changes.
Fee behaviour
A dynamic launch fee is read via currentFeeBps(), starting at LAUNCH_FEE_START_BPS and decaying toward BASE_FEE_BPS over time; where the fee is routed (treasury or liquidity keeper) cannot be fully confirmed from bytecode.
Owner & admin controls
A governance address, a pause check (paused()), and a proxy upgrade path are present; the upgrade authority and whether the owner can change fees or treasury could not be confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, afterDonate, beforeSwapReturnDelta, afterSwapReturnDelta, afterAddLiquidityReturnDelta, afterRemoveLiquidityReturnDelta

beforeInitialize and afterInitialize record pool setup state; beforeAddLiquidity/afterAddLiquidity and beforeRemoveLiquidity/afterRemoveLiquidity track and settle liquidity with return deltas; beforeSwap/afterSwap adjust fees and amounts with return deltas; beforeDonate/afterDonate are present; the swap and liquidity return-delta flags allow the hook to take currency from the pool.

Security & trust assessment

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

Who controls it: A privileged governance or proxy-admin key could upgrade the implementation, pause activity, and possibly change the treasury or fee parameters, affecting every pool that uses this hook.

Risk to user funds: The hook can hold, take and move currency through return deltas and take() calls on swaps and liquidity events, so user and pool funds are exposed to whatever the implementation does, including after an upgrade.

Security findings

  • [high] Upgradeable proxy: The hook delegates all calls to implementation 0x094957f0...; the implementation can be swapped by whoever controls the proxy admin, changing all hook logic for existing pools.
  • [high] Return deltas move currency: beforeSwap/afterSwap and afterAddLiquidity/afterRemoveLiquidity return deltas are enabled and take(address,address,uint256) is called, so the hook can extract or redirect user and pool funds.
  • [medium] Pausable swaps and liquidity: A paused() check exists, so a privileged role may be able to block swaps or liquidity actions on pools using this hook.
  • [medium] Governance-controlled parameters: A governance address and treasury/liquidity keeper addresses exist; governance may be able to change fee routing or redirect fees, which could not be verified.
  • [info] Unverified source: No verified source is available, so behaviour is inferred from decoded selectors and storage only.

Contract details

Verified source
No
Bytecode size
971 bytes
Upgradeable proxy
Yes
Detected patterns
launchpad, moves-currency, pausable, return-delta, upgradeable

Pools using Launchpad hook