Likely custom pricing hook on Ethereum

Uniswap v4 Hook Contract 0x0422ee946d19ff1efabfb7efbe3603bf7fcb28a8 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

A custom-accounting Euler swap curve hook that prices and settles swaps against its own reserves and EVault-backed liquidity instead of the standard pool curve.

How it works step by step

  • Validates pool initialization so only supported pairs can be used (beforeInitialize)
  • Gates and routes liquidity additions into the hook's reserves (beforeAddLiquidity)
  • Prices swaps from a configurable curve and reserves and settles via return deltas (beforeSwap)
  • Connects to the Ethereum Vault Connector and EVault contracts for deposits, borrows and account checks
  • Exposes manager roles and curve reconfiguration controlled by privileged addresses
  • Enables donation hook (beforeDonate) that is part of the enabled permissions
Swap behaviour
beforeSwap computes the output from the hook's curve and reserves and uses beforeSwapReturnDelta to settle the trade, so the hook itself moves currency during the swap.
Liquidity behaviour
beforeAddLiquidity is enabled and the hook manages reserves internally; liquidity is held by the hook's own reserves and deposits go through the EVault and EVC stack (DepositFailure error present). Exact add-liquidity gating is not fully determinable from input.
Fee behaviour
Fees are not taken as a static pool fee; the curve and reserves determine effective pricing and protocol fee configuration is exposed via protocolFeeConfig(). Exact fee split unknown from input.
Owner & admin controls
Proxy: the hook address delegates to implementation 0x90cb0b67f189a3d914da00f72070531152dbc85f, so upgrade authority sits with whoever controls the proxy admin, which is not determinable from the provided input. Source exposes setManager(address,bool) for managers mapping, reconfigure(tuple,tuple) and activate(tuple,tuple) for curve parameters, and managementImpl() which indicates a delegated management implementation. Exact owner and pause mechanics are not confirmed from the input.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, beforeDonate, beforeSwapReturnDelta

beforeInitialize validates pool setup (UnsupportedPair error); beforeAddLiquidity gates or routes liquidity deposits; beforeSwap computes the swap against the curve and settles via return deltas (beforeSwapReturnDelta); beforeDonate is enabled but its exact use is not confirmed from the input.

Security & trust assessment

Risk level: medium, estimated (verified source, medium confidence).

Who controls it: Privileged roles can add or remove managers and reconfigure curve parameters; a privileged proxy admin could upgrade the implementation and change swap logic, potentially redirecting or extracting pool funds.

Risk to user funds: The hook holds pool reserves and settles swaps through return deltas, so it can move and in principle block user or pool funds; the exact custody and withdrawal rules depend on the implementation logic and are not fully verifiable from the input.

Security findings

  • [medium] Upgradeable proxy: The hook is deployed behind a proxy, so the implementation can be replaced by the proxy admin; the code users interact with is not fixed.
  • [medium] Return delta moves currency: beforeSwapReturnDelta is enabled, meaning the hook can take or give tokens during swaps, moving pool currency outside the standard AMM path.
  • [medium] Privileged parameter and manager control: setManager and reconfigure allow privileged addresses to change who may manage the pool and the curve parameters.
  • [low] External EVC and vault dependencies: Hook depends on EVC and EVault contracts for deposits and borrowing, so external dependency failures or vault status can affect liquidity operations.

Contract details

Verified source
No
Bytecode size
246 bytes
Upgradeable proxy
Yes
Detected patterns
moves-currency, return-delta, upgradeable

Pools using Likely custom pricing hook