Custom pricing hook on Arbitrum

Uniswap v4 Hook Contract 0xa86f96a27ceb79252d5dc2ad95e28e3ecc1ba888 on Arbitrum · Custom pricing

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
0

What it does

An unverified custom-pricing hook that appears to run its own quote logic and fee policy on Uniswap v4 swaps and manage per-pool state.

How it works step by step

  • Registers per-pool state in beforeInitialize and tracks initialization via initialized and initializedLength
  • Runs custom swap pricing in beforeSwap using quote/quoteFor and an external query/tryQuery source
  • Can take or return currency deltas during swaps via beforeSwapReturnDelta, settling through take/settle/sync
  • Applies a hook-managed fee in pips with fee exemptions per address (isFeeExempt, exempt0-3)
  • Gates liquidity additions in beforeAddLiquidity and exposes pseudoTotalValueLocked for pool accounting
  • Exposes sweepDust to clear leftover token balances
Swap behaviour
beforeSwap is enabled with return-delta permission, so the hook takes over part of swap settlement, pricing swaps through quote functions that call an external query source, and can charge a fee against feePips.
Liquidity behaviour
beforeAddLiquidity is enabled and afterRemoveLiquidity/beforeRemoveLiquidity are present as selectors; pseudoTotalValueLocked(bytes32) and initialized/initializedLength suggest the hook tracks pool-specific liquidity state, but the rules are not confirmed.
Fee behaviour
Exposes feePips() and MAX_FEE_PIPS() with a FEE_PIPS_DENOMINATOR, suggesting a hook-managed fee taken via beforeSwap, with fee exemptions per address (isFeeExempt, exempt0-3); the exact fee formula cannot be confirmed from the decoded selectors.
Owner & admin controls
Unverified bytecode exposes owner-style getters (exempt0-3, trustedRouter, poolManager, vault, wooPP, feePips, MAX_FEE_PIPS) and sweepDust(address) which is nonpayable and likely owner-restricted; no pause or upgrade selector was decoded, but exact access control cannot be confirmed without source.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeInitialize registers pool-specific state on pool creation; beforeAddLiquidity gates or records liquidity additions; beforeSwap runs custom swap logic and can take or return a delta (beforeSwapReturnDelta), which lets it act as a custom market maker; afterInitialize, afterSwap and the liquidity-removal callbacks are present as selectors but are not enabled by the address permissions.

Security & trust assessment

Risk level: medium (decoded bytecode, low confidence).

Who controls it: A privileged key could likely sweep dust tokens, set exemptions and possibly fees, and potentially redirect pricing if quote parameters are owner-settable; the extent cannot be verified without source.

Risk to user funds: The hook can take and return deltas during swaps and call external swap and quote contracts, so it can influence the amounts users receive and may hold dust or pool balances; funds exposure is real but the exact custody path cannot be confirmed.

Security findings

  • [medium] Hook returns deltas and moves currency during swaps: beforeSwapReturnDelta is enabled, so the hook can take or return tokens on swaps and move pool currency through the pool manager (take/settle/sync selectors are present).
  • [medium] Swap pricing relies on an external quote source: Pricing is computed in-hook through quote/quoteFor functions and external query/tryQuery calls to an external contract, so swap outcomes depend on that external price source.
  • [medium] Dust sweep function may be privileged: sweepDust(address) is an unrestricted-looking nonpayable function in the decoded selectors; if it lacks an owner check it could move leftover balances.
  • [info] Source not verified: Contract is unverified, so behaviour is inferred from selectors and storage only; a custom-pricing hook of this kind requires careful review before trusting it with liquidity.

Contract details

Verified source
No
Bytecode size
14,259 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using Custom pricing hook