Custom pricing hook on Ethereum

Uniswap v4 Hook Contract 0x736361f1ffa0f2407724589addcde144f047a0cc on Ethereum · Custom pricing

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

What it does

This hook takes a basis-points fee on swaps in the pool currency, and processFees converts the accumulated fees into IMD buybacks and burns, so swappers pay the hook fee on top of the pool's static LP fee while liquidity providers are not directly charged.

How it works step by step

  • Hook exposes a pool-keyed fee and buyback accounting structure, with functions for processing accumulated fees (processFees) and tracking totalBuybackIMD and totalBurned, suggesting fees are converted into an IMD token and burned.
  • Uses beforeSwap and afterSwap with return deltas, meaning the hook can take a share of swap amounts and settle them through the PoolManager as ERC-6909 claims.
  • Performs its own unlock flow (self-unlock tag, unlockCallback) to move currency in and out of the PoolManager during fee processing.
  • Exposes quoteSwap, a nonpayable quoting helper that reverts with QuoteResult, allowing off-chain simulation of swap outcomes.
  • Fixed parameters are exposed as constants (LP_FEE, FEE_BPS, TICK_SPACING, IMD), indicating a static LP fee plus a hook-level fee in basis points.
Swap behaviour
beforeSwap and afterSwap run on every swap and can take a fee through return deltas; the hook settles the fee in the pool currency. Which trade direction pays more cannot be determined from the decoded bytecode.
Liquidity behaviour
Before and after add and remove liquidity callbacks are present and return the selector only, so liquidity operations are not gated or altered beyond the pool's own logic.
Fee behaviour
A hook fee expressed in basis points (FEE_BPS) is taken on swaps through return deltas and accumulated for processFees, which converts or distributes it into buyback and burn; LP_FEE is exposed as a constant alongside it.
Owner & admin controls
No admin controls found in decoded selectors; no owner or pause function was identified. Upgradability and parameter changes could not be determined.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize validates pool setup; beforeSwap sets the swap-time fee and return delta; afterSwap takes the post-swap fee via return delta and updates accounting; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take currency from swaps.

Security & trust assessment

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

Who controls it: No privileged key is evident from the decoded selectors; if an owner or upgrade path exists in the bytecode it was not recovered, so the extent of centralization cannot be confirmed.

Risk to user funds: The hook can hold and move pool-currency amounts through return deltas and ERC-6909 claims during swaps and fee processing, so user swap proceeds are exposed to the hook fee logic.

Security findings

  • [medium] Hook takes currency via return deltas: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the bytecode contains moves-currency and erc6909 claim selectors, so the hook can take a portion of each swap's tokens.
  • [low] Fee processing performs token transfers and burns: processFees is a public nonpayable function using the self-unlock path, and the storage tracks totalBurned and totalBuybackIMD, so anyone can trigger conversion and burn of accumulated fees.
  • [info] No pause or access check identified: No owner or access-control selector was decoded, so the hook appears to run permissionlessly with no emergency stop.

Contract details

Verified source
No
Bytecode size
10,589 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, return-delta, self-unlock

Pools using Custom pricing hook