MindHook on Ethereum
Uniswap v4 Hook Contract 0x9a3bf6d160938878e0b5b25dada62fea2770e8c8 on Ethereum · Launchpad · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 2
- Swaps (24h)
- 197 (110 traders)
- Total swaps
- 197
What it does
A launchpad bonding-curve hook where every buy and sell pays the same fee (1% by default, never above 2%) to the factory, trading pauses once the ETH target is hit until graduation to a normal pool, and the factory can close a pool and take its curve reserves.
How it works step by step
- Runs a bonding curve inside the hook: before graduation the hook itself fills every buy and sell from a virtual constant-product curve, and the pool holds no liquidity.
- Charges one fee on every trade, default 1%, taken in the input token. The owner can set it anywhere from 0% to 2%.
- Once the curve raises its ETH target (default 2 ETH), swaps pause until the factory graduates the pool. Graduation moves the curve's ETH and remaining coins into a full-range factory position at the curve's final price.
- Only the factory can create pools and add liquidity, and only after graduation. Outside LPs cannot add liquidity.
- The factory can close a pool at any phase, which stops trading and hands all of the curve's ETH, coins and fees to the factory.
- Swap behaviour
- While on the curve, the hook fills each swap itself, takes the input and pays the output from its own balances, and charges the base fee (default 1%, max 2%). The swap that crosses the ETH target is only partly filled, and swaps revert while the pool waits for graduation or after it is closed. After graduation it trades as a normal v4 pool with the same fee.
- Liquidity behaviour
- Only the factory can add liquidity, and only after graduation; anyone else trying to add is rejected. Remove-liquidity callbacks are disabled, so the hook cannot block withdrawals of liquidity that is in the pool.
- Fee behaviour
- A dynamic LP fee equal to baseFee (1% by default, owner-adjustable from 0% to 2%) applies to every trade, in the input currency. Curve-phase fees are booked per pool and collected by the factory; after graduation they accrue to the factory's LP position.
- Owner & admin controls
- The owner can set the fee between 0% and 2%, set the curve parameters for future launches only (virtual ETH 0.1 to 100 ETH, target 0.1 to 1000 ETH), and set the factory address once. The factory can graduate pools, collect fees, and close any pool, taking its curve reserves.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta
beforeInitialize: only the factory can create pools, which must use a dynamic fee and open at the curve's final price. beforeAddLiquidity: allows only the factory to add, and only after graduation. beforeSwap: fills curve trades and sets the fee. beforeSwapReturnDelta: lets the hook settle curve trades itself instead of using pool liquidity. afterSwap: resets the idle pool price after a partly filled crossing swap.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner controls the fee within 0% to 2% and the settings for future curves. The factory, set once, can graduate, collect fees from, or close any pool, taking all of its curve funds.
Risk to user funds: The hook holds all curve ETH and coin balances. These can be handed to the factory on graduation or on closure, and closure halts trading of the coin through this pool. Trade fees are 0% to 2%, and LP principal is factory-only and not subject to withdrawal blocks.
Security findings
- [medium] Factory can close pools and take curve reserves: The factory's close function works in any phase and transfers all curve ETH, unsold coins and fees to the factory, then permanently stops trading. Holders' recourse then depends on the factory's own logic.
- [info] Fee hard-capped at 2%: The owner cannot set the base fee above 2%.
- [info] Immutable, no withdrawal callbacks: This is a direct contract, not a proxy. Remove-liquidity hooks are disabled, so withdrawals cannot be blocked.
Contract details
- Verified source
- Yes (MindHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 12,269 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, erc6909-claims, launchpad, ownable, return-delta