Rewards hook on Ethereum

Uniswap v4 Hook Contract 0x82f636a92364d13754d7b3e72d460f0be20a28cc on Ethereum · Rewards

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

What it does

This hook charges swappers a tax that starts high and steps down over time on top of the pool fee, and it collects the fee for a team address that can flush it out.

How it works step by step

  • Sets up a pool-specific tax schedule at initialization: taxBps starts at INITIAL_TAX_BPS and decays in TAX_STEP_BPS steps over TAX_MINUTES, tracked from startedAt.
  • beforeSwap and afterSwap read the stored tax and apply a hook fee (HOOK_FEE_BPS, BPS denominator) using return deltas, so the hook can take a cut of swap amounts.
  • Collected value is held as ERC6909 claims (mint/burn/totalCredits) against the PoolManager and is flushed out to a token recipient or TEAM address via flush and flushAll with MIN and MAX flush bounds.
  • Uses unlock/unlockCallback to self-unlock the PoolManager and settle or take currency during flushes.
  • beforeAddLiquidity is gated and the hook can deposit rewards via depositRewards on a separate vault (VAULT, IMD references).
Swap behaviour
On swaps the hook applies a time-decaying tax (taxBps) on top of the pool's LP fee and takes a hook fee through before/after swap return deltas, so swappers pay more early in the tax window and less as the tax decays; the exact direction-dependence (imdIsCurrency0) could not be fully confirmed from bytecode.
Liquidity behaviour
beforeAddLiquidity is implemented and can restrict or route liquidity additions; no removal callback is enabled. Liquidity providers are not directly taxed by the hook from the permissions shown.
Fee behaviour
Dynamic tax: taxBps starts at INITIAL_TAX_BPS and steps down by TAX_STEP_BPS over TAX_MINUTES, plus a fixed HOOK_FEE_BPS taken via return deltas; the pool also charges LP_FEE.
Owner & admin controls
No owner or admin getter was decoded and no pause function is visible. Flush recipient and tax parameters appear as constants (TEAM, IMD, BPS, TAX_STEP_BPS, etc.), so they are likely not changeable, but this is inferred from selectors only.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize records pool configuration and starts the tax clock; beforeAddLiquidity gates liquidity additions; beforeSwap computes the tax and can return a delta; afterSwap settles the hook fee and reads the swap result; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of swap amounts.

Security & trust assessment

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

Who controls it: If the TEAM address is a single key, that key can drain accumulated hook fee claims via flush operations; no upgrade or pause path was seen, so the hook is not obviously upgradeable.

Risk to user funds: The hook takes a percentage of swap amounts as ERC6909 claims and can block liquidity additions through beforeAddLiquidity; it does not hold pool principal beyond accrued fees, but accrued fees are movable by the flush path.

Security findings

  • [medium] Return-delta fee capture: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can take a share of every swap in the pool's currencies. Users pay this tax on top of the LP fee.
  • [medium] Flush to a fixed recipient: flush and flushAll move collected ERC6909 claims out to a recipient tied to the TEAM constant via unlock/take; if the recipient is an EOA or multisig, the team can withdraw accumulated hook fees.
  • [info] Self-unlock callback: unlockCallback is reachable from the PoolManager to settle flushes; its OnlyPoolManager guard appears present, which limits external triggering.
  • [info] Unverified logic: Without verified source, the exact tax math, direction handling and reward deposit paths were not fully confirmed and should be reviewed.

Contract details

Verified source
No
Bytecode size
11,106 bytes
Upgradeable proxy
No
Detected patterns
erc20, erc6909-claims, liquidity-management, moves-currency, return-delta, rewards, self-unlock, tax

Pools using Rewards hook