Likely custom pricing hook on Ethereum
Uniswap v4 Hook Contract 0x391c836c59e861bee31a5368489907a3408ec088 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
This hook takes over part of each swap through a beforeSwap return delta, so traders' fills may differ from the standard curve, though the direction in which it favours trades cannot be determined from the bytecode.
How it works step by step
- Implements beforeSwap, which can return a delta so the hook itself settles part of the swap instead of the pool's AMM curve
- Calls take(currency0, currency1, amount) on the PoolManager, so the hook moves token balances in and out of pool accounting
- Uses three storage slots, two uint256 and one uint32, which likely hold swap state or configuration such as a counter, timestamp or parameters
- Exposes a view function 0x68111d70 that reads storage slots 0 to 2 for off-chain inspection
- Exposes a view function 0xc5beaca2 taking (uint256, bool) that returns a value, likely a quote or price calculation tied to the swap direction
- Swap behaviour
- On each swap, beforeSwap runs first and can return a delta; the hook takes tokens via take() and can fill part or all of the swap itself, so trades routed through this pool may not follow the standard AMM price curve.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Uses the pool's static fee; no fee override selector was decoded, so fees are not set by the hook.
- Owner & admin controls
- No admin controls found in decoded bytecode; no owner, pause or upgrade selectors were identified.
Enabled Uniswap v4 callbacks
beforeSwap, beforeSwapReturnDelta
beforeSwap: runs before every swap and can return a delta that lets the hook settle the swap amount. beforeSwapReturnDelta: allows the hook's returned delta to alter the amounts the swapper receives or pays.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: No privileged owner function was identified in the decoded selectors, so centralization risk cannot be fully assessed; any owner or upgrade mechanism hidden in unrecognized code would not be visible here.
Risk to user funds: The hook can take and settle currency through the PoolManager during beforeSwap and can alter swap amounts via its return delta, so it can affect the funds flowing through swaps on this pool.
Security findings
- [high] Return delta with currency movement: The hook has beforeSwapReturnDelta and calls take() on the PoolManager, so it can take tokens from swap flows and alter what swappers receive; the exact pricing logic cannot be verified without source.
- [medium] Unverified source: No verified source is available, so the pricing, fund-handling and gating logic is inferred only from decoded selectors and storage.
- [medium] Unknown pricing logic: The beforeSwap argument layout and the (uint256,bool) view function suggest custom pricing, but the formula and any manipulation resistance cannot be confirmed from bytecode alone.
Contract details
- Verified source
- No
- Bytecode size
- 1,341 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta