RwagmiHookV2 on Base

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

Volume (24h)
$801
Value locked (TVL)
$48.92K
All-time volume
$12.38M
Pools using this hook
3,754
Swaps (24h)
34 (24 traders)
Total swaps
89,736

What it does

A launch hook for Uniswap v4 pools that enables dynamic fees driven by the pool tick and an optional early-swap MEV payment mechanism that routes some input to the token launcher's locker.

How it works step by step

  • Restricts pool initialization so pools can only be created through the hook by the authorized launcher
  • Optionally sets a dynamic LP fee per swap based on the observed tick using an internal fee state
  • Runs a one-time MEV module check on swaps within two minutes of MEV module initialization
  • Takes a payment in the specified input currency from the pool manager and sends it to the locker when the MEV module requests it
  • Reverts all liquidity and donate callbacks so only swaps are affected
Swap behaviour
On each swap the hook computes a dynamic fee override from the current tick when enabled, then optionally runs the MEV module once and may take a payment of the input currency for the locker via beforeSwap return delta.
Liquidity behaviour
No liquidity callbacks; liquidity add and remove hooks revert with HookNotImplemented.
Fee behaviour
When dynamic fee mode is enabled at pool creation, beforeSwap computes a fee from the observed tick via the RwagmiDynamicFee library and returns it with the override flag; otherwise the pool's static lpFee is used.
Owner & admin controls
No owner or pause functions found; the launcher (immutable) can initialize pools and the MEV module, and the MEV module address is set per pool at launch. Pool parameters are fixed after initialization.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, beforeSwapReturnDelta

beforeInitialize restricts pool initialization so only the hook itself can initialize pools through it. beforeSwap updates the dynamic fee override, runs the optional MEV module once per pool and can take a payment in the specified input currency via return delta. Other callbacks are not enabled.

Security & trust assessment

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

Who controls it: The launcher can initialize pools and MEV modules, and the MEV module contract decides whether a payment is taken and to whom; the hook has no owner or upgrade path.

Risk to user funds: The hook can take the specified input currency from swaps via return delta, sent to the locker, up to the swap input amount, only when the MEV module returns a payment during the early window. It does not hold custody of user funds beyond transient deltas settled through the pool manager.

Security findings

  • [medium] Swap return delta can divert input tokens: beforeSwapReturnDelta lets the MEV module cause the hook to take up to the full specified input amount from swappers and send it to the locker, with bounds checks requiring exact-input swaps and payment below the input amount.
  • [medium] External MEV module controls payments: The MEV module is a separately deployed external contract whose beforeSwap decides payment currency and amount; its logic is not included in this analysis.
  • [info] Time-limited MEV module window: The MEV module is active for only two minutes after initialization and is disabled after its first call, limiting the window for payments.
  • [info] Fee config fixed after initialization: Dynamic fee parameters are set at pool creation through poolData and cannot be changed afterward, as the source shows no setter.

Contract details

Verified source
Yes (RwagmiHookV2)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
11,991 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, launchpad, mev-protection, return-delta

Pools using RwagmiHookV2