Launchpad hook on Ethereum
Uniswap v4 Hook Contract 0x9b7660c4a81f98f29ffcc56d77aa6642933c2444 on Ethereum · Launchpad
- Volume (24h)
- $0
- Value locked (TVL)
- $53.22K
- All-time volume
- $2.51M
- Pools using this hook
- 8
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 10,919
What it does
A Uniswap v4 hook for ETH/TTT launch pools that charges a buy fee starting at 99% and decaying to 1% over 98 blocks, and a flat 1% sell fee, routing fees to a splitter and a per-token buyback.
This read was written for the hook 0xdee7…a444 on Ethereum and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.
How it works step by step
- Records each token's launch block in beforeInitialize and only allows pool creation during the factory's launch window.
- Charges buy fees that decay linearly from 99% to 1% over 98 blocks after launch, then stays at 1%.
- Charges a flat 1% fee on sells, taken as ETH via the afterSwap return delta.
- Swaps the token portion of buy fees into ETH and splits it between the feeAddress splitter and a buyback sent to the token contract.
- Grants transient transfer allowances to the pool and hook so the token's transfer guard lets fee and seed-liquidity transfers through.
- Rejects exact-output swaps and skips fee logic for swaps initiated by the hook itself or the token contract.
- Swap behaviour
- Buys (ETH in, token out) are charged a fee taken in the token, decaying from 99% to 1% over 98 blocks after launch. The fee token is swapped to ETH, with the resting 1% portion sent to the feeAddress splitter and the remainder sent to the token as a buyback. Sells (token in, ETH out) are charged a flat 1% fee in ETH sent to the feeAddress splitter. Exact-output swaps are rejected.
- Liquidity behaviour
- Only afterAddLiquidity is active, and it only works during the factory's launch window. It bumps the token's transfer allowance by the token amount the LP deposited so the pool can pull tokens through the token's transfer guard. Removing liquidity has no hook logic.
- Fee behaviour
- Buy fees start at 99% and decay by 1 percentage point per block over 98 blocks down to a resting 1%, measured from the block the token's pool was initialized. Sell fees are a flat 1%. On buys the fee is taken in the token, swapped to ETH, and the ETH is split: the resting 1% portion goes to the feeAddress splitter, and the remainder is sent as ETH to the token contract as a buyback. On sells the full 1% fee in ETH goes to the feeAddress splitter.
- Owner & admin controls
- Owner (Solady Ownable with two-step handover) can set the factory once via setFactory, and can repoint the global feeAddress at any time via setFeeAddress, which redirects all buy and sell fee ETH to a new address. Ownership can be transferred, handed over, or renounced.
Enabled Uniswap v4 callbacks
beforeInitialize, afterAddLiquidity, afterSwap, afterSwapReturnDelta
beforeInitialize restricts pool creation to the factory's launch flow and records each token's deployment block. afterAddLiquidity grants transient transfer allowance during the launch window. afterSwap applies the buy and sell fee logic, routes fees, and sets the return delta that takes the fee from the swap. afterSwapReturnDelta lets the hook take a portion of the swap output as its fee.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, high confidence).
Who controls it: The owner can redirect all trading fee ETH to any address by calling setFeeAddress, which can divert all future fees away from the intended splitter. The owner cannot directly move pool liquidity or user tokens, and the factory is set once and cannot be changed afterward.
Risk to user funds: Users' swap inputs are fully routed through the pool, and fees are taken from the swap delta, so the hook does not custody principal. The hook temporarily holds the fee token and ETH during a swap before forwarding them to the feeAddress splitter and the token contract. A malicious owner could divert future fees, and a broken or malicious splitter could cause swap reverts, but the hook cannot directly seize LP principal.
Security findings
- [medium] Owner can redirect all fee flow: setFeeAddress lets the owner repoint every pool's fee destination at any time, and nothing caps or delays the change. A compromised owner key could divert all future fee ETH.
- [low] Single-key ownership: The owner is a single address, and ownership can be transferred or renounced via Solady Ownable. Access to the owner key controls fee routing for the whole protocol.
- [info] Hook takes fees via return delta: afterSwap returns a positive hook delta and calls poolManager.take to pull the fee in the output token. Fees are taken from swap output by design, not from LP principal, and the hook never holds user tokens beyond the transient fee amount that it immediately swaps or forwards.
- [info] Relies on token transfer allowance mechanism: The hook calls increaseTransferAllowance on the token contract in several places to bypass the token's transfer guard for the pool and the hook itself. This relies on the token's guard being correctly implemented.
- [low] External splitter dependency can block swaps: Buy-side and sell-side fee splitting depends on external calls to the FeeSplitter (depositETH). A reverting or malicious splitter would cause swaps to revert on the affected pools.
Contract details
- Verified source
- No
- Bytecode size
- 7,146 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, return-delta
Pools using Launchpad hook
- ETH / RWA (0.00% fee) — 24h volume $0, TVL $6.54K, 0 swaps today
- ETH / FFWA (0.00% fee) — 24h volume $0, TVL $46.16K, 0 swaps today
- ETH / 8s (0.00% fee) — 24h volume $0, TVL $195, 0 swaps today
- ETH / SWAN (0.00% fee) — 24h volume $0, TVL $324, 0 swaps today
- ETH / STONK (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / HAPPIN (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / ANSEM (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / ANSEM (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today