Likely launchpad hook on Robinhood Chain

Uniswap v4 Hook Contract 0x40b9836ea1aeacf24835bf8bb958694c4ad66088 on Robinhood Chain · Launchpad

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

What it does

This hook appears to run a custom bonding-curve style market that prices and settles swaps itself and routes proceeds to a creator and treasury, but the exact fee and direction effects cannot be determined from the decoded bytecode.

This read was written for the hook 0xb5da…6088 on Robinhood Chain and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Hook exposes a bonding-curve style quote interface (buyQuote, sellQuote, liability, K, CAP, SCALE, MAX_INPUT), suggesting pricing is computed by the hook rather than the pool's curve
  • beforeInitialize gates pool creation and records pool configuration including a token address
  • beforeSwap returns a custom delta, meaning the hook can fill or price swaps itself and settle currency outside the standard pool math
  • Hook moves currency and tokens: it calls take, settleFor, mint and transferFrom, and tracks reserves through a ledger and a contribute flow
  • Includes creator and treasury roles with creatorClaim and claimCreator functions, plus a bindTreasury setter, indicating fee or proceeds routing to a creator and treasury
  • Contains a busy flag and a solvent check, suggesting reentrancy guarding and a solvency invariant on the reserve
Swap behaviour
beforeSwap is implemented and returns a delta override, so swaps may be priced and settled by the hook using its own curve and reserve rather than the pool's liquidity; which trades pay more or less cannot be determined from bytecode alone.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fees are not fully determinable from the decoded bytecode; the hook appears to route proceeds to a creator and treasury via claim functions, but the exact fee rate and split are unknown.
Owner & admin controls
bindTreasury(address) is a nonpayable setter that changes the treasury address; the authority, manager and coordinator getters suggest role-based access, but who holds these roles and their exact powers cannot be confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, beforeSwapReturnDelta

beforeInitialize is used to validate and register new pools for this hook. beforeSwap is used to compute and settle swap amounts through a custom curve. beforeSwapReturnDelta lets the hook take over part of the swap delta, which is how it moves currency.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, low confidence).

Who controls it: A privileged role may be able to change the treasury, control the reserve accounting and possibly influence pricing; the scope of these powers is unknown from bytecode.

Risk to user funds: The hook holds and moves token balances in a reserve ledger and settles currency during swaps, so user and pool funds depend on the correctness of its solvency and pricing logic.

Security findings

  • [high] Hook overrides swap delta: beforeSwapReturnDelta is enabled and beforeSwap is implemented, so the hook can alter the amounts exchanged in swaps and settle currency itself. A bug or privileged path here could misprice or drain pool funds.
  • [medium] Treasury address is changeable: A nonpayable bindTreasury(address) function exists and the treasury is stored in slot 2, so whoever can call it may redirect proceeds.
  • [medium] Role-based access not verifiable: Authority, manager and coordinator roles exist, but without source the access checks and the holders of these roles cannot be confirmed.
  • [info] Pause or busy state can block trading: A busy flag is read during swap-related paths, which may halt swaps when set; the conditions that set it are not visible.

Contract details

Verified source
No
Bytecode size
13,325 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, return-delta

Pools using Likely launchpad hook