Launchpad hook on Ethereum
Uniswap v4 Hook Contract 0x5d79a5998cfcb4f17fffcaa0aa603499f73e60cc on Ethereum · Launchpad
- Volume (24h)
- $75.86K
- Value locked (TVL)
- $13.39K
- All-time volume
- $75.86K
- Pools using this hook
- 1
- Swaps (24h)
- 218 (103 traders)
- Total swaps
- 218
What it does
A launch-phase pool hook that charges a dynamic fee which decays from an initial rate to a launch rate and sends the collected fees to a treasury.
How it works step by step
- Records the pool id and launch timestamp at initialization.
- Applies a dynamic fee to swaps, starting at INITIAL_FEE_BPS and moving toward LAUNCH_FEE_BPS.
- Accumulates fees taken through swap return deltas.
- Lets the owner lower the fee with lowerFee and start the launch with open().
- Sends accumulated fees to the treasury through redeemFees().
- Swap behaviour
- beforeSwap sets the dynamic fee for each swap and afterSwap updates fee accounting, with return deltas letting the hook take a share of swap amounts.
- Liquidity behaviour
- beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are present but the hook's return and state logic for them could not be determined from the decoded input; it appears to observe liquidity changes rather than alter them.
- Fee behaviour
- Fee starts at INITIAL_FEE_BPS and moves toward LAUNCH_FEE_BPS over time from launchTimestamp; currentFeeBps() and feeBps() expose the active value, lowerFee(uint16) lets the owner reduce it, and redeemFees() moves accumulated fees to the treasury. Exact fee schedule could not be confirmed without source.
- Owner & admin controls
- Owner (two-step ownership: transferOwnership, acceptOwnership, renounceOwnership) can call lowerFee(uint16) to change the fee, and open() to start the launch. Owner can also transfer or renounce ownership. Treasury address is readable and used as the fee recipient through redeemFees().
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize records the pool id and marks initialization; beforeSwap sets the dynamic fee applied to the swap; afterSwap updates fee state and collects fees via return delta; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take a share of swap amounts as fees.
Security & trust assessment
Risk level: medium (decoded bytecode, medium confidence).
Who controls it: The owner can lower the fee with lowerFee, start the launch with open(), and redirect nothing directly but controls ownership transfer. A compromised owner key could lower fees to the minimum or transfer ownership to an attacker; the treasury address is set at deployment and receives redeemed fees.
Risk to user funds: The hook can take a share of swap input or output through return deltas and redeem accumulated fees to the treasury, so traders pay the hook fee on each swap. It does not appear to block pool funds, though the owner can alter the fee level.
Security findings
- [medium] Return-delta fee capture: Hook takes a portion of swap amounts through beforeSwapReturnDelta and afterSwapReturnDelta, so it holds and redistributes trader funds.
- [medium] Owner-adjustable fee: Owner can call lowerFee to change the fee rate after deployment, which changes trader costs.
- [low] Centralized owner key: Single Ownable owner with two-step transfer; no timelock is visible in the decoded selectors.
- [info] Unverified source: Swap-related and fee logic could not be fully verified without source; the reasoning relies on selector names and storage reads.
Contract details
- Verified source
- No
- Bytecode size
- 8,597 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable, return-delta
Pools using Launchpad hook
- ETH / IMDO (0.00% fee) — 24h volume $75.86K, TVL $13.39K, 218 swaps today