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