Fee sharing hook on Polygon

Uniswap v4 Hook Contract 0x2d47f85cbd93f8a1bdc9518cd418c8f284cb5080 on Polygon · Fee sharing

Volume (24h)
$0.29
Value locked (TVL)
$13
All-time volume
$0.29
Pools using this hook
5
Swaps (24h)
1 (1 traders)
Total swaps
1

What it does

This hook is an owner-managed fee-sharing hook tied to a prediction market, where the owner sets a capped swap fee and its recipient and can pause swaps, though the exact fee direction and split are not confirmed from the bytecode.

How it works step by step

  • Hook implements afterInitialize and beforeSwap callbacks only, and is owned by a single Ownable account that can pause it
  • On pool initialization it records the pool against a prediction market id, indicating the pool is tied to an outcome market
  • beforeSwap reads per-pool market state and the fee configuration, and the hook exposes a feeBps value and a feeRecipient address for fee sharing
  • Owner can set the fee in basis points (up to a MAX_FEE_BPS cap) and the fee recipient via setFee
  • Owner can pause and unpause the hook via setPaused, and redeem and oracle-related functions (assertTruth, assertionResolvedCallback, markets, outcome token implementation) indicate a UMA-style prediction market settlement flow
Swap behaviour
beforeSwap is enabled and reads pool and market state from storage and the fee configuration; a dynamic fee override may be applied, but the exact direction and sizing of the fee cannot be confirmed from decoded bytecode alone.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Fee is set by the owner via setFee in basis points capped by MAX_FEE_BPS, with a configurable feeRecipient; the hook appears to share a fee stream with the recipient, but the precise fee split and whether it applies to all swaps or only some cannot be determined from decoded bytecode.
Owner & admin controls
Owner (Ownable) can pause and unpause the hook, change the fee in basis points and fee recipient, transfer or renounce ownership; the contract also has an outcome token implementation reference and oracle-related addresses.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap

afterInitialize registers the pool against a market, and beforeSwap applies market-aware logic and the owner-configured fee on swaps.

Security & trust assessment

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

Who controls it: A single owner key can change the fee up to the cap, redirect the fee recipient, and pause swaps, so a compromised or malicious key can directly affect traders and LPs.

Risk to user funds: The hook does not appear to hold user liquidity via return deltas, but it can block swaps through pause and redirect fee income; redeem functions move market collateral, which is a separate exposure.

Security findings

  • [medium] Owner can change fee and recipient: setFee(uint16,address) lets the owner redirect fee revenue and set the fee up to the MAX_FEE_BPS cap, which can be used to extract value from traders.
  • [medium] Pausable hook can block swaps: setPaused(bool) toggles a pause flag that is read in beforeSwap, so the owner can halt swaps on pools using this hook.
  • [low] Single owner key: Ownable pattern with transferOwnership and renounceOwnership means one key controls fees, pause state and recipient.
  • [info] Oracle-dependent settlement: Market resolution depends on an external oracle callback (assertionResolvedCallback), so outcomes rely on the oracle's correctness and liveness.

Contract details

Verified source
No
Bytecode size
13,143 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, fee-sharing, ownable, pausable

Pools using Fee sharing hook