Launchpad hook on Ethereum
Uniswap v4 Hook Contract 0xa8ba026aeee1a29eb65cba4acbd8f8ef2b00e800 on Ethereum · Launchpad
- Volume (24h)
- $169
- Value locked (TVL)
- $2.48
- All-time volume
- $169
- Pools using this hook
- 1
- Swaps (24h)
- 11 (3 traders)
- Total swaps
- 11
What it does
This launchpad hook bootstraps a single token pool and gates initialization and liquidity additions, routing accumulated fees between a treasury share and the rest through owner-set settings; swap pricing is not altered by the hook, so swaps pay the pool's standard fee.
How it works step by step
- Acts as a token launchpad hook that gates pool initialization and liquidity addition for a single pool configuration stored in its storage slots.
- Exposes launch(int24,uint160,uint256) which is payable and writes pool key fields and a launched flag, indicating the hook bootstraps a new pool and sale.
- Uses unlockCallback and PoolManager-style calls (unlock, modifyLiquidity, take, settle, sync) to move currency in and out of the pool during launch and flush operations.
- Tracks pending fees, lastFlushAt and a flusher address, and provides flush(uint256) to periodically settle accumulated value to the pool or treasury.
- Has a notifyReward(uint256) selector and mintFor/transfer selectors, consistent with distributing rewards or tokens to participants.
- Maintains an owner plus a treasury address with setTreasury and setFlusher setters, and a TREASURY_BPS constant splitting proceeds.
- Swap behaviour
- No swap callbacks.
- Liquidity behaviour
- beforeAddLiquidity is enabled and is the only liquidity callback permitted; it is a view-style check that can gate adding liquidity to the launched pool. Remove-liquidity and afterAddLiquidity callbacks are present as selectors but not enabled in the hook permissions.
- Fee behaviour
- Uses LP_FEE and BPS constants with TREASURY_BPS; pendingFees accumulates value that flush(uint256) distributes, so fees are routed to the treasury share and the remainder rather than being a per-swap dynamic fee.
- Owner & admin controls
- Owner (owner()) can call setTreasury(address) and setFlusher(address), changing where proceeds go and which address may trigger flushes. No pause or upgrade mechanism was identified from the selectors.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity
beforeInitialize is used to validate or restrict pool initialization for the launched token pair. beforeAddLiquidity is used to gate liquidity provision into the pool.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: A single owner key controls the treasury address and can designate the flusher, so a compromised owner could redirect fee proceeds.
Risk to user funds: The hook can hold pending fees and move currency through the pool manager during launch and flush, so user and pool funds pass through its accounting; exact accounting bounds could not be confirmed without source.
Security findings
- [medium] Owner can redirect proceeds: setTreasury(address) lets the owner change the treasury recipient at any time, so future accumulated fees could be redirected by a privileged key.
- [low] Flusher role controls settlement timing: setFlusher(address) and flush(uint256) let a designated address trigger settlement of pending fees; the timing and amounts depend on that role.
- [medium] Currency movement via unlock callback: The hook calls unlock, take, settle and sync and holds pending fee balances, so it can move pool currency and hold funds between flushes.
- [info] Ownable without visible timelock: Owner selector and NotOwner error indicate a single-owner access pattern with no timelock or multisig evidence in the bytecode.
Contract details
- Verified source
- No
- Bytecode size
- 14,413 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, launchpad, moves-currency, ownable, rewards, self-unlock
Pools using Launchpad hook
- ETH / TEREA (3.00% fee) — 24h volume $169, TVL $2.48, 11 swaps today