PhleceV5Hook on Arc
Uniswap v4 Hook Contract 0xf486c15ab7d0a7e15788f268de682c5f1728e0cc on Arc · Launchpad · Verified contract
- Volume (24h)
- $153
- Value locked (TVL)
- $331
- All-time volume
- $1.08K
- Pools using this hook
- 1
- Swaps (24h)
- 3 (3 traders)
- Total swaps
- 25
What it does
A per-launch hook that charges a fee in the paired asset (such as USDC) on every swap of its pool, splitting it between token holders and the escrow, with a short launch-window surcharge to deter snipers.
How it works step by step
- Binds one pool at initialization to a launch token and a quote asset, and forces the pool's own LP fee to zero.
- Charges base fee plus creator buy or sell tax (1% to 10%) on every swap, always in the quote asset.
- Applies a 3-second launch snipe surcharge decaying from 99% to zero, with exact-output trades refused during that window.
- Splits fees: the holders' share is credited to the token's reward ledger, the remainder goes to the escrow, and the surcharge goes to the treasury.
- Records each block's opening tick and latches bonded and King of the Hill milestones from pool price without ever reverting a swap.
- Swap behaviour
- Every swap is charged a fee in the paired asset: the base 0.98% plus the creator's buy or sell tax, and during the first 3 seconds a surcharge decaying from 99%. The fee is taken on whichever side is the paired asset, in beforeSwap or afterSwap, with partial fills and exact-output trades in the launch window refused.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Every swap charges a fee in the paired quote asset: 0.98% base plus the creator's buy or sell tax (1% to 10%, whole percent), plus a 3-second launch snipe surcharge decaying from 99% to zero. The pool's own LP fee is overridden to zero. Fees are split: the dividend share (creator side after platform share times dividend percent) is credited to holders via the token's accrueQuoteReward, and the rest is taken to the escrow, with the surcharge and any unclaimable dividends going to the treasury.
- Owner & admin controls
- No pause or upgrade path found. Immutable config set at construction (portal, escrow, treasury, quote, executors, buy and sell tax). The portal alone can bind the bond tick, King of the Hill tick, snipe-exempt wallets, and the pool once; these are one-time bindings, not ongoing parameter changes. The poolManager is the only caller allowed for swap callbacks.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: validates the pool key, binds the pool to the launch token and quote asset, and records the launch time and block. beforeSwap: records the block's opening tick, computes and charges the fee on the specified side, applies the fee override to zero, and stores fee figures in transient storage. afterSwap: checks partial fills, charges the fee on the unspecified side when needed, routes fees to escrow and treasury, and updates the bonded and King of the Hill milestones. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take fee amounts out of the swap via deltas.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The portal can bind the bond tick, King of the Hill tick, dividend share and snipe-exempt wallets once, and it sets the pool. Snipe-exempt wallets skip the launch surcharge (not the base fee) after the launch block. No owner key can change fee rates after deployment.
Risk to user funds: The hook takes every fee in the quote asset through return deltas and holds no balances itself; fees flow straight to the escrow, treasury and token's reward accrual. A misconfigured or malicious escrow, treasury or token contract could redirect or lock those fees, and swaps can revert under the launch-window rules, but the hook does not hold user principal.
Security findings
- [medium] Surcharge exemption keyed on tx.origin: Snipe-exempt wallets are matched on tx.origin, so a listed signer can route trades through contracts and still skip the launch surcharge, while the list itself is fixed by the portal at launch.
- [low] Swaps can revert by design: Exact-output swaps during the 3-second launch window revert, and partial fills revert, so some trades can fail rather than settle.
- [info] Hook moves user funds via return deltas: The hook takes fees through return deltas and poolManager.take, so it holds and moves quote-asset value on every swap. Fee accounting depends on the external token's accrueQuoteReward and the escrow and treasury addresses being correct.
- [info] No upgrade path; taxes fixed at deployment: The contract is immutable with no proxy, so fee and tax parameters cannot be changed after deployment. Tax values are fixed at construction and validated to a 1% to 10% range.
- [info] Milestone reads cannot block swaps: Price reads for milestones use a try/catch on extsload, so a failed read cannot revert a swap; the milestone flags latch once set.
Contract details
- Verified source
- Yes (PhleceV5Hook)
- Compiler
- solc 0.8.24+commit.e11b9ed9
- Bytecode size
- 9,322 bytes
- Upgradeable proxy
- No
- Detected patterns
- launchpad, moves-currency, return-delta, tax
Pools using PhleceV5Hook
- USDC / PHLECE (Dynamic fee) — 24h volume $153, TVL $331, 3 swaps today