Launchpad hook on Monad

Uniswap v4 Hook Contract 0x59802a0848f3e92cb1438e8326d1922119bc20cc on Monad · Launchpad

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

What it does

This launchpad hook takes a cut of trades into a sweep balance that the owner can redirect and charges a fee the owner can adjust, so buyers and sellers both pay a bit more than a plain pool, with the exact direction per trade not confirmed from the bytecode.

How it works step by step

  • Hook is a bonding-curve style launch hook for a token pair with MON, with a launch tick and a floor, and a set of price bands indexed by bandCount.
  • Seeding (seed) is payable and sets the seeded flag once, after which the pool is initialized with liquidity through the pool manager unlock flow.
  • beforeSwap and afterSwap track the current tick and band state in storage and apply a trading fee that the owner can set via setTradingFee, capped by MAX_TRADING_FEE_BPS.
  • afterSwap uses return deltas to take a share of swap output for a sweep mechanism, accumulating sweepable amounts and paying them to sweepRecipient through sweep when the sweep interval and threshold are reached.
  • Uses ERC6909 claims and the pool manager take, settle, mint and burn calls to hold and account for the swap-derived amounts inside the PoolManager.
Swap behaviour
Swaps run through beforeSwap and afterSwap with return deltas enabled on both sides, so the hook can adjust the swap amounts and skim part of the flow into a sweepable balance; the exact split per direction cannot be confirmed from bytecode alone.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
The hook applies a trading fee set by the owner through setTradingFee (bounded by MAX_TRADING_FEE_BPS) on top of a fixed LP_FEE, with a further sweep share of swap flow (SWEEP_BPS) redirected to sweepRecipient.
Owner & admin controls
Owner (Ownable with two-step transfer and renounce) can call setTradingFee, setSweepRecipient, and transferOwnership, which changes the fee and where swept funds are sent; sweep is callable by anyone to move accrued sweepable funds.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets up the pool's launch parameters at initialization; beforeSwap gates and prices swaps and reads band state; afterSwap updates band state and accrues the sweep amount; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a portion of swap amounts.

Security & trust assessment

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

Who controls it: The owner can raise the trading fee within its cap, redirect all future sweep proceeds to a new recipient, and transfer or renounce ownership, so a compromised owner key could extract value from future swaps.

Risk to user funds: The hook holds ERC6909 claims and takes a portion of swap amounts via return deltas, and accrued sweepable funds sit in the pool manager until swept, so user swap flow is partially captured by the hook.

Security findings

  • [medium] Owner-set trading fee: setTradingFee(uint16) lets the owner change the trading fee up to MAX_TRADING_FEE_BPS, so trades can be repriced after users commit.
  • [medium] Redirectable sweep recipient: setSweepRecipient(address) lets the owner change the address that receives swept swap proceeds.
  • [medium] Return-delta fund capture: beforeSwapReturnDelta and afterSwapReturnDelta with moves-currency and take/settle calls let the hook take a share of user swap flows into hook-held or claim balances.
  • [low] Permanent sweep state dependence: sweep is permissionless but depends on sweepInterval and sweepThreshold read from storage, so timing of sweeps can be influenced by the owner-set parameters.

Contract details

Verified source
No
Bytecode size
15,559 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, launchpad, moves-currency, ownable, return-delta, self-unlock

Pools using Launchpad hook