IpoHook on Robinhood Chain

Uniswap v4 Hook Contract 0x65351944fd41a24e352caa7f730f9b856fe02ae0 on Robinhood Chain · Access control · Verified contract

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

What it does

This hook restricts an IPO-style pool so that only the bound sale contract can create the pool and add or remove liquidity, while ordinary swaps pass through at the pool's static fee after the sale approves each trade.

How it works step by step

  • Restricts pool initialization, liquidity add and remove, and swaps to a single bound IPO sale contract that is registered per pool key
  • Only the bootstrapper address can bind a sale to a pool, and each pool can be bound only once
  • beforeSwap delegates a trade check to the sale contract, which can gate or block trades according to the sale lifecycle
  • afterSwap calls back into the sale contract to record the swap, with no fee or return delta taken
  • beforeInitialize requires the sender to be the sale contract and the initial price to match the sale's configured price
  • beforeDonate always reverts, so donations to these pools are impossible
Swap behaviour
Each swap calls the bound sale's checkTrade before execution, which may revert to block trades; after the swap the sale's observeSwap is called. The hook returns a zero delta and zero fee, so swappers pay the pool's static fee and no extra fee is charged by the hook.
Liquidity behaviour
Adding and removing liquidity is allowed only when the sender is the bound sale contract; all other liquidity providers are rejected with Unauthorized.
Fee behaviour
Uses the pool's static fee. The hook returns zero override fee and zero delta, so it does not change or take fees.
Owner & admin controls
The bootstrapper address (the deployer) is the only account that can bind a sale to a pool, and each pool key can be bound once. There is no owner, pause, upgrade or parameter-change function visible in the ABI. Sale behaviour is controlled by the bound IIpoSale contract, whose logic is not part of this analysis.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate

beforeInitialize restricts pool creation to the sale at its configured price; beforeAddLiquidity and beforeRemoveLiquidity restrict liquidity changes to the sale; beforeSwap calls the sale's checkTrade to gate trading; afterSwap calls the sale's observeSwap to record trades; beforeDonate is enabled only to revert all donations.

Security & trust assessment

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

Who controls it: The bootstrapper chooses which sale is bound to each pool, and the bound sale controls whether trades and liquidity actions succeed. No owner or upgrade path was found in this hook.

Risk to user funds: The hook itself does not hold tokens and returns zero deltas, so it cannot directly take user funds. It can block swaps and liquidity actions through its reverts and through the bound sale's checkTrade, which can affect the ability to exit positions.

Security findings

  • [medium] Trading and liquidity gated by external sale contract: beforeSwap calls sale.checkTrade() and afterSwap calls sale.observeSwap(), and liquidity hooks rely on the sale address; if the bound sale reverts or is faulty, swaps and liquidity actions on the pool can be blocked. The sale contract's code is outside this hook's bytecode.
  • [low] Single-shot binding by bootstrapper: bind can only be called by the bootstrapper and only once per pool key, so a misconfigured binding cannot be replaced by this contract.
  • [low] afterSwap performs an external call: afterSwap calls observeSwap on the sale, adding an external dependency to every swap; the hook returns zero delta so it does not move user funds directly.
  • [info] Donations permanently disabled: beforeDonate reverts unconditionally, so donate is unusable on these pools.

Contract details

Verified source
Yes (IpoHook)
Compiler
solc 0.8.24+commit.e11b9ed9
Bytecode size
3,924 bytes
Upgradeable proxy
No

Pools using IpoHook