Token hook on Arc

Uniswap v4 Hook Contract 0x28a516a99fe93eaacdbf082512c7bfcd6f63a0cc on Arc · Token

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

What it does

Charges a fixed tax on swaps in this pool and accumulates it in the hook until it is flushed to a tax recipient.

How it works step by step

  • Takes TAX_BPS basis points of swap output via afterSwapReturnDelta
  • Tracks accrued tax in pendingTax and cumulative totalTaxCollected
  • Holds collected tax in the hook contract until flushTax() is called
  • Forwards flushed tax to taxRecipient
  • Exposes launchToken() and an afterInitialize hook, suggesting a token launch flow
Swap behaviour
beforeSwap and afterSwap run on each swap; afterSwap applies the tax via return delta and records it in pendingTax and totalTaxCollected.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity are dispatched; their bodies appear to be pass-through checks, with no clear state changes identified.
Fee behaviour
Applies a tax of TAX_BPS basis points on swaps via afterSwap return delta; accrued tax is tracked in pendingTax/totalTaxCollected and forwarded to taxRecipient when flushTax() is called. Exact tax rate and base token cannot be determined from the bytecode alone.
Owner & admin controls
Decoded functions show a flushTax() with no visible owner or pause check in the selector list; taxRecipient() is readable, but whether it is settable or immutable cannot be confirmed without source. No explicit owner setter was decoded.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: validates or sets up the pool at creation. beforeSwap: pre-swap checks or setup. afterSwap: calculates and collects the tax on the swap output. beforeSwapReturnDelta and afterSwapReturnDelta: let the hook take a share of swap amounts, which is how the tax is taken.

Security & trust assessment

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

Who controls it: A privileged key controlling taxRecipient or the ability to change tax parameters could redirect accrued tax; the presence of flushTax and launchToken suggests a launchpad-style deployer role, but this is unconfirmed.

Risk to user funds: The hook holds accrued tax tokens within its own balance between swaps and flushTax() calls, and it can take a share of every swap's output via return delta. Users pay the tax on swaps that route through this pool.

Security findings

  • [medium] Hook takes swap funds via return delta: The hook uses afterSwapReturnDelta, so it can take a portion of every swap's output token and hold it in the contract until flushTax() is called.
  • [info] Currency movement through PoolManager: The take(address,address,uint256) selector appears in the bytecode, indicating the hook moves currency through the PoolManager.
  • [info] Reentrancy guard present: A ReentrancyGuardReentrantCall error selector is present, suggesting reentrancy protection on at least some entry points.
  • [medium] Mutability of tax parameters unknown: Without source, it is unclear whether taxRecipient or the tax rate can be changed after deployment, which limits assessment of admin risk.

Contract details

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

Pools using Token hook