Rewards hook on Ethereum

Uniswap v4 Hook Contract 0xc850b37394f1b162eab80ae7855ccb01ee4960cc on Ethereum · Rewards

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

What it does

This hook charges extra tax on early-window buys and sells, with the proceeds split between a reward pool and team and platform recipients, so trades during the protection window pay more than later trades.

How it works step by step

  • Runs a taxed launch-style pool where buys and sells in the early window pay an additional tax that is split between rewards and team fees.
  • Tracks a protection window with per-address purchase tracking and a per-buyer opening tax, read through boughtDuringProtection and openingTaxForBuyer.
  • Accumulates a share of swap fees into pending rewards per round, and funds rounds via fundRound and flushRewards.
  • Routes platform and team basis-point shares of collected fees to a platform recipient and a team recipient, with claimTeamFees for the team side.
  • Uses beforeSwapReturnDelta and afterSwapReturnDelta to take a portion of swap amounts as hook-held currency, then settles it through the pool manager using the self-unlock callback.
Swap behaviour
Swaps go through beforeSwap and afterSwap. Swaps during the protection window and buys by addresses subject to the opening tax pay an additional tax taken through return deltas, which is higher than for later trades. Trades outside the window and by unrestricted addresses pay only the base fee; the exact rates could not be confirmed from bytecode alone.
Liquidity behaviour
Liquidity add and remove hooks are present and gate or observe LP actions, and afterAddLiquidity and afterRemoveLiquidity are present, but no specific LP-side fee or lock logic could be confirmed from the decoded functions.
Fee behaviour
The hook takes a tax portion of swap flows via return deltas and splits it into reward, platform, and team shares using REWARD_BPS, TEAM_BPS, and platformBps; the pool LP fee is exposed as lpFee. Exact percentages are not determinable without source.
Owner & admin controls
Initialization and configuration parameters such as teamRecipient, feeVault, and openingTaxVault are stored and exposed; no owner function was clearly identified in the decoded selectors, but the presence of configurable recipients and vaults suggests privileged setup. Whether these can be changed after initialization could not be confirmed.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets initial state and the epoch start; beforeSwap applies protection checks and tax pricing; afterSwap records fee accruals and buyer state; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of swap amounts; the liquidity and donate callbacks are present for observation and gating.

Security & trust assessment

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

Who controls it: A privileged party that configures recipients, vaults, and tax parameters could redirect fee and tax flows; the decoded bytecode does not show a clear owner or upgrade path.

Risk to user funds: The hook can take a share of swap amounts through return deltas and hold them until flushed or claimed, so traders in the taxed window pay the tax from their swap amounts.

Security findings

  • [medium] Hook takes tokens via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the hook moves currency via the pool manager, so a portion of every taxed swap is diverted to the hook and its recipients.
  • [medium] Protection window gates buyers: boughtDuringProtection and openingTaxVault indicate per-address state that changes trade pricing for buyers in the early window, which can penalise or block certain addresses.
  • [low] Privileged recipient and vault addresses: teamRecipient, feeVault, and PLATFORM_RECIPIENT receive fees; if these are set by a privileged key, that key controls where tax proceeds go.
  • [low] Self-unlock callback: unlockCallback and the unlock path let the hook settle balances during swaps, which increases the code paths that handle user funds.

Contract details

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

Pools using Rewards hook