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
- ETH / BALANCE (0.30% fee) — 24h volume $1.10M, TVL $103.45K, 1,463 swaps today