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
- USDC / eUSD (0.00% fee) — 24h volume $0, TVL $0, 1 swaps today