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
- ETH / DEPOTSPAR (1.00% fee) — 24h volume $0, TVL $0, 0 swaps today