Oracle hook on Ethereum

Uniswap v4 Hook Contract 0x1139e89545ea34dc4b34269775515d397342e888 on Ethereum · Oracle

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

What it does

This hook uses a reference oracle to adjust swap settlement toward a target price, so the exact trades that pay more or less cannot be confirmed from the decoded bytecode.

How it works step by step

  • Hook is an oracle-driven arbitrage/peg-defense hook with an owner-set reference oracle, treasury, executor and EUSD/USDC references.
  • beforeInitialize gates pool creation (returns a selector only after checks against the configured manager and parameters).
  • beforeAddLiquidity runs a check on incoming liquidity and can revert it.
  • beforeSwap computes a swap outcome against the reference price and uses return deltas to take or supply currency during the swap.
  • Exposes quoting views (getIndicativeQuote, swapToPrice, getReserves, getEffectiveLiquidity) that simulate swaps toward a target price.
  • Has a pause switch (setPaused) and a live flag (isLive) and a redemption path (redeem, redemptionAvailable) referenced via external calls.
Swap behaviour
beforeSwap is non-view and returns a before-swap delta, so the hook can alter the amounts the pool settles during a swap, based on the oracle reference price; which trades pay more or less cannot be determined from decoded bytecode alone.
Liquidity behaviour
beforeAddLiquidity is a view-style check that can block adding liquidity; removal callbacks are not enabled.
Fee behaviour
Uses the pool's static fee; no dynamic fee callback is enabled, though the hook's before-swap delta can effectively adjust amounts paid.
Owner & admin controls
Owner-controlled (ownable, OnlyOwner error present) with setPaused to halt the hook, and an owner/executor/treasury role set; parameters such as maxGas and minimumProfit are readable; upgrade mechanism not detected in decoded bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta

beforeInitialize: validates pool setup before it is created. beforeAddLiquidity: gates liquidity additions. beforeSwap: sets a price-correcting before-swap delta. beforeSwapReturnDelta: lets the hook take or give currency during swaps.

Security & trust assessment

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

Who controls it: The owner can pause the hook and likely changes its oracle, executor, treasury or parameters; a compromised owner key could redirect value flows or halt trading.

Risk to user funds: The hook can take and supply currency via return deltas and holds or transfers tokens (ERC20 transfer/approve selectors present), so user and pool funds are exposed to its pricing and treasury logic.

Security findings

  • [high] Return-delta swap control: beforeSwapReturnDelta lets the hook move currency during swaps (moves-currency and return-delta tags), so swap outcomes depend on the hook's pricing logic and reference oracle.
  • [medium] Oracle dependency: Swap pricing depends on referenceOracle; a stale or manipulated reference price would change settlement amounts.
  • [medium] Owner pause and parameters: Owner can pause the hook via setPaused, which can block swaps and liquidity additions; setPaused is an owner-only state change in the bytecode.
  • [medium] Treasury and redemption flows: The hook references treasury, redeem and redemptionAvailable externals, meaning it can receive or disburse tokens outside pool accounting.

Contract details

Verified source
No
Bytecode size
8,069 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, oracle, ownable, pausable, return-delta

Pools using Oracle hook