Launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0xe693a6978cae40520c1aa040ab0ff2d44454f8cc on Robinhood Chain · Launchpad

Volume (24h)
$11.60K
Value locked (TVL)
$32.11K
All-time volume
$2.45M
Pools using this hook
419
Swaps (24h)
51 (44 traders)
Total swaps
14,203

What it does

A dynamic-fee hook that routes each registered pool through a per-pool vault address and uses swap return deltas to take or adjust swap amounts, apparently with a launch period and a creator fee.

How it works step by step

  • Keeps a per-pool mapping (derived from the pool key) to a vault address; vaultOf(PoolKey) exposes it and register(PoolKey,address) sets it.
  • Validates and records pool setup in beforeInitialize and afterInitialize, which also appears to set up the pool's dynamic LP fee.
  • Runs beforeSwap and afterSwap with return deltas, so the hook can change the swap amounts or take part of the swap in tokens.
  • References external calls to launchUntil(), creatorFeePpm(), msgSender(), updateDynamicLPFee(PoolKey,uint24) and mint(address,uint256,uint256), which points to a launch-window fee schedule, a creator fee and minting of ERC6909 claims or tokens.
Swap behaviour
beforeSwap reads the pool's vault mapping and returns a delta, and afterSwap also returns a delta. The hook can therefore take a fee or redirect part of the swap amount, probably as a creator fee or launch-period fee. The exact amounts cannot be determined from the decoded bytecode.
Liquidity behaviour
beforeAddLiquidity is enabled and reads the pool mapping. It most likely restricts who can add liquidity, for example to the position manager or the registered vault, and may revert otherwise. The exact condition is not visible. Remove liquidity is not hooked.
Fee behaviour
The pool uses a dynamic LP fee, and the hook references updateDynamicLPFee. The hook also takes a creator fee in ppm through the swap return deltas. Neither the schedule nor the caps can be read from the decoded bytecode.
Owner & admin controls
A register(PoolKey,address) function exists and is nonpayable, but its access control is not visible in the decoded output. The mapping is the only storage slot found. Who can call register, change a vault or change the fee parameters cannot be determined.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize checks the pool key and the hook's setup requirements. afterInitialize sets the initial dynamic fee and the pool's state. beforeAddLiquidity gates or validates liquidity additions. beforeSwap computes the fee and the specified-side delta before the swap. afterSwap computes the unspecified-side delta after the swap. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to adjust swap amounts and take tokens.

Security & trust assessment

Risk level: medium (decoded bytecode, low confidence).

Who controls it: Not determinable. If register or the vault contracts are controlled by a creator or admin, that party could receive the creator fee and control where taken tokens go, and could affect the launch-period fee.

Risk to user funds: The hook can take part of swap amounts through return deltas and send them to the registered vault. The hook has no remove-liquidity callbacks, so LP withdrawals are not blocked directly. Swaps could be blocked if a hook check reverts.

Security findings

  • [medium] Hook takes tokens through return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can alter swap amounts and take tokens. The size of the take cannot be checked without source.
  • [medium] Unverified source: No verified source is available, so fee caps, the launch schedule and access checks on register are unconfirmed.
  • [low] Per-pool vault set via register: Each pool is linked to a vault address through register(PoolKey,address). If register is not restricted, a wrong vault could receive fees.
  • [low] Liquidity additions are gated: beforeAddLiquidity reads storage, so LPs may be blocked from adding liquidity under conditions that cannot be inspected.
  • [info] Not upgradeable by evidence: No delegatecall-based upgrade or owner functions appear in the dispatched selectors, though this is not proof.

Contract details

Verified source
No
Bytecode size
8,315 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, return-delta

Pools using Launchpad hook