FociMemeHook on Arc
Uniswap v4 Hook Contract 0xf847790b6fa5da300bb3f56f10d743e71e98e044 on Arc · Fee sharing · Verified contract
- Volume (24h)
- $1.42K
- Value locked (TVL)
- $13.00K
- All-time volume
- $3.87M
- Pools using this hook
- 2
- Swaps (24h)
- 33 (27 traders)
- Total swaps
- 36,700
What it does
A fee-collecting hook for graduated launchpad pools that takes a small swap fee plus a creator tax on each trade and periodically converts memecoin fees back into the quote asset before splitting them between protocol, creator and optional referrers.
How it works step by step
- Restricts pool initialization to the factory and records each pool's memecoin, quote token, creator, and frozen fee terms.
- Charges a per-swap hook fee (default 1%, discounted for referred traders) plus the creator's tax on the unspecified leg via afterSwapReturnDelta.
- Splits collected quote-currency fees between the protocol (default 30%) and creator, while creator tax goes entirely to the creator.
- Routes a share of fees to referrers bound through a shared registry, paying them out later through claimReferralFees.
- Converts accumulated memecoin fees to the quote token in batched internal swaps bounded by a price-impact limit and caller-supplied minimum output, with optional owner rescue of pending balances.
- Swap behaviour
- On each swap afterSwap takes hookFeeBps plus creatorTaxBps of the unspecified currency from the pool and credits the amounts to pending buckets, reducing the swapper's output by that amount via return delta. Referred traders receive a discounted hook fee.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Every swap charges hookFeeBps (default 1%, reduced by referralDiscountBps when the trader has a referrer) plus the pool's creatorTaxBps on the unspecified currency, taken via poolManager.take. Referral share is carved off the protocol fee first; the remainder is split between protocol (protocolFeeShareBps, default 30%) and creator, while the creator tax goes entirely to the creator. Memecoin-denominated fees are converted to the quote token by an internal swap in sweepPoolFees, bounded by maxInternalPriceImpactBps and a caller-supplied minimum output.
- Owner & admin controls
- Owner (Ownable2Step, renounce disabled) can set factory once, referral registry once, protocol fee recipient, protocol fee share (up to 50%), hook fee bps (up to 10%), max internal price impact, referral discount and share (each up to 50%), and the fee sweep operator; owner can also call rescuePoolFees on any registered pool to pay out pending fees directly. Creator can rotate their pool's creator fee recipient through the factory. No pause mechanism and no upgrade path found (contract is not proxied).
Enabled Uniswap v4 callbacks
beforeInitialize, afterSwap, afterSwapReturnDelta
beforeInitialize restricts pool initialization to the factory so every pool bearing this hook is registered with its memecoin, quote token and fee terms. afterSwap takes the fee and creator tax from the swap's unspecified leg and credits pending balances. afterSwapReturnDelta lets the hook claim that amount so the swapper receives less output.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner cannot pause trading or seize user LP positions, but can change the protocol fee split, hook fee up to 10%, referral terms, and the sweep operator, which controls when memecoin fees are converted and at what minimum output. The owner can call rescuePoolFees to redirect pending fee balances to the protocol and creator addresses. Changes to the fee share affect future sweeps for all pools using the live policy.
Risk to user funds: The hook takes a 1% plus creator-tax slice of the unspecified side of every swap via return delta, so swappers receive less than the pool quotes. It holds pending fee balances transiently and never custodies LP principal; LP liquidity is not callback-managed. The owner can rescue pending fees, and the sweep operator controls memecoin-to-quote conversion prices.
Security findings
- [medium] Fee conversion relies on operator-supplied minimum output: sweepPoolFees converts memecoin fees to quote with the swap's minimum set by the caller. Only the designated sweep operator can run price-sensitive conversions, so a compromised or malicious operator could choose a near-zero minimum and be sandwiched or accept a bad price, costing the protocol and creator fee value.
- [low] Owner can adjust fee terms and sweep operator: setFeeSweepOperator and the owner-controlled fee parameters can be changed at any time, so a privileged key can direct conversions or adjust the fee split for future trades, though each is capped by constants (hook fee 10%, protocol share 50%).
- [low] Referrer identity relies on unverified msgSender(): The referral binding trusts the msgSender() reported by the calling router. A hostile router contract can name arbitrary traders, letting it bind a stranger's referrer or claim another user's existing binding to obtain the discount on swaps not made by that user.
- [info] Owner emergency fee rescue: rescuePoolFees lets the owner pay pending quote and memecoin fees directly to the protocol and creator, bypassing the escrow and conversion path, which is intended for broken pair tokens but gives the owner discretionary access to accrued fee balances.
Contract details
- Verified source
- Yes (FociMemeHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 14,495 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, ownable, return-delta, self-unlock, tax
Pools using FociMemeHook
- USDC / FOCI (0.00% fee) — 24h volume $1.42K, TVL $9.99K, 33 swaps today
- USDC / Fest (0.00% fee) — 24h volume $0, TVL $3.01K, 0 swaps today