PmavHook on Robinhood Chain

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

Volume (24h)
$0
Value locked (TVL)
$16.09K
All-time volume
$9.42M
Pools using this hook
195
Swaps (24h)
0 (0 traders)
Total swaps
74,292

What it does

A fixed-supply ETH-paired token launchpad where each coin trades on a native Uniswap v4 pool that acts as its own bonding curve and graduates to a permanently locked full-range pool.

How it works step by step

  • Deploys a new fixed 1B supply ERC20 and initializes a native ETH/token Uniswap v4 pool referencing the hook, with the curve liquidity held by the hook.
  • Enforces a fair-launch first-hour rule capping each wallet at 20M tokens, filling to cap and refunding surplus ETH instantly or via a claimable queue.
  • Charges a 1% fee plus a decaying anti-snipe premium on curve buys and 1% on sells, splitting fees 70% creator and 30% platform.
  • Graduates the coin when the curve sells out: removes the curve position, flips to a fixed 1% LP fee, and locks ETH raised plus 200M tokens in a full-range position.
  • Lets creators claim fees and reassign or lock their fee recipient, allows anyone to collect LP fees from graduated pools, and lets the owner reassign inactive creators' fee streams.
Swap behaviour
During the curve phase buys are limited to the first hour per wallet to 2% of supply with the excess refunded, a decaying anti-snipe fee applies to buys, and a 1% fee is taken on ETH. Trading opens the block after creation. Sells are never capped or taxed beyond the 1% fee. After graduation the hook is a passthrough and only emits Trade events.
Liquidity behaviour
Liquidity is added only by the hook itself during the curve phase: a single concentrated position owned by the hook holds the 800M curve tokens between ticks 176620 and 204350. Third-party liquidity adds are blocked until graduation. At graduation the curve position is removed, and the raised ETH plus 200M reserved tokens are re-deposited as a permanently locked full-range position with no code path to remove it. Liquidity removal is not gated by the hook.
Fee behaviour
Curve trades pay a 1% base fee on ETH gross, plus an anti-snipe premium on buys that decays linearly from a per-pool frozen peak (default 15%) to zero over a frozen window (default 30s). Fees are split 70% to the coin's fee recipient and 30% to platform. After graduation the pool uses a fixed 1% LP fee, and LP fees from the locked full-range position are collectible by anyone and split 70/30 creator/platform.
Owner & admin controls
Owner (set at deploy, transferable via setOwner) can: tune anti-snipe factory defaults within hard caps (peak <= 25%, window <= 120s, affects future launches only), withdraw accrued platform fees via withdrawPlatformFees, execute ctoRedirect to reassign a coin's fee recipient once the dev has been inactive for 7 days (not applicable to fee-locked coins), and transfer ownership. Owner cannot pause trading, change swap fees on live pools, blacklist addresses, or touch user LP funds. The contract is not upgradeable (no proxy observed).

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: reverts for any external pool initialization, so only pools created via create() can use this hook. beforeAddLiquidity: blocks third-party liquidity during the curve phase. beforeSwap: enforces the one-block launch delay, the first-hour 2% per-wallet buy cap (fill-to-cap with auto-refund), the anti-snipe premium, and takes the ETH fee and any refund as a hook delta. afterSwap: updates sold/raised counters, first-hour ledger, emits Trade events, applies the fee on ETH-unspecified swaps, and triggers graduation when the price reaches the graduation tick. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take ETH from swappers as fees and refunds.

Security & trust assessment

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

Who controls it: The owner cannot seize or freeze user balances, halt trading, or alter fees on live pools. Its powers are limited to receiving platform fees, tuning future launch defaults within caps, and reassigning fee recipients of inactive coins via ctoRedirect. Coin creators can also change their own fee recipient and lock it permanently.

Risk to user funds: Users' swap proceeds and LP positions sit in the PoolManager pool. The hook holds the curve liquidity and the post-graduation locked LP, and accrued creator and platform fees as ERC6909 claims or ERC20 balances. Users cannot have funds frozen by the owner, and graduated LP has no removal path. Over-cap buy refunds are paid instantly or queued for claimRefund.

Security findings

  • [info] Hook takes value via return deltas: Hook takes ETH fees and refunds through beforeSwap return deltas and holds ETH claims in the PoolManager via ERC6909, so swaps on curve coins route value through the hook. The hook is a custodian of accrued fee balances and queued refunds until they are claimed.
  • [low] Owner can reassign fee recipient of inactive coins: Curve phase requires the hook to control liquidity: only the hook can add liquidity until graduation, and the owner-controlled ctoRedirect can reassign creator fee streams for abandoned coins after 7 days of dev inactivity.
  • [low] Graduation requires high gas on the completing buy: The graduation step is gas-sensitive: the completing buy reverts if gasleft is below 4.2M. A caller supplying too little gas gets a revert rather than a partial graduation, but the requirement could make the final buy fail for some estimators.
  • [low] Complex hook logic and reliance on core semantics: Deployment and pool setup run through the PoolManager with a CREATE2-mined hook address, and graduation uses a privileged swap and liquidity sequence internally. Logic is unusually complex (multiple unlock actions, transient locks) and relies on core noSelfCall semantics; this increases audit surface.

Contract details

Verified source
Yes (PmavHook)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
30,507 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, erc6909-claims, launchpad, mev-protection, moves-currency, return-delta, self-unlock

Pools using PmavHook