Custom pricing hook on Base

Uniswap v4 Hook Contract 0xeca0529d1fcd11bdf16bc112694d653f0a8c0145 on Base · Custom pricing

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

What it does

A Uniswap v4 hook on Base that charges an owner-configurable fee on swaps and withdrawals and may apply whitelist-based treatment, with the exact logic unverified because no source is available.

How it works step by step

  • Runs an afterSwap callback that can take a fee from swap output through return deltas
  • Uses setHookFee to let the owner set the fee rate
  • Uses setSellTaxThreshold to let the owner tune a sell-side threshold
  • Runs afterRemoveLiquidity with a return-delta permission that can adjust withdrawn amounts
  • Calls take, mint and burn on the pool manager, indicating it holds ERC6909 claims
  • Checks an isWhitelist address list that may exempt some callers
Swap behaviour
afterSwap runs after each swap and can take a fee via return deltas based on the owner-set hook fee and sell tax threshold.
Liquidity behaviour
afterAddLiquidity and afterRemoveLiquidity callbacks are present, and afterRemoveLiquidity has a return-delta permission, so the hook can adjust balances on withdrawals; beforeAddLiquidity is a view stub and adds no restrictions that can be confirmed.
Fee behaviour
The hook charges a fee through afterSwap return deltas, with the rate set by an owner-controlled hookFee (uint24) and a sell-tax threshold; the exact fee formula cannot be confirmed without source.
Owner & admin controls
A privileged owner (storage slot 3 address, read by setSellTaxThreshold and setHookFee and the 0x1d45c7ee access check) can set the hook fee via setHookFee(uint24) and the sell tax threshold via setSellTaxThreshold(uint256); the 0x1d45c7ee selector with address,address arguments appears to be an admin or ownership function, and the bytecode also references an isWhitelist(address) check, suggesting a whitelist that can be managed.

Enabled Uniswap v4 callbacks

afterRemoveLiquidity, afterSwap, afterSwapReturnDelta, afterRemoveLiquidityReturnDelta

afterSwap is used to inspect swaps and set a fee via the return delta; afterSwapReturnDelta lets the hook take a share of the swap output; afterRemoveLiquidity is used to observe withdrawals; afterRemoveLiquidityReturnDelta lets the hook take part of the withdrawn amount.

Security & trust assessment

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

Who controls it: The owner can change the hook fee and sell tax threshold at will, and the whitelist logic can gate who benefits, so a privileged key can alter trader costs and LP returns after deployment.

Risk to user funds: The hook can take a share of swap output and withdrawn liquidity through return deltas and can move currency via take, mint and burn on the pool manager, so user proceeds can be reduced by the owner-set fee.

Security findings

  • [medium] Owner-adjustable hook fee: setHookFee(uint24) lets the owner set the fee taken through return deltas, with no visible cap in the decoded surface, so the fee could be raised to extreme levels.
  • [medium] Hook moves and holds pool currency: The hook calls take, mint and burn on the pool manager and uses ERC6909 claims, so it moves pool currency and can hold claim balances that affect user funds.
  • [medium] Return deltas reduce user proceeds: Return-delta permissions on swap and liquidity removal let the hook alter amounts users receive, which can be used to skim value from traders or LPs.
  • [low] Whitelist-based treatment: The decoded selectors include an isWhitelist check, indicating some addresses may receive different treatment; the list is controlled by the privileged key.
  • [info] Unverified source: No source is available, so the behaviour of the 0x1d45c7ee and unlockCallback paths and any upgrade or pause mechanisms cannot be verified.

Contract details

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

Pools using Custom pricing hook