LaunchpadHookCore on Arc
Uniswap v4 Hook Contract 0x2a643ae21fbd56d0c123719db912f45659cca080 on Arc · Launchpad · Verified contract
- Volume (24h)
- $246
- Value locked (TVL)
- $4.72K
- All-time volume
- $562.29K
- Pools using this hook
- 1
- Swaps (24h)
- 12 (12 traders)
- Total swaps
- 6,748
What it does
Traders pay a fixed fee of up to 5 percent on the output of each non-quote swap, which accrues to the creator (default 70 percent) and protocol treasury (default 30 percent), while liquidity adds are subject to gate checks that can block them.
How it works step by step
- Acts as the fee engine for a launchpad pool: on every swap, afterSwap takes a fixed percentage of the swap's output currency into the hook balance and accrues it to creator and protocol escrow ledgers via the shared fee-share engine.
- Only the launchpad factory can create pools with this hook, and only pairs of a launched token with an admitted quote currency (WETH, USDG, or treasury-allowlisted quotes) are accepted.
- Runs an optional gate plane in beforeSwap and beforeAddLiquidity, forwarding each call to up to four configured gate modules, bypassed while the core executes its own modules.
- Splits accrued creator fees across up to five configured value modules by weight (standard tier on swap, universal tier on harvest), transferring each slice and executing the modules inside an unlock.
- Holds creator claims behind a hold gate: the creator, or each split wallet, must keep at least its allocation in wallet plus unclaimed vested tokens before fees can be claimed.
- Carries a reflections sidecar for holder distribution on universal-economics launches, and exposes a factory-gated seed position registry used by the harvest path.
- Swap behaviour
- On every swap that produces output, afterSwap takes the configured total fee (TOTAL_FEE_BPS or a per-tier override, capped at 5%) off the output currency into the hook and returns it as a delta, so the swapper receives that much less. Quote calls skip the take and accrual so quotes match real swap output. beforeSwap runs up to four gate modules first (for example anti-snipe checks) that may revert the swap; swaps made by the core's own modules bypass gating.
- Liquidity behaviour
- beforeAddLiquidity runs up to four gate modules that may revert the add. beforeRemoveLiquidity and the after-liquidity hooks are not implemented (BaseHook no-ops). Pools are seeded by the factory via registerSeed/registerSeedPosition, which record the seed tick range and liquidity once; that seed position's fees are collected on harvest.
- Fee behaviour
- The fee is taken from swap output, not input. The total fee is TOTAL_FEE_BPS (global, maximum 500 bps) unless a per-tier override exists. Creator and protocol shares are split by CREATOR_SHARE_BPS (default 7000 bps creator, floor 5000). On universal-economics launches, harvest carves the creator share on each leg by the summed weights of the participating value modules, then splits it pro-rata; the remainder goes to the 70/30 escrow. Protocol share accrues to the treasury and is claimable there without a hold check.
- Owner & admin controls
- The owner of the shared fee engine can set TOTAL_FEE_BPS (max 500), CREATOR_SHARE_BPS (min 5000), per-tier fee overrides, quote currency admissions, authorized callers, and transfer ownership; authorizers can also manage callers and quote currencies. The hook treasury address can be changed by the current treasury. The factory is set once via initializeFactory. Gate and value module addresses and parameters are fixed at construction (immutable), and there is no proxy or upgrade mechanism in the code shown. Whether the fee-engine owner key is a multisig or EOA is not determinable from this input.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap
beforeInitialize: restricts pool creation to the factory and checks the pair contains an admitted quote currency. beforeSwap: runs gate modules and reads self-op state before returning a zero delta. afterSwap (returns delta): takes the fee from swap output and returns it as a positive delta to net the take. beforeAddLiquidity: runs gate modules before liquidity is added.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: The fee engine owner can change global and per-tier fees within caps, admit or remove quote currencies, and authorize callers. The factory and treasury are set once or by the treasury itself. Gate and value module logic is set at deployment and cannot be swapped on the hook, but the modules themselves may hold their own admin powers that are not visible here.
Risk to user funds: Swappers pay the fee on output. Fees and seed-position collections are held in the hook balance until claimed by the creator (subject to hold gate) or treasury. Value modules receive fee slices during harvest and standard-tier accrual. The hook cannot move pool reserves directly; its take and delta are the only fund movements into the hook, and gate modules can block trading.
Security findings
- [info] Swap fee taken via return delta: afterSwap takes a percentage of the output currency and returns it as a positive delta, so every non-quote swap pays the fee; the fee is capped at 500 bps by the engine owner setter and per-tier overrides are capped at the same maximum.
- [medium] Owner can retune fee economics: The fee engine owner can raise TOTAL_FEE_BPS to 500 bps or lower CREATOR_SHARE_BPS to 5000 bps and set per-tier overrides, changing swap cost and creator share for all pools; this is a live privileged lever over existing launches.
- [medium] Gate modules can block swaps and adds: Four gate modules run before swaps and adds with no bypass for traders; a misconfigured or malicious gate module (or one whose parameters are set at launch) can revert all swaps and liquidity additions for the pool.
- [low] Hook holds escrowed fees: The hook keeps taken fees in its own balance until claim, and a claim pays from that balance using lenient transfers with a strict wrapper; funds sit in the hook contract rather than the pool manager.
- [low] Value modules receive funds mid-harvest: Harvest transfers slices to value modules before executing them inside an unlock; the modules are fixed at construction but their execute logic is outside this code, so trust in them is required.
Contract details
- Verified source
- Yes (LaunchpadHookCore)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 15,578 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, self-unlock
Pools using LaunchpadHookCore
- USDC / HOOKER (3.00% fee) — 24h volume $246, TVL $4.72K, 12 swaps today