Likely launchpad hook on Robinhood Chain
Uniswap v4 Hook Contract 0xb5dad71490d39b4e3e9a6c81c3e3ec9d2e406088 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.
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