MintFastHook on Robinhood Chain

Uniswap v4 Hook Contract 0x84eb4fec37aada0b75defec56117aa70b76e20cc on Robinhood Chain · Fee sharing · Verified contract

Volume (24h)
$0
Value locked (TVL)
$6.41K
All-time volume
$3.19M
Pools using this hook
84
Swaps (24h)
0 (0 traders)
Total swaps
21,291

What it does

Charges a fixed 2% fee in ETH on every swap of a launchpad token pool, in both directions, and accrues it for the launchpad to harvest and split.

How it works step by step

  • Charges a fixed 2% fee in native ETH on every launchpad pool swap, buys and sells alike.
  • Places the fee via beforeSwap when ETH is the specified currency and via afterSwap when ETH is the unspecified currency.
  • Banks each fee as a native-ETH ERC-6909 claim on the PoolManager and adds it to the token's pendingFees balance.
  • Lets only the launchpad call collect(), which burns the claims and sends the ETH to the launchpad for the 50/25/25 split.
  • Restricts beforeInitialize so only the launchpad can initialize pools that use this hook, blocking same-block front-running.
Swap behaviour
On each swap, if ETH is the specified currency (exact-in buys, exact-out sells) beforeSwap returns a positive specified delta equal to 2% of the amount; if ETH is the unspecified currency (exact-in sells, exact-out buys) afterSwap returns a positive unspecified delta equal to 2% of the ETH moved. Non-ETH-pair or zero-fee cases pass through unchanged.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Charges a fixed 2% (FEE_BPS 200 of BPS 10000) on the ETH side of every launchpad swap, in both directions. The pool's own LP fee is 0. Fees are banked as native-ETH ERC-6909 claims on the PoolManager and accrued per token in pendingFees; the launchpad later pulls them via collect() and applies its split. For exact-in buys the fee is 2% of the full input, so a partial fill still pays on the unfilled remainder.
Owner & admin controls
No admin controls found. Constructor-set immutables only (poolManager, launchpad); no owner, pause, upgrade or parameter setter. Only the launchpad can call collect() and initialize pools that use this hook.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: restricts pool initialization to the launchpad contract. beforeSwap: takes the 2% fee as a positive specified delta when ETH is the specified currency. afterSwap: takes the 2% fee as a positive unspecified delta when ETH is the unspecified currency, sized on the ETH actually moved. beforeSwapReturnDelta and afterSwapReturnDelta: allow those callbacks to return the fee deltas that charge the swapper.

Security & trust assessment

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

Who controls it: No privileged owner key exists in the hook. The launchpad is the sole privileged party: it alone can call collect() and initialize pools, and it is immutable. Its own admin and upgrade status is outside this contract and not assessed here.

Risk to user funds: The hook can take up to 2% of ETH value on each swap through return deltas and holds the resulting fees as ERC-6909 claims on the PoolManager until the launchpad calls collect(). It cannot block swaps, change pool liquidity, or withdraw funds to any address other than the launchpad.

Security findings

  • [info] Fixed, non-adjustable fee: The fee is a constant 2% with no setter, so it cannot be raised or lowered after deployment.
  • [info] Fee accrual via ERC-6909 claims: Fees are minted as ERC-6909 claims and backed by the PoolManager balance, and collect() burns them to pay the launchpad. The hook never custodies raw ETH itself.
  • [info] Restricted pool initialization: beforeInitialize only accepts calls from the launchpad, which blocks front-runners from pre-initializing predicted PoolKeys that point at this hook.
  • [low] Fee charged on unfilled input: For exact-input buys the fee is charged on the full input, including any unfilled remainder when the locked range is exhausted. Users may pay more than 2% of the ETH actually swapped in that case.
  • [low] Hook moves swap value via return deltas: The hook takes tokens via return deltas in beforeSwap and afterSwap and holds accrued fee claims on the PoolManager until collect() is called. Users' swap funds are only moved by the fee amount, but a failure in collect() would leave fees pending.

Contract details

Verified source
Yes (MintFastHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
2,865 bytes
Upgradeable proxy
No
Detected patterns
launchpad, moves-currency, return-delta, self-unlock

Pools using MintFastHook