HotpotHook on Ethereum
Uniswap v4 Hook Contract 0x29c192b529c234582bcd9e80ebfe76c4415d60cc on Ethereum · Launchpad · Verified contract
- Volume (24h)
- $909
- Value locked (TVL)
- $275
- All-time volume
- $909
- Pools using this hook
- 1
- Swaps (24h)
- 20 (5 traders)
- Total swaps
- 20
What it does
A Uniswap v4 ETH/token pool where a 60% kickoff fee decays to 4% and every buy above a minimum has a growing chance to win 80% of an ETH pot, with the rest of the fees accumulating for the pot or the project.
How it works step by step
- Creates the ETH/token pool once at a launcher-chosen starting tick with single-sided token liquidity
- Opens trading once; fees start at 60% and decay linearly to 4% over 15 minutes
- Takes 4% fees on all swaps after kickoff, splitting buys 75% to the pot and 25% to the project wallet, and sells 100% to the pot
- Arms a bomb on buys of at least minBuy ETH with a chance that starts at 0.5% and rises 0.1% per armed buy
- Resolves the armed buy from blockhash, pays 80% of the pot to the buyer on a win, and resets the chance
- Blocks pool creation by anyone else via beforeInitialize
- Swap behaviour
- Buys and sells charge an ETH-denominated fee taken through beforeSwap or afterSwap return deltas, falling from 60% to 4% during the 15-minute kickoff and then fixed at 4%. Swaps revert before trading opens. Buys of at least minBuy ETH arm the bomb, which is resolved by a later swap or a resolve() call.
- Liquidity behaviour
- No liquidity callbacks. At createPool the hook's position manager call mints single-sided token liquidity (tokens only) over a range above the start tick; the position is owned by the launcher via the position manager.
- Fee behaviour
- Kickoff fee starts at 60% when trading opens and falls linearly to 4% over 15 minutes; afterwards 4% on buys and sells, fixed in code. Fees are always taken in ETH via poolManager.mint. Buy fees: 75% to the pot, 25% to feeRecipient; sell fees: 100% to the pot. Fee is returned as a beforeSwap or afterSwap return delta.
- Owner & admin controls
- Launcher (immutable address) can only call createPool once and openTrading once; after openTrading it has no pause, fee, blacklist, limit or upgrade power. No proxy, no owner transfer. collectFees and claimPrize are permissionless with fixed destinations.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: reverts any external pool initialization so only createPool can create the pool. beforeSwap: applies the ETH-denominated fee on exact-in buys and exact-out sells, resolves pending bomb rolls, and reverts swaps before trading opens. afterSwap: applies the fee on the other swap direction and arms the bomb on buys of at least minBuy ETH. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take its fee as a delta from the swap.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The launcher key controls only the one-time pool creation (choice of starting tick and token amount) and the opening of trading. It cannot change fees, pause swaps, blacklist addresses, or move pot or project ETH. The project fee recipient is fixed at deploy.
Risk to user funds: The hook holds all ETH from fees and the pot as PoolManager claims and can pay it out only to a bomb winner (claimPrize) or feeRecipient (collectFees). It cannot be paused or drained by the launcher. Users are exposed to the bomb mechanics (a losing buyer's ETH is added to the pot) and to bugs in accounting or randomness.
Security findings
- [medium] Bomb outcome relies on blockhash randomness: Randomness for the bomb is blockhash of the armed buy's block combined with round and buyer address. Block producers can influence blockhash within limits, and the buyer address is public, so outcomes are not strictly unpredictable to a builder.
- [low] Winner must keep tokens to receive prize: The prize is only paid if the winner still holds the tokens bought in the armed buy when resolved; otherwise the prize is forfeit and stays in the pot. This is a design rule that can surprise winners who sell.
- [low] Prize recipient uses tx.origin: Armed buys are tied to tx.origin, so the winner is the EOA that sent the transaction; contract wallets and smart accounts get the wrong recipient logic and cannot be paid through their contract address directly.
- [info] All ETH sits as PoolManager claims of the hook: The hook holds all pot and fee ETH as PoolManager claims. Funds are reachable only through the defined claimPrize and collectFees paths, both fixed-destination, but a bug in accounting would affect pooled ETH.
- [info] Immutable contract, no upgradeability: Verified source with no proxy or upgrade mechanism; behaviour is fixed at deployment.
Contract details
- Verified source
- Yes (HotpotHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 12,127 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, return-delta, self-unlock
Pools using HotpotHook
- ETH / HOTPOT (0.30% fee) — 24h volume $909, TVL $275, 20 swaps today