Rewards hook on Monad
Uniswap v4 Hook Contract 0x41b6b779455646df1e9682d0d11d58ae405280cc on Monad · Rewards
- Volume (24h)
- $4.83
- Value locked (TVL)
- $1.05K
- All-time volume
- $643.08K
- Pools using this hook
- 16
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 3,748
What it does
A Uniswap v4 hook that appears to skim a fee from swaps into protocol, holder and treasury reward buckets distributed in epochs, with a claim window for LPs and holders.
How it works step by step
- Runs logic on every swap via beforeSwap and afterSwap callbacks
- Takes a portion of swap amounts through return-delta permissions
- Splits fees between protocol, holder and treasury using BPS constants
- Tracks liquidity actions to participate in epoch-based rewards
- Manages epochs with a fixed duration and a time-limited claim window
- Restricts pool registration to an owner-set factory
- Swap behaviour
- beforeSwap and afterSwap run on every swap, taking a share of swap amounts via return deltas to fund fees and rewards for the epoch system.
- Liquidity behaviour
- beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors are present and the hook has an epoch-based reward/claim mechanism (EPOCH_DURATION, CLAIM_WINDOW, currentEpochId, claim-window errors). Liquidity callbacks appear to be used for tracking epoch participation; the precise effect is not confirmed.
- Fee behaviour
- Bytecode exposes constants and view getters named TOTAL_FEE_BPS, PROTOCOL_FEE_BPS, HOLDER_FEE_BPS and BPS, and a treasury address is referenced, indicating a swap fee split between protocol, holders and treasury. The exact fee value and how it is taken (via return deltas) could not be confirmed without source.
- Owner & admin controls
- Owner (Ownable2Step: transferOwnership, acceptOwnership, renounceOwnership) can call setFactory to set the authorized factory address; the factory can register pools. Owner-only parameters appear to include fee constants (TOTAL_FEE_BPS, PROTOCOL_FEE_BPS, HOLDER_FEE_BPS, BPS, MIN_REWARD_SUPPLY, EPOCH_DURATION, CLAIM_WINDOW) which are exposed as views; whether they are mutable could not be determined from bytecode alone. No upgrade proxy or pause function was identified.
Enabled Uniswap v4 callbacks
beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeSwap and afterSwap are used to run swap-time logic and fee accounting; beforeSwapReturnDelta and afterSwapReturnDelta indicate the hook takes a portion of swap amounts (fees or rewards) through return deltas and moves currency via take/unlock.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The owner controls the factory address via setFactory, which governs who can register pools; the owner also controls ownership transfer. If fee or reward parameters are owner-settable, the owner could alter fee splits, though this could not be confirmed from bytecode.
Risk to user funds: Because the hook enables return-delta permissions and moves currency, it can hold a portion of swap and reward funds in its own accounting. Whether it can block swaps or pull pool funds beyond fees could not be confirmed without source.
Security findings
- [medium] Hook takes swap currency via return deltas: The hook has beforeSwapReturnDelta and afterSwapReturnDelta enabled and includes a take/moves-currency path, so it can withhold a share of swap amounts into its own accounting.
- [medium] Owner-controlled factory and ownership: The owner can call setFactory to change which factory may register pools and the owner role can be transferred, so a compromised owner key could redirect pool registration.
- [info] Time-limited reward claims: Reward and fee logic relies on epoch windows and a claim window; unclaimed rewards may expire after the claim window closes, which users should be aware of.
- [info] Unverified source: Source is not verified, so exact fee rates, admin setter functions and reward accounting cannot be fully confirmed from the decoded selectors alone.
Contract details
- Verified source
- No
- Bytecode size
- 12,570 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, ownable, return-delta, self-unlock
Pools using Rewards hook
- WMON / RIVEX (0.00% fee) — 24h volume $4.83, TVL $736, 1 swaps today
- WMON / MONADCAT (0.00% fee) — 24h volume $0, TVL $134, 0 swaps today
- WMON / RCAT (0.00% fee) — 24h volume $0, TVL $59, 0 swaps today
- WMON / ANAGO (0.00% fee) — 24h volume $0, TVL $19, 0 swaps today
- WMON / RCAT (0.00% fee) — 24h volume $0, TVL $17, 0 swaps today
- WMON / 143 (0.00% fee) — 24h volume $0, TVL $74, 0 swaps today
- WMON / RVXSTR (0.00% fee) — 24h volume $0, TVL $3.35, 0 swaps today
- MONDOG / WMON (0.00% fee) — 24h volume $0, TVL $5.12, 0 swaps today
- MONCAT / WMON (0.00% fee) — 24h volume $0, TVL $2.70, 0 swaps today
- WMON / CHOSTONK (0.00% fee) — 24h volume $0, TVL $1.31, 0 swaps today
- XAUt0 / SIX (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- XAUt0 / MOLANDAK (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- aSNDK / SNDK (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- AMC / aAMD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- XAUt0 / GOLDINU (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- A / aDELL (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today