Launchpad hook on Ethereum

Uniswap v4 Hook Contract 0x0bcd3394dffc047d146e76bcc461d8beac9fc0cc on Ethereum · Launchpad

Volume (24h)
$234
Value locked (TVL)
$0
All-time volume
$234
Pools using this hook
3
Swaps (24h)
2 (1 traders)
Total swaps
2

What it does

A launchpad-style hook that applies a dynamic per-pool fee with snipe and MEV protections, and splits collected trading value between platform, creator and buyback recipients.

How it works step by step

  • Sets a dynamic swap fee per pool bounded by MIN_FEE_BPS and MAX_FEE_BPS, with a snipe-protection window and MEV cap.
  • Takes a share of swap value via return deltas in beforeSwap and afterSwap.
  • Accrues platform, creator and buyback balances per pool in storage mappings.
  • Pays out accrued balances through pushPlatform, pushDividends and payCreator.
  • Uses the pool manager unlock/take pattern to settle currency owed to the hook.
Swap behaviour
beforeSwap adjusts the fee for the pool and afterSwap accrues the hook's share of swap value; return-delta permissions let the hook take a portion of input and output currency during the swap.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are present as selectors and are dispatched, but their bodies could not be fully characterised; the hook appears to track per-pool state and may restrict or account for liquidity changes.
Fee behaviour
feeBpsNow(address,bool) returns a dynamic fee per pool with MIN_FEE_BPS and MAX_FEE_BPS bounds, and a snipe-protection window (MAX_SNIPE_BLOCKS, MAX_SNIPE_BPS) and MEV cap (MEV_CAP_BPS) appear to shape it. Accrued fees are split among platform, creator and buyback pot balances (platformOwed, creatorOwed, buybackPot). The exact formula could not be determined from bytecode alone.
Owner & admin controls
A deployer-gated setFactory(address) can be called once to bind a factory; pushPlatform, pushDividends, payCreator and a buyback/distribution path move accrued balances. Access to these functions is tied to stored roles (deployer, factory). Parameters such as fee bounds (MIN_FEE_BPS, MAX_FEE_BPS, MEV_CAP_BPS, MAX_SNIPE_BPS, MAX_POT_SHARE_BPS, CREATOR_SPLIT_BPS, BUYBACK_SQRT_BPS) appear to be constants; no setter for them was identified. No pause or upgrade function was identified.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: adjusts fee and/or swap accounting before the swap executes. afterSwap: records fee accrual and distributes shares to platform, creator and buyback balances after the swap. beforeSwapReturnDelta: lets the hook take or give a delta on the swap input. afterSwapReturnDelta: lets the hook take or give a delta on the swap output, used to skim a share of trading value.

Security & trust assessment

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

Who controls it: A privileged deployer or factory key can bind the factory, trigger pushes of platform and dividend balances, and invoke payCreator; if the deployer controls where platform or creator payouts are sent, it can redirect accrued fee revenue. No timelock was identified.

Risk to user funds: The hook holds and moves a share of swap value through return deltas and accrues balances in mapping slots for platform, creator and buyback recipients. Users trading through the pool pay the hook's fee/skim; pool liquidity itself is not obviously seized, but the hook can take a portion of each swap.

Security findings

  • [medium] Hook takes currency via return deltas: Return-delta permissions let the hook take a portion of swap amounts directly, and the bytecode contains moves-currency and self-unlock behaviour (unlock/take selectors are referenced), so the hook actively moves pool currency during swaps.
  • [low] Privileged factory binding: setFactory is guarded by a deployer check and a stored factory slot, and a separate NotDeployer error exists; access control appears present but the setter can only be exercised by the deployer.
  • [low] Accrued balances distributed by privileged or public push functions: pushPlatform, pushDividends and payCreator distribute accrued balances; NothingToPush and NoHolders guards exist, which limits but does not eliminate the risk of misdirected payouts if recipient addresses are mutable.
  • [info] Unverified source: No source is available, so the exact fee formula, snipe logic and liquidity restrictions could not be verified; findings are based on selectors and storage layout only.

Contract details

Verified source
No
Bytecode size
15,158 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta, self-unlock

Pools using Launchpad hook