Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0x2eef0e2a9a652d755accad95a24541a98b5ca000 on Ethereum · Launchpad

Volume (24h)
$1.10M
Value locked (TVL)
$103.45K
All-time volume
$1.10M
Pools using this hook
1
Swaps (24h)
1,463 (568 traders)
Total swaps
1,463

What it does

This hook validates pool creation for a token launch flow and does not change swap prices or fees for traders or liquidity providers.

How it works step by step

  • Acts as a Uniswap v4 hook that runs only beforeInitialize, gating pool creation rather than swaps or liquidity
  • Serves as a factory-style launcher: initializeDistribution and create deploy or register initializers with a salt and a factory address
  • Tracks registered initializers and registered pool ids in storage, rejecting duplicate initializers (InitializerAlreadyCreated) and unregistered ones (InitializerNotRegistered)
  • Contains migration logic (migrate and tryMigrate) that moves position state into a v4 pool via the position manager, with checks such as MigrationNotYetAllowed and ZeroPositionWeight
  • Uses a continuous-clearing style bracket and allocation model (InvalidAllocationWeights, InvalidBracketCount, PriceTooHigh, PriceIsZero) that suggests a token distribution auction, and includes fund sweeping and recipient validation
Swap behaviour
No swap callbacks.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
The decoded bytecode shows an authorized() getter and a fundsRecipient() getter, and a sweepCurrency function, suggesting a privileged address controls fund recipients and sweeping, but no pause or upgrade mechanism was identified from the selectors alone.

Enabled Uniswap v4 callbacks

beforeInitialize

beforeInitialize is enabled and is used to validate pool initialization against the registered initializer and pool id state before a pool can be created.

Security & trust assessment

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

Who controls it: An authorized address can likely set the funds recipient and sweep currency, and may control which initializers and migrations are permitted, but the exact powers could not be verified.

Risk to user funds: The hook does not hold pool funds through return deltas, but the sweep and migration functions can move tokens or position liquidity held by the contract, so funds exposure depends on the authorized role and the migration logic.

Security findings

  • [medium] Privileged fund sweeping: Selectors for sweepCurrency, fundsRecipient and authorized indicate an authorized role can direct residual currency to a configured recipient; the exact access control could not be confirmed without source.
  • [medium] Migration path moves positions: The migrate and tryMigrate functions transfer position state into a v4 pool through the position manager, so a bug or misconfigured parameter here could affect liquidity that is migrated.
  • [info] Initialization gating only: The only enabled hook permission is beforeInitialize, so the hook does not intercept swaps or liquidity changes and does not take fees from trades.
  • [info] No verified source: Analysis relies on decoded bytecode and inferred selectors; function names other than those decoded by evmole are not confirmed.

Contract details

Verified source
No
Bytecode size
21,241 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, fee-sharing

Pools using Launchpad hook