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
- INTEL / WETH (0.00% fee) — 24h volume $234, TVL $0, 2 swaps today
- OHSB / WETH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- OHSA / WETH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today