Likely custom pricing hook on BNB Chain

Uniswap v4 Hook Contract 0xf2383ed3607c1afb81543b1dcc2f4eac0e488088 on BNB Chain · Custom pricing

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

What it does

An owner-controlled Uniswap v4 hook that intercepts swaps before execution, with a return delta that can adjust swap amounts and per-pool fee settings, plus a pause switch.

How it works step by step

  • Runs logic before each swap through the beforeSwap callback
  • Returns a balance delta via beforeSwapReturnDelta, allowing it to take or give tokens from swaps
  • Stores a per-pool fee that the owner can set with setPoolFee
  • Lets the owner pause and unpause the hook with setPaused
  • Exposes a generic execute function and ownership transfer controlled by the owner
Swap behaviour
beforeSwap runs on every swap in pools using this hook and can change the swap outcome via return delta, and the owner can pause swap handling.
Liquidity behaviour
No liquidity callbacks are enabled in the hook permissions; liquidity-related selectors exist in the bytecode but are not active permissions.
Fee behaviour
Per-pool fee is stored and set by the owner through setPoolFee(bytes32,uint24); the hook appears to be able to override swap fees through beforeSwap return values, but the exact fee logic cannot be confirmed without source.
Owner & admin controls
Owner (storage slot 0) can transfer ownership via setOwner(address), pause or unpause swaps via setPaused(bool), set per-pool fees via setPoolFee(bytes32,uint24), and call execute(address,uint256,bytes) and a second nonpayable call that appear to allow arbitrary calls on behalf of the hook; the owner is also readable via owner().

Enabled Uniswap v4 callbacks

beforeSwap, beforeSwapReturnDelta

beforeSwap: runs before each swap and can influence the swap, including fee override or pause logic. beforeSwapReturnDelta: allows the hook to return a delta that changes the amounts settled for the swap, so it can take or give tokens from swaps.

Security & trust assessment

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

Who controls it: The owner can pause swaps, change per-pool fees, transfer ownership, and potentially execute arbitrary calls through execute, so a compromised or malicious key could block trading, extract value via the return delta, or redirect the hook's funds.

Risk to user funds: The hook can take value from swaps through its return delta and the owner can change fees, pause trading, and potentially move assets via execute, so user funds routed through this pool depend on the owner's honesty and key security.

Security findings

  • [medium] Return delta can take value from swaps: The hook has beforeSwapReturnDelta, so it can take a portion of swap amounts; the owner-controlled fee and delta logic determines how much is taken from traders.
  • [medium] Owner can pause swaps: setPaused(bool) lets the owner halt the hook's swap handling, which can block trading in pools that depend on it.
  • [medium] Owner can change fees and ownership instantly: setPoolFee(bytes32,uint24) and setOwner(address) are callable by the owner without timelock visible in the bytecode, so fee and ownership changes take effect immediately.
  • [high] Generic execute function could move hook-held assets: execute(address,uint256,bytes) is a generic call function, which if owner-gated can be used to move any tokens or assets held by the hook contract.
  • [info] Unverified source: Source is not verified, so the intent of the generic execution and return delta logic cannot be confirmed from the bytecode alone.

Contract details

Verified source
No
Bytecode size
16,855 bytes
Upgradeable proxy
No
Detected patterns
pausable, return-delta

Pools using Likely custom pricing hook