Likely custom pricing hook on Ethereum
Uniswap v4 Hook Contract 0x60b8fe787789a6e01415181ba80e68358e67c088 on Ethereum · Custom pricing
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 484
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 18
What it does
A pausable hook that appears to route swaps in registered pools through external Curve pools discovered via a Curve meta registry, taking over the swap with a beforeSwap return delta; the exact routing and pricing logic cannot be confirmed without source.
How it works step by step
- Keeps a registry of pools (allPools array, isPoolRegistered and pools mappings) and a pool count, which suggests it only handles swaps for pools it has registered.
- Stores a curveMetaRegistry address and exposes address[] and (address,address,address[])[] view functions, which suggests it looks up Curve pools for token pairs. This is inferred from names and types, not confirmed.
- In beforeSwap it reads the pause flag, the registered-pool mapping, a mapping(address => bool), and a pool-to-address mapping, then returns a delta that can replace the normal Uniswap swap.
- The owner can set a per-pool fee through setPoolFee(bytes32,uint24) and a default uint24 fee (selector 0xbefa61d5, unnamed).
- Includes a generic execute(address,uint256,bytes) function and an unlockCallback, so the hook can call arbitrary contracts and settle with the PoolManager.
- Swap behaviour
- beforeSwap is nonpayable and reads the pause flag, the pool registry, an allow-list style mapping and a per-pool address. It returns a delta, so it can take over the swap amounts (custom accounting) instead of using Uniswap v4 pricing. Swaps are blocked while paused. The exact external venue and pricing cannot be fully confirmed from bytecode.
- Liquidity behaviour
- No liquidity callbacks are enabled in the hook permissions. The liquidity functions in the dispatcher are only the standard interface stubs.
- Fee behaviour
- The owner can set a per-pool fee with setPoolFee and a default fee. How the fee is applied to the delta (taken by the hook or passed to LPs) cannot be confirmed from bytecode alone.
- Owner & admin controls
- The owner (setOwner, owner) can transfer ownership, pause and unpause (setPaused), change per-pool fees (setPoolFee), change the default fee, and change at least two stored addresses (selectors 0xbfb1482a and 0xbfd3da96, one of which is likely the Curve registry and the other unknown). The owner can also call execute(address,uint256,bytes) to make arbitrary calls from the hook. The owner slot is shared with the pause flag and default fee.
Enabled Uniswap v4 callbacks
beforeSwap, beforeSwapReturnDelta
beforeSwap is used to check pause state and pool registration and to route or price the swap; beforeSwapReturnDelta lets the hook return a custom delta that replaces or adjusts the swap amounts, which implies the hook settles the trade itself.
Security & trust assessment
Risk level: high, estimated (decoded bytecode, low confidence).
Who controls it: The owner can pause swaps, change fees, change stored addresses, transfer ownership and call arbitrary contracts through execute. A compromised or malicious owner could drain anything the hook holds or has approved and could halt trading.
Risk to user funds: The hook uses return deltas and settles through unlockCallback, so it can temporarily hold and move swap tokens, and execute lets the owner move any balance it holds. Pausing can block swaps in the affected pools. LP positions are not touched by liquidity callbacks, but liquidity in these pools can become unswappable while paused.
Security findings
- [high] Arbitrary call by privileged key: execute(address,uint256,bytes) is a nonpayable function that reads the owner slot, which implies the owner can make arbitrary calls from the hook, including moving any tokens or ETH the hook holds or has approved.
- [medium] Return-delta swap takeover: beforeSwapReturnDelta is enabled, so the hook controls the swap amounts and can redirect value; user outcomes depend on the hook's unverified routing logic.
- [medium] Swaps can be paused: setPaused writes a bool that beforeSwap reads, so the owner can block swaps in all pools using the hook.
- [medium] Owner-set fees: setPoolFee and a default-fee setter let the owner change fees. No cap is visible in the decoded output, so a high fee cannot be ruled out.
- [low] Reliance on external registry and pools: The hook stores a curveMetaRegistry address, and an owner-changeable address slot, so routing depends on external contracts that the owner can swap or that could misbehave.
Contract details
- Verified source
- No
- Bytecode size
- 20,813 bytes
- Upgradeable proxy
- No
- Detected patterns
- pausable, return-delta
Pools using Likely custom pricing hook
- sUSD+sUSDe / sUSDe (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- sUSD+sUSDe / sUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USDG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / weETH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- DUSD / DUSDUSDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDeUSDC / USDe (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- crv2pool / USDC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDC / USG (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USD0USD0++ / bUSD0 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- OUSD / OUSDeUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDXUSDC / USDX (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- mwstETH-WPUNKS:20 / punk20wstE (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- tETHwstETH / tETH (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- eUSD / OUSDeUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- iUSDUSDC / iUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- VUSD / crvUSDVUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- USDFIBOLD / USDFI (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- crv-stUSDT / crvUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- AUSDUSDT / USDT (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today
- srRyfrxUSD / frxUSD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today