Launchpad hook on Ink
Uniswap v4 Hook Contract 0xa80add2bcb3257f4bfbdcdceb74e814424e62eec on Ink · Launchpad
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
This launchpad hook keeps trading closed until a set opening time, charges a higher launch fee during the launch period and a standard fee afterwards, and routes part of swap currency to a treasury and rewards, so traders pay the launch fee early and the standard fee later.
How it works step by step
- Exposes a market, pool key, launch period and opensAt timestamp, indicating a token launch pool that gates trading until a set time
- Gates swaps with a TradingNotOpen error before the launch opens, so trading is blocked until opensAt
- Charges a launch fee (LAUNCH_FEE_BPS) during the launch period and a standard fee (FEE_BPS) afterwards, tracked via feeBps and totalFees
- Uses beforeSwapReturnDelta and afterSwapReturnDelta, so the hook can take a currency delta from swaps and route fees to a treasury and rewards
- Restricts certain calls to the market via a NotMarket error and takes tokens from the pool manager with take() and flush()
- Holds a rewards component that is referenced by the rewards() getter, which indicates fee or reward distribution to participants
- Swap behaviour
- Before a swap, the hook checks that trading is open (TradingNotOpen otherwise). Swaps during the launch period pay LAUNCH_FEE_BPS, and swaps after it pay FEE_BPS. After a swap, the hook can take a share of the swap in the currency (return delta) and forwards it to the treasury and rewards. Buyers and sellers are not differentiated from the decoded data alone.
- Liquidity behaviour
- Before and after adds and removes, the hook runs callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity). The decoded bytecode does not show clear restrictions on these calls, so liquidity appears to be permitted without special gating.
- Fee behaviour
- Fees are set from FEE_BPS and LAUNCH_FEE_BPS, with the current rate exposed as feeBps and accumulated amounts exposed as totalFees. Fees are taken via return deltas and sent to the treasury and rewards.
- Owner & admin controls
- A treasury address is exposed and a market address is checked for privileged calls. No owner, pause or upgrade function was found in the decoded selectors, but the decoded bytecode does not fully reveal who can change fee parameters or opensAt.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize and afterInitialize set up the pool; beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity run around liquidity changes; beforeSwap and afterSwap gate trading and collect fees; beforeDonate and afterDonate are enabled; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take currency from swaps.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The market and treasury addresses appear to be privileged. Whoever controls them can route collected fees and possibly influence gating, but the exact capabilities cannot be fully confirmed without source.
Risk to user funds: The hook can take a share of swap currency through return deltas and send it to the treasury and rewards. It can also block swaps before opensAt. Liquidity positions are not obviously custodied by the hook.
Security findings
- [medium] Hook takes currency via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the bytecode calls take() and flush() on the pool manager, so the hook can move user swap currency to the treasury and rewards.
- [medium] Trading gated by opensAt: A TradingNotOpen revert blocks swaps until opensAt, so a misconfigured or manipulable opensAt could block trading.
- [low] Market-restricted calls: A NotMarket check restricts some calls to the market address; if that address is an EOA or a privileged key, its control over the hook matters.
- [info] Fee parameters not verified: FEE_BPS and LAUNCH_FEE_BPS are readable but the setter logic and who can change them could not be confirmed from decoded bytecode alone.
Contract details
- Verified source
- No
- Bytecode size
- 5,083 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, return-delta, rewards
Pools using Launchpad hook
- ETH / SPLICERS (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today