LittleJohnBondingHook on Robinhood Chain

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

Volume (24h)
$18.72K
Value locked (TVL)
$85.78K
All-time volume
$14.79M
Pools using this hook
25
Swaps (24h)
210 (95 traders)
Total swaps
61,436

What it does

A Uniswap v4 bonding-curve launch hook that runs trading in a real pool from the first trade and marks graduation once enough ETH is absorbed, without moving liquidity.

How it works step by step

  • Registers a per-pool graduation threshold and fixed launch liquidity once, from the factory during launch
  • Charges a dynamic ETH-leg fee on swaps and routes it as ERC-6909 claims to the per-launch locker
  • Computes absorbed ETH from the post-swap sqrt price with round-down math and emits BondingGraduated once when it meets the threshold
  • Locks liquidity so only the factory's seeding mint is accepted; all later adds revert
  • Exposes bondingProgress, isGraduated and milestoneOf views for UI badges and progress bars
Swap behaviour
Swaps run through the pool with a dynamic ETH-leg fee and anti-snipe decay; after each swap the hook checks the post-swap price to see whether the absorbed-ETH threshold has been crossed and latches graduation once.
Liquidity behaviour
Only the factory's seeding mint is accepted; the first add latches seeded and every later add reverts with OnlyLaunchLiquidity. Liquidity removal is not gated by this hook.
Fee behaviour
Dynamic fee pool: base hook takes an ETH-leg fee on both swap directions, minted to the per-launch locker as an ERC-6909 native-ETH claim, with anti-snipe decay bounded by MIN/MAX fee constants; exact fee parameters are set per launch at register time.
Owner & admin controls
No owner or admin role on the bonding hook itself; registerBonding and register are factory-only, write-once, with no setter, pause or upgrade path. The base LittleJohnHook is not fully visible in the provided source, so its admin surface is inferred to match the stated design.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts pool initialization to the factory; beforeAddLiquidity enforces the one-time seeding lock; beforeSwap sets dynamic fee overrides and the ETH-leg fee via return delta; afterSwap applies the base fee logic and checks the graduation milestone; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take fees from swap amounts.

Security & trust assessment

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

Who controls it: No single key can change fees, pause swaps or move funds on the bonding hook; configuration is fixed at launch. The factory is the only writer of milestone and fee config.

Risk to user funds: The hook can take a fee from swap ETH and route it to the locker claim, and it can reject liquidity adds after seeding, but it cannot hold user principal, move pool liquidity or block swaps through any admin path visible in the source.

Security findings

  • [info] Return-delta fee skimming: The hook takes its fee through beforeSwap and afterSwap return deltas, so a portion of each swap's ETH is diverted to the locker. This is by design but means swap output differs from the raw pool price.
  • [low] Milestone affects badge only: Graduation is a read-only milestone computed from the post-swap price and fixed liquidity; it does not move funds, so a failure here affects only the UI badge, not pool assets.
  • [low] First-add latch relies on tx ordering: Correctness of the seeding-lock depends on tx ordering inside the nonReentrant createBondingLaunch; the first add is trusted based on that sequence rather than the sender address.
  • [info] Base hook not fully reviewed: The base LittleJohnHook source was omitted from the provided input, so its fee bounds, decay logic and any admin hooks could not be fully verified here.

Contract details

Verified source
Yes (LittleJohnBondingHook)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
11,142 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, launchpad, return-delta

Pools using LittleJohnBondingHook