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
- ETH / MOTE (0.00% fee) — 24h volume $19.02K, TVL $23, 49 swaps today