LaunchpadHookCore on Arc
Uniswap v4 Hook Contract 0x8d4aaa8a87a0c4d34c0408dfbff0eb7e604b6000 on Arc · Launchpad · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $17
- All-time volume
- $2.10K
- Pools using this hook
- 2
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 142
What it does
A Uniswap v4 launchpad hook that charges a fee on swap output, splits it between creator and protocol escrows, and gates launch-related swaps and liquidity actions through configured modules.
This read was written for the hook 0x22f4…6000 on Arc 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
- Only the factory may initialize pools with this hook; each pool must pair the launched token with an admitted quote currency (WETH, USDG, or policy-allowed).
- Takes a fee (default 5%) from swap output into the hook balance and accrues it to creator and protocol escrows via the shared fee engine (default 70/30 split).
- Runs configured gate modules in beforeSwap and beforeAddLiquidity to enforce launch-time protections, with a transient self-operation bypass.
- Registers and harvests the factory's seed liquidity position; harvested fees can be carved into value modules such as burn, deepen, or holder reflections.
- Creator claims are hold-gated: the creator must hold at least the initial allocation (wallet plus unclaimed vested) to withdraw accrued fees.
- Protocol claims go to the treasury and are not hold-gated.
- Swap behaviour
- Swaps are gated by configured gate modules (skipped during self-operations), and after each swap the hook takes TOTAL_FEE_BPS of the output currency into its own balance, accruing the creator/protocol split in the shared fee engine. Quote calls skip fee accrual via a try/catch.
- Liquidity behaviour
- beforeAddLiquidity and beforeRemoveLiquidity run configured gate modules (self-op bypass when the core executes its own modules). Seed liquidity is registered once by the factory via registerSeed and registerSeedPosition; harvest collects seed fees from the seed position through the position manager or seed executor.
- Fee behaviour
- On each swap the hook takes TOTAL_FEE_BPS (default 500 bps, owner-configurable up to 500) of the output currency. Fees are split between a creator escrow (default 70%, floor 50%) and a protocol escrow (30%), with optional per-tier overrides. For universal-economics pools, harvested fees are carved and routed to configured value modules (burn, deepen, reflections, etc.) by weight before the remainder is split.
- Owner & admin controls
- No owner or pause function on the hook core itself. Treasury address (current treasury only) can call setTreasury to redirect the protocol 30% pot. The fee engine (LaunchpadFeeShareBase) has an owner that can change TOTAL_FEE_BPS (capped at 500 bps), CREATOR_SHARE_BPS (floor 5000 bps), per-tier overrides, quote currency list, authorizers and authorized callers. Module set and parameters are fixed at construction via immutables.
Enabled Uniswap v4 callbacks
beforeInitialize
beforeInitialize: only the factory may initialize pools, and the pool must pair the launched token with an admitted quote currency (WETH, USDG, or a policy-allowlisted quote). Other callbacks (beforeSwap, beforeAddLiquidity, afterSwap, etc.) are implemented as configured by the launch module set; the hook address mined for this deployment encodes beforeInitialize only per the supplied permissions.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: The fee engine owner can raise total fee up to 500 bps and lower the creator share to 50%, and can add or remove quote currencies and authorizers. The treasury address can redirect protocol fees. Gate modules and value modules are immutable after deploy, so no key can swap them out, but a compromised owner could alter economics on the shared engine that this hook depends on.
Risk to user funds: The hook holds swap fee tokens in its own balance until claimed, and value modules can move harvested slices out. Traders' principal in the pool is not directly controlled by the hook beyond gate modules that may revert swaps and liquidity actions. A bug in a configured module or the shared engine could affect accrued fees.
Security findings
- [info] Fees custodied in hook balance: The hook takes its fee from swap output and holds tokens in its own balance until claim. Claims pay out via a transfer from the hook; a non-standard or blocklisted recipient causes the claim to revert rather than lose funds.
- [medium] Shared fee engine owner can change economics: Creator and protocol shares are accrued in engine storage keyed by token; the owner of the engine can change the global fee and creator share, affecting all hooks that use it. Changes apply to future accruals only.
- [medium] Value modules move harvested funds: Universal-economics harvest executes value modules (burn, deepen, reflections) that move fee slices out of the hook, and the reflections distributor pays holders from the hook balance. Module set is fixed at construction, but correctness of those external modules is not verified here.
- [low] Treasury can redirect protocol fees: Treasury can change the treasury address with no timelock, immediately redirecting future protocol fee claims.
- [info] Token has no mint path: The deployed token is a fixed-supply ERC-20 with no mint function, and creator claims are hold-gated against the wallet balance plus unclaimed vested tokens.
Contract details
- Verified source
- Yes (LaunchpadHookCore)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 15,578 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc20, fee-sharing, launchpad, moves-currency, self-unlock
Pools using LaunchpadHookCore
- COKE / HOOKER (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / HARC (2.00% fee) — 24h volume $0, TVL $17, 0 swaps today