WontonHook on Base

Uniswap v4 Hook Contract 0x46b8c74d89a647063311ad08c7456732d5e94888 on Base · Launchpad · Verified contract

Volume (24h)
$1.80K
Value locked (TVL)
$2.92K
All-time volume
$648.13K
Pools using this hook
1
Swaps (24h)
7 (6 traders)
Total swaps
3,566

What it does

A launch-gating hook that blocks third-party liquidity additions and confiscates buy-side swaps until the launch authority enables trading.

How it works step by step

  • Restricts addLiquidity to the immutable manager address via a beforeAddLiquidity sender check
  • Blocks buy-side swaps while tradingEnabled is false
  • Punishes blocked exact-input buys by taking the input amount through a before-swap return delta and emitting PreLaunchBuyPunished
  • Rejects exact-output buys made before launch with UnsupportedPreLaunchOrder
  • Lets the launchAuthority flip tradingEnabled on or off via setTradingEnabled
Swap behaviour
While trading is disabled, exact-input buy swaps (oneForZero direction) are punished: the hook takes the input amount via a return delta and the buyer receives no output; exact-output buys revert with UnsupportedPreLaunchOrder; sells and all swaps after trading is enabled pass through unchanged.
Liquidity behaviour
beforeAddLiquidity reverts unless sender equals the immutable manager address, so only the LiquidityManager can add liquidity; no remove-liquidity or after-liquidity callbacks.
Fee behaviour
Uses the pool's static fee; the hook does not set or take a dynamic fee, but pre-launch blocked buys have their input taken by the hook via a return delta.
Owner & admin controls
launchAuthority (immutable, set at deployment) can call setTradingEnabled to toggle whether buy-side swaps are allowed; manager and launchAuthority are immutable so no upgrade or parameter change path exists; no pause or owner transfer functions found.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeAddLiquidity restricts liquidity additions to the manager address; beforeSwap blocks or punishes pre-launch buy swaps while trading is disabled; beforeSwapReturnDelta lets the hook claim the input amount of blocked buys so the swap pays out zero output.

Security & trust assessment

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

Who controls it: launchAuthority can flip tradingEnabled at will, including re-disabling trading after it was enabled, which blocks all buy swaps; the manager is the sole liquidity provider path, so it controls pool liquidity composition.

Risk to user funds: The hook can take the input token of buy swaps made while trading is disabled and keep it without returning output, so buyers lose funds in that window; it cannot move funds from liquidity positions directly, and the hook's accumulated input balances have no withdrawal path in the contract.

Security findings

  • [high] Pre-launch buys confiscate input: While tradingEnabled is false, any exact-input buy has its input amount taken by the hook via the return delta and emits PreLaunchBuyPunished, so buyers lose the input with no output.
  • [medium] Launch authority can halt buys: launchAuthority can call setTradingEnabled(false) at any time, reverting trading back to the blocked state for buy-side swaps.
  • [info] Liquidity restricted to manager: Only the manager address can add liquidity, so third-party LPs cannot enter the pool and liquidity depends entirely on that single contract.
  • [low] Accumulated input may be stuck: Hook logic is immutable with no proxy or upgrade path, and the hook has no admin function to withdraw tokens it may accumulate from punished buys.

Contract details

Verified source
Yes (WontonHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
2,670 bytes
Upgradeable proxy
No
Detected patterns
launchpad, return-delta

Pools using WontonHook