Likely custom pricing hook on Base

Uniswap v4 Hook Contract 0xd89875d13a30c5c0098e8732a9959f7195ddc088 on Base · 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 changes swap amounts by settling part of each trade itself, so the effect on what traders pay or receive depends on its unverified internal logic and cannot be stated with confidence.

How it works step by step

  • Implements beforeSwap, which can return a delta so the hook itself settles part of a swap instead of the pool's normal AMM path
  • Calls take(currency, recipient, amount) on the PoolManager, so the hook moves pool currency out of the pool during swaps
  • Writes to storage slots 0, 1 and 2 on each swap, indicating per-call or cumulative bookkeeping
  • Reads a packed uint64 pair from slot 0 and a uint256 from slot 1 and slot 2 to drive the swap logic
  • Uses Panic(uint256) revert paths, so it contains checked arithmetic or assertions
Swap behaviour
On every swap the hook's beforeSwap runs first, reads its stored state, may take currency from the pool through take(), and returns a delta that changes how much the swapper receives or pays before the pool's own swap math is applied.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Uses the pool's static fee.
Owner & admin controls
No admin controls found.

Enabled Uniswap v4 callbacks

beforeSwap, beforeSwapReturnDelta

beforeSwap is used to run custom logic and return a delta before the pool's swap math, and beforeSwapReturnDelta is used to let that delta alter the swap amounts and move currency via take().

Security & trust assessment

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

Who controls it: No owner or admin functions were found in the decoded selectors, so no privileged key was identified; however, the storage writes may be controlled by external callers through swap parameters, which cannot be ruled out without source.

Risk to user funds: The hook can take currency from the pool via take() and alter swap deltas, so it can affect the amounts traders receive and the balances held by the pool, but the exact conditions cannot be determined from bytecode.

Security findings

  • [high] Hook moves pool currency via return deltas: The bytecode calls take(address,address,uint256) from beforeSwap and has beforeSwapReturnDelta enabled, so the hook can withdraw tokens from the pool and alter swap amounts on each trade.
  • [medium] Storage written on every swap: beforeSwap writes to slots 0, 1 and 2 on each call, so swap outcomes depend on mutable hook state whose update logic cannot be verified without source.
  • [medium] Recipient and amount not verifiable: The recipient and amount passed to take() are derived from calldata and storage that cannot be confirmed from bytecode alone, so the exact destination of moved funds is unclear.
  • [info] No source to audit: Source is not verified, so conclusions rest on decoded selectors and storage layout rather than readable logic.

Contract details

Verified source
No
Bytecode size
1,228 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using Likely custom pricing hook