SynthHookV2 on Robinhood Chain

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

Volume (24h)
$23.69K
Value locked (TVL)
$6.43K
All-time volume
$412.93K
Pools using this hook
50
Swaps (24h)
2,126 (194 traders)
Total swaps
30,124

What it does

Launchpad hook for single-sided ETH/token launches that gates trading to synth wallets until a coin's ETH threshold or time window is met, then opens trading to everyone while charging a 1% ETH fee on swaps.

How it works step by step

  • Snapshots the admin's graduation threshold and open window onto each coin at registration, then opens trading when the ETH principal in the position reaches the threshold or the time window elapses.
  • Restricts pool initialization and liquidity addition to the launch factory and position manager.
  • Locks liquidity by reverting all beforeRemoveLiquidity and beforeDonate calls.
  • Gates swaps so only synth wallets can trade before opening; afterwards anyone can trade.
  • Takes a 1% ETH fee on each swap through return deltas and accrues it per coin.
  • Collect fees splits accrued ETH between the synth wallet (80% by default), ops wallet (10%) and buyback treasury (10%).
Swap behaviour
Before a coin opens, only synth wallet operators can swap. After opening, anyone can swap. Only exact-input swaps are allowed. Each swap takes a 1% fee in ETH: sells via beforeSwap and buys via afterSwap, with fees accrued to the coin for later collection.
Liquidity behaviour
Liquidity can only be added by the position manager when the call originates from the factory; beforeRemoveLiquidity and beforeDonate always revert with Locked, so the single-sided launch position cannot be withdrawn through the pool. Principal is reported via principal() using the current price.
Fee behaviour
Swaps selling the token into ETH (zeroForOne) take a 1% fee (100 bps) in ETH via beforeSwap; buys (after-swap ETH input side) take a 1% fee via afterSwap as an unspecified-currency delta. Fees accrue per coin and are minted to the hook as ETH claims. collectFees splits accrued ETH by default 80% to the synth wallet (creditFee), 10% to the ops wallet and 10% to the buyback treasury; the split is admin-adjustable but must total 10000 bps.
Owner & admin controls
ADMIN address (fixed constant) can set graduationThreshold, openWindow, opsWallet, buybackTreasury and the fee split (wallet, ops, treasury bps summing to 10000). No pause, no upgrade proxy, and no way to change the hook's permission flags. Admin cannot withdraw pool funds directly; fees are paid only through collectFees to the configured addresses. Admin changes apply to coins registered afterward, since each coin freezes threshold and opensAt at register.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: restricts pool initialization to the factory. beforeAddLiquidity: restricts liquidity addition to the factory via the position manager. beforeRemoveLiquidity and beforeDonate: always revert, locking liquidity. beforeSwap: gates trading until the coin opens (wallet-only before open), enforces exact-input, and takes the 1% sell fee via a return delta. afterSwap: takes the 1% buy fee via an unspecified delta and emits Swapped and TradingOpened logic. beforeSwapReturnDelta and afterSwapReturnDelta: enabled so the hook can take fees in ETH.

Security & trust assessment

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

Who controls it: The fixed ADMIN key can change fee split and recipient addresses (ops wallet and buyback treasury), so future fees could be redirected to addresses it controls, and it can change the graduation threshold and open window for future launches. It cannot change fees rates, pause trading, or move funds already in the position. The EXECUTOR key controls each synth wallet's operator and trading, and the launcher controls deposits and earnings withdrawals.

Risk to user funds: The hook holds ETH fee claims and transiently holds funds during unlock callbacks; it does not hold the pool's principal liquidity in a withdrawable form. Admin changes can redirect the fee split recipients, and the executor/operator can spend synth wallet deposits and earnings. Ordinary traders can't have funds blocked by a pause, since no pause exists.

Security findings

  • [medium] Admin-controlled fee recipients and split: The admin can change opsWallet, buybackTreasury and the wallet/ops/treasury fee split at any time. Fee recipients are redirectable without a timelock, so the admin could direct the 20% ops and buyback share, though the 80% wallet share is only credited to the synth wallet.
  • [low] Trading gate restricts non-wallet traders before open: beforeSwap blocks non-wallet senders until the coin opens, and the admin cannot change an already-registered coin's threshold or opensAt, so the gating is fixed per coin. Opening is also controlled by the snapshotted ETH principal reaching threshold or time passing.
  • [info] Liquidity permanently locked: Liquidity removal and donations are permanently blocked by hook reverts, so the launch position is locked by design. Users cannot exit the pool liquidity directly; this is intentional but means no LP exit path exists.
  • [medium] Synth wallet custody and operator spend power: Hook takes fees in ETH via return deltas and mints claims to itself; wallet earnings and deposits are held in SynthWallet with launcher-controlled withdrawals and an operator that can spend deposits and earnings. Users trading through a synth wallet rely on the operator and executor key.

Contract details

Verified source
Yes (SynthHookV2)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
10,136 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, launchpad, moves-currency, return-delta, self-unlock

Pools using SynthHookV2