Launchpad hook on Monad

Uniswap v4 Hook Contract 0x0c4e3c54f0784212d4526fefa15da961b8035088 on Monad · Launchpad

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

What it does

A launchpad-style hook that charges a time-decaying snipe fee on early swaps of newly created pools and routes part of it to a protocol fee recipient.

This read was written for the hook 0x0711…9088 on Monad and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Records pool creator, initializer and creation time for each pool in afterInitialize.
  • Applies a snipe-protection surcharge to swaps during an initial window after pool creation.
  • Splits the total fee between an LP fee and a platform fee using BPS constants.
  • Takes the surcharge via beforeSwapReturnDelta and settles it through the pool manager with a self-unlock callback.
  • Tracks per-pool, per-address liquidity balances in storage for liquidity hooks.
Swap behaviour
beforeSwap computes a snipe-decayed fee, takes a share as a return delta, and forwards it to the protocol fee recipient while the rest goes to the pool.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are present as view-style dispatch entries and the hook tracks per-pool, per-address balances in storage (mapping keyed by pool and address); afterRemoveLiquidity is also dispatched. Exact effect on liquidity cannot be confirmed without source.
Fee behaviour
Fees are computed via currentFeeBps and constants LP_FEE_BPS, PLATFORM_FEE_BPS and TOTAL_FEE_BPS; beforeSwap applies a time-decaying snipe surcharge (SNIPE_START_BPS over SNIPE_DURATION) that is taken as a return delta and forwarded to protocolFeeRecipient, with the remainder paid to the pool. Exact split logic cannot be confirmed without source.
Owner & admin controls
Storage slot 0 keyed by pool id is written in afterInitialize and setPoolCreator; governance() and protocolFeeRecipient() are exposed as views, and a selector 0xe143f3d7 (setPoolCreator) and 0xe11c3b2d/0xef4c9e7a are nonpayable and gated (NotAuthorized error is present), suggesting governance-controlled configuration. No pause or upgrade function is identified from the decoded selectors.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, beforeSwapReturnDelta

afterInitialize records pool creator, initializer and creation time for the pool; beforeSwap applies the snipe-protection fee and return delta; beforeSwapReturnDelta lets the hook take a share of the swap amount to route fees; the hook also calls unlock/take on the pool manager via a self-unlock callback (unlockCallback) to move currency.

Security & trust assessment

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

Who controls it: A governance address controls pool-creator assignment and related configuration; a compromised governance key could redirect the protocol fee recipient or alter fee parameters if those are settable, though no such setter is confirmed from selectors alone.

Risk to user funds: The hook can take a portion of swap input as a return delta and transfer it to the protocol fee recipient, and it can move currency through the pool manager during its unlock callback; user funds are therefore exposed to the fee logic, but no direct withdrawal of pool reserves by an admin is confirmed.

Security findings

  • [medium] Hook moves currency during swaps: The hook can take currency via return deltas and move it through the pool manager using a self-unlock pattern, so it holds a path to custody of swap-derived amounts.
  • [low] Governance-gated configuration: Dispatched selectors include setPoolCreator and governance-gated entries, so privileged parameters appear to exist, though exact mutable fee parameters could not be confirmed.
  • [info] Unverified source limits analysis: Fee and snipe parameters are decoded as constants or views; the source is unverified, so the precise fee split and any hidden admin levers cannot be fully confirmed.

Contract details

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

Pools using Launchpad hook