FXMemeHookV6 on Arc
Uniswap v4 Hook Contract 0xc555d361dee2062a0560678d3f663784887265cc on Arc · Dynamic fee · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $892
- All-time volume
- $141.91K
- Pools using this hook
- 20
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 1,217
What it does
A Uniswap v4 hook for FX meme-token pools that charges a fixed normal swap fee split into protocol, holder-reward and creator shares, plus a temporary launch-only buy surcharge that decays after activation.
How it works step by step
- Charges a fixed normal fee on swaps split into protocol, holder-reward and creator claims.
- Applies a decaying launch-only buy surcharge in the first seconds after market activation when enabled.
- Takes fees via before-swap and after-swap return deltas backed by native PoolManager claims.
- Records per-second liquidity observations for the protocol token pool on liquidity changes and swaps.
- Restricts pool initialization and market registration/activation to the registered initializer and the factory.
- Exposes claim and withdrawal paths so holders, creators and treasury can withdraw attributed fees.
- Swap behaviour
- Swaps are charged a normal fee in both directions and, for buys in opening-enabled markets, an additional decaying surcharge. Fees are taken as before-swap or after-swap return deltas and minted as native claims to the hook, which then distributes them to protocol, creator, treasury and holder reward accounts.
- Liquidity behaviour
- Hook observes liquidity: after add and remove liquidity it only records a per-second liquidity observation for the protocol token pool (via observations.record). It returns zero deltas and does not alter liquidity amounts. beforeAddLiquidity, beforeRemoveLiquidity, beforeDonate and afterDonate revert.
- Fee behaviour
- Fees are charged on every swap in the buy direction and both directions for the fixed normal fee: a protocol share of 0.10%, plus any reward and creator shares configured per market (Triangle markets use 0.15% total). Launch-only buy surcharges decay on a fixed curve from an initial bps down to zero over a few seconds after activation, when the market's opening scope applies. Fees are taken via native PoolManager claim minting (poolManager.mint) and accrued to holder, creator, treasury and protocol claimable balances.
- Owner & admin controls
- No owner or upgrade functions in the hook. Immutable addresses (poolManager, factory, treasury, revenueVault, buybackExecutor, observations, releasePolicy) are fixed at construction. The only setter-like state is protocolToken, set once on registration by the factory. Opening surcharge and fee parameters come from the immutable FXReleasePolicy. Registration and activation are restricted to the factory. No pause function found.
Enabled Uniswap v4 callbacks
beforeInitialize, afterAddLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: restricts pool initialization to the registered initializer for the registered pool key. afterAddLiquidity and afterRemoveLiquidity: record observation checkpoints for the protocol token pool only. beforeSwap: enforces market activation and swap bounds, computes the normal and opening fee, and takes the fee via a before-swap return delta. afterSwap: charges the fee on the unspecified side via an after-swap return delta, records observations for the protocol token pool, and clears transient context. beforeSwapReturnDelta and afterSwapReturnDelta: enable the hook to take a portion of swap amounts as fees.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged owner key exists in the hook; configuration is immutable after deployment. The factory is the only caller allowed to register and activate markets, so the factory's correctness determines which markets and pools can be created. The protocol token's creator fees are routed to a revenue vault, and treasury/revenue vault can withdraw attributed claims via takeRevenue.
Risk to user funds: The hook holds PoolManager claims rather than raw tokens, and withdrawals are gated by per-account claimable balances and liability checks. Users can exit their claimable balances via withdrawTo or deliver, and swaps can be blocked only if a market is not activated or the swap bounds are violated, not by any admin pause. Principal liquidity sits in FXMemePositions, which has no principal withdrawal API.
Security findings
- [info] Native claim-based fee accounting: Fees are settled by minting native PoolManager claims to the hook and tracking per-account claimable balances. Claimants withdraw via withdrawTo or deliver, which burn claims and take tokens out of the PoolManager. Accounting correctness is central to solvency.
- [low] Reentrancy paths between hook and rewards contract: Holder reward distribution calls out to the reward contract via notifyReward and reward payouts call back into withdrawTo on the hook. The hook guards against nested swaps and withdrawals with active and withdrawing flags, and the reward contract uses a processing lock.
- [info] Launch opening surcharge: Launch buy surcharges start at a fixed high initial bps and decay within seconds, so early buyers in opening-enabled markets pay a steep extra fee. This is by design but materially affects early trades.
- [info] No upgrade path: Immutable configuration and no proxy or owner reduce admin-key risk, but any bug in the factory, observations or reward accounting cannot be patched in place.
Contract details
- Verified source
- Yes (FXMemeHookV6)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 15,084 bytes
- Upgradeable proxy
- No
- Detected patterns
- liquidity-management, moves-currency, return-delta, self-unlock
Pools using FXMemeHookV6
- USDC / FX (0.20% fee) — 24h volume $0, TVL $843, 0 swaps today
- USDC / YUAN (0.05% fee) — 24h volume $0, TVL $0.14, 0 swaps today
- EURC / YUAN (0.05% fee) — 24h volume $0, TVL $1.11, 0 swaps today
- USDC / PEG (0.20% fee) — 24h volume $0, TVL $6.18, 0 swaps today
- wARS / €1 (0.05% fee) — 24h volume $0, TVL $0.95, 0 swaps today
- USDC / €1 (0.05% fee) — 24h volume $0, TVL $1.02, 0 swaps today
- USDC / FXCAT (0.05% fee) — 24h volume $0, TVL $0.10, 0 swaps today
- USDC / KIRK (0.05% fee) — 24h volume $0, TVL $0.07, 0 swaps today
- EURC / KIRK (0.05% fee) — 24h volume $0, TVL $15, 0 swaps today
- FXCAT / EURC (0.05% fee) — 24h volume $0, TVL $14, 0 swaps today
- wARS / PI (0.20% fee) — 24h volume $0, TVL $9.69, 0 swaps today
- EURC / FX (0.20% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / PRINTER (0.20% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / ARGPESO (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- wARS / ARGPESO (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- EURC / EURC (0.20% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / ARCUS (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- EURC / ARCUS (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USDC (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / EURC (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today