DynamicFeeHookV4 on Robinhood Chain

Uniswap v4 Hook Contract 0xffdb07700af1545f89cb35b89f19f76f72d69000 on Robinhood Chain · Launchpad · Verified contract

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

What it does

A launchpad hook that sets a creator-chosen dynamic swap fee (up to 10%) on each migrated pool when it is initialised, leaving the pool otherwise a normal Uniswap v4 pool that any router can trade.

How it works step by step

  • Validates that it only implements the afterInitialize hook permission.
  • Lets the admin bind a single launchpad address, after which the binding is locked.
  • Lets the bound launchpad store a per-pool fee between 1 and 100000 pips before initialisation.
  • On pool initialisation (called only by the PoolManager), reads the stored fee and calls updateDynamicLPFee so the pool charges it on every swap.
  • Reverts initialisation if no fee was set for the pool.
Swap behaviour
No swap callbacks. Swaps pay the fixed dynamic LP fee stored for the pool at initialisation.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fees are dynamic per pool but set only once: the launchpad calls setPoolFee before initialisation, storing a fee between 1 and 100000 pips (up to 10%). In afterInitialize the hook calls poolManager.updateDynamicLPFee with that stored fee, so every swap in the pool pays it. Fees are not changed after initialisation by this hook and there is no fee sharing or redirect.
Owner & admin controls
Admin (immutable, set at deploy) can call bindLaunchpad exactly once to designate the launchpad address; after binding the binding is locked. The admin has no power to change individual pool fees, pause, or upgrade (contract is not a proxy). The launchpad, once bound, alone can set per-pool fees via setPoolFee, capped at MAX_FEE_PIPS (100000 = 10%).

Enabled Uniswap v4 callbacks

afterInitialize

afterInitialize: stamps the creator's configured dynamic LP fee onto the pool at the moment it is initialised.

Security & trust assessment

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

Who controls it: The launchpad controls the fee for any pool it initialises, up to 10%, and the admin controls which launchpad is bound. The admin cannot alter pools after binding; neither party can pause trading or move funds through this hook.

Risk to user funds: The hook never holds, moves or takes user or pool tokens and has no return deltas, so it cannot block swaps or liquidity. Users are exposed only to the dynamic fee (up to 10%) set by the launchpad when the pool is created.

Security findings

  • [info] One-time launchpad binding: bindLaunchpad can be called only once by the admin and reverts once a launchpad is set, so the launchpad address cannot be swapped later.
  • [info] Fee ceiling enforced: Fees are bounded to 1 to 100000 pips (max 10%), so a launchpad cannot set a 100% fee through this hook.
  • [low] Stored fee not re-applied: setPoolFee can be called by the launchpad at any time, but afterInitialize only reads the fee at initialisation, so later changes to poolFee do not alter already-initialised pools.
  • [info] Initialisation requires preset fee: Pool initialisation reverts with FeeNotSet if the launchpad did not set a fee first, so pools cannot be created through this hook without a fee.

Contract details

Verified source
Yes (DynamicFeeHookV4)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
1,487 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee

Pools using DynamicFeeHookV4