VirtualLBPStrategyBasic on Ethereum

Uniswap v4 Hook Contract 0xd53006d1e3110fd319a79aeec4c527a0d265e080 on Ethereum · Launchpad · Verified contract

Volume (24h)
$2.39M
Value locked (TVL)
$14.95M
All-time volume
$323.10M
Pools using this hook
1
Swaps (24h)
1,792 (202 traders)
Total swaps
193,390

What it does

A launchpad strategy hook that runs a token auction, then migrates the raised funds and reserved tokens into a Uniswap v4 pool as a full-range liquidity position, with swaps gated until governance approves.

How it works step by step

  • Receives the total token supply via onTokensReceived() and deploys a continuous clearing auction through the auction factory with a share of the supply.
  • Keeps the reserve token supply aside for liquidity seeding after the auction ends.
  • migrate() after migrationBlock checkpoints the auction, reads currency raised and clearing price, and initializes a v4 pool using this contract as the hook.
  • Seeds a full-range liquidity position and optionally a one-sided position through the position manager, owned by positionRecipient.
  • beforeSwap gates trading on governance approval of migration; beforeInitialize ensures only the hook itself can initialize the pool.
  • After sweepBlock the operator can sweep any remaining token or currency balances.
Swap behaviour
beforeSwap reverts unless governance has called approveMigration(); once approved it returns a zero delta and no fee override, so swaps execute against the pool at its static fee.
Liquidity behaviour
No liquidity callbacks. Liquidity is seeded once at migration by the strategy via the position manager into a full-range position (plus optional one-sided position) owned by positionRecipient.
Fee behaviour
Uses the pool's static LP fee (poolLPFee, immutable); the hook returns a zero delta and zero fee override on swaps, and takes no fees.
Owner & admin controls
Governance address (immutable, set at construction) can call approveMigration() once to allow swaps and migration; no pause, no upgrade path, no parameter changes; operator (immutable) can sweep leftover token and currency balances after sweepBlock.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap

beforeInitialize restricts pool initialization to the hook itself (only migrate() can initialize the pool). beforeSwap reverts with MigrationNotApproved until governance calls approveMigration(), then returns a zero delta.

Security & trust assessment

Risk level: medium (verified source, high confidence).

Who controls it: Governance can only unlock trading once and cannot move funds or change parameters. Operator can sweep any token or currency balance held by the contract after sweepBlock, which is intended to recover residual balances but applies to all held assets. Position recipient controls the LP NFT after migration.

Risk to user funds: The hook itself does not take swap fees or deltas. It holds the distributed token and raised currency during the auction and until migrate(), and the operator can sweep leftover balances after sweepBlock. Swaps can be blocked indefinitely if governance never approves migration.

Security findings

  • [medium] Governance gate blocks all swaps: Until approveMigration() is called by governance, every swap on the pool reverts, so trading is fully blocked by a single privileged key.
  • [low] Operator sweep of contract balances: The operator can transfer the full token and currency balance of the contract to itself after sweepBlock, which is only expected to hold residual or leftover amounts.
  • [info] Contract custodies auction funds before migration: Auction proceeds and migration funds are held by the contract until migrate() runs, so the contract temporarily custodies both the distributed token and raised currency.
  • [info] Immutable configuration: The hook is deployed with fixed immutable parameters for fee, tick spacing and recipients; no admin path exists to alter them.

Contract details

Verified source
Yes (VirtualLBPStrategyBasic)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
17,344 bytes
Upgradeable proxy
No
Detected patterns
auction, erc20

Pools using VirtualLBPStrategyBasic