Likely launchpad hook on Ink
Uniswap v4 Hook Contract 0x9f0834cc829fd789782f7afc76de67e3dedb2ac8 on Ink · Launchpad
- Volume (24h)
- $0
- Value locked (TVL)
- $4.28
- All-time volume
- $47
- Pools using this hook
- 13
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 169
What it does
A launchpad-style Uniswap v4 hook that sets up token launches with per-pool configuration, dynamic swap fees, vesting and anti-sandwich logic, and routes fees and proceeds into vault, buyback and airdrop contracts.
How it works step by step
- prepareLaunch stores a launch configuration (pool key, amounts, addresses and tick bounds) that is later read by the swap and liquidity callbacks.
- beforeInitialize records per-pool tick and config state when a pool is created using this hook.
- beforeSwap and afterSwap read launch state, vesting and last-swap data, and call internal accounting that can credit fees to vaults.
- dynamicFeeForSwap computes a swap fee from pool configuration, the swap direction and launch state rather than using a static pool fee.
- Liquidity add and remove callbacks check launch state and pending deepening or auto-burn counters before allowing changes.
- Pending buyback, airdrop and holder-registration data suggests part of collected value is redistributed to registered holders and vaults.
- Swap behaviour
- beforeSwap and afterSwap are both implemented. beforeSwap reads launch config, vesting and last-swap timing, and can enforce wallet and sandwich checks; afterSwap updates swap bookkeeping and pending buyback or auto-burn counters, and the hook has beforeSwapReturnDelta so it can take or alter amounts in the swap.
- Liquidity behaviour
- beforeAddLiquidity and beforeRemoveLiquidity are implemented and read launch state and pending deepening counters; afterRemoveLiquidity and afterAddLiquidity are exposed as view selectors in the dispatch table, so their enabled status is not confirmed by the permission flags.
- Fee behaviour
- Dynamic: dynamicFeeForSwap(bytes32,uint256,bool) returns a fee derived from stored per-pool configuration and swap direction. Part of the fee appears to be routed to vault, buyback and airdrop destinations via internal credit functions.
- Owner & admin controls
- The owner (storage slot 0) can call setOwner, setFactory, setAirdropVault, setArbExecutor and setArbActive, and the factory address can be changed by the owner. The owner-controlled arbExecutor and arbActive flag indicate an admin-operated arbitrage path. Parameter changes to fee logic are not confirmed from the selectors alone.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta
beforeInitialize sets up per-pool state for a new pool; beforeAddLiquidity and beforeRemoveLiquidity gate or adjust liquidity changes against launch state; beforeSwap and afterSwap apply launch rules, fee accounting and bookkeeping to swaps; beforeSwapReturnDelta lets the hook take a share of swap amounts, which is how it moves currency.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: The owner key controls ownership transfer, factory and vault addresses, the arbitrage executor and its enable flag. A compromised or malicious owner could redirect vault flows or enable the arbitrage path to extract value.
Risk to user funds: The hook can take a share of swap amounts through return deltas, credit fees to vault, buyback and airdrop destinations, and revert swaps or liquidity changes based on its rules. It does not appear to hold a large custodial balance itself beyond pending accounting, but routed funds depend on owner-set destinations.
Security findings
- [medium] Hook takes currency via return deltas: beforeSwapReturnDelta is enabled and the bytecode moves currency (take, transferFrom, transfer), so the hook can skim or redirect part of every swap. The exact split is set by stored config that is not readable without source.
- [high] Owner-controlled arbitrage executor: setArbExecutor and setArbActive let the owner designate an address and toggle an arbitrage mode; if that path can bypass fee or sandwich checks, it can extract value at the expense of traders and LPs.
- [medium] Privileged vault and factory addresses: The owner can replace the airdrop vault, factory and arb executor with arbitrary addresses, so funds routed to vaults depend entirely on the owner key staying uncompromised.
- [medium] Anti-sandwich and wallet limits can block trades: The bytecode contains SandwichBlocked and MaxWalletExceeded errors, so swaps can revert based on timing or holding limits, which may trap or delay user transactions.
- [info] No verified source: Without verified source, exact fee splits, launch parameters and whether the owner can change them cannot be confirmed; findings rely on decoded selectors and error names.
Contract details
- Verified source
- No
- Bytecode size
- 24,289 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, moves-currency, return-delta
Pools using Likely launchpad hook
- HKQST / wSPYx (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HKMLT (0.00% fee) — 24h volume $0, TVL $4.28, 0 swaps today
- HKMLT / USDG (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- ETH / HKITN (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- ETH / HBURN (0.00% fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- HKQST / wNVDAx (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- wAAPLx / HKQST (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / DFVST (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- AAPLCH / wAAPLx (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HAIR (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HLIM (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HFLOOR (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HSNIP (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today