Likely utility hook on Ethereum
Uniswap v4 Hook Contract 0xd98cbf2a706c28a5175ee6e1740d4362dbd52a80 on Ethereum · Access control
- Volume (24h)
- $905
- Value locked (TVL)
- $2.89K
- All-time volume
- $15.06K
- Pools using this hook
- 6
- Swaps (24h)
- 1 (1 traders)
- Total swaps
- 21
What it does
A Uniswap v4 hook that gates pool initialisation, liquidity changes and swaps for a specific token pair and fee tier, with post-deployment configurable parameters.
How it works step by step
- Gates pool initialisation through beforeInitialize and an authorised initializer address
- Validates tick spacing during initialisation
- Runs checks before liquidity is added or removed
- Runs checks before every swap via beforeSwap
- Exposes REQUIRED_FEE and token address views (USDT, PRD) suggesting pool-specific restrictions
- Swap behaviour
- beforeSwap and afterSwap are present; the checks performed are not fully determined from bytecode, but beforeSwap can revert swaps.
- Liquidity behaviour
- Has beforeAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity/afterAddLiquidity selectors; the logic that acts on liquidity events could not be determined from the decoded functions.
- Fee behaviour
- Uses the pool's static fee. The hook exposes REQUIRED_FEE() which suggests the hook may require pools to use a specific fee tier, but no fee-setting logic was decoded.
- Owner & admin controls
- A stored address (slot 0) is written by selector 0x24e23871, which appears to be a setter gated to the initializer or owner; an int24 at offset 20 in the same slot is written by 0x5a50ba9a. The exact authorisation check could not be confirmed without source, so the caller that can invoke these setters is not established.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap
beforeInitialize: validates or gates pool initialization (initializer address and tick spacing checks). beforeAddLiquidity: runs a check before liquidity is added. beforeRemoveLiquidity: runs a check before liquidity is removed. beforeSwap: runs a check before each swap.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: A privileged key may control the stored initializer address and tick spacing parameter, which could influence which pools can be initialised with this hook.
Risk to user funds: The hook has no return-delta or fund-moving selectors among those decoded, so it does not appear to hold or move pool funds directly, but it can block liquidity actions and swaps via its before-callbacks if its checks revert.
Security findings
- [medium] Post-deployment parameter setters: Selectors 0x24e23871 and 0x5a50ba9a write to storage slot 0, suggesting configurable parameters after deployment.
- [info] Initialization gating: The contract includes UnauthorizedInitializer and InvalidTickSpacing errors, indicating pool initialization is restricted to an authorised initializer and specific tick spacing.
- [info] Hard-coded token and fee expectations: Several views (USDT, PRD, REQUIRED_FEE) suggest the hook is tied to specific token addresses or a fixed fee requirement, which may restrict which pools are usable.
Contract details
- Verified source
- No
- Bytecode size
- 4,799 bytes
- Upgradeable proxy
- No
Pools using Likely utility hook
- PRD / USDT (0.30% fee) — 24h volume $905, TVL $2.89K, 1 swaps today
- PRD / USDT (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- PRD / USDT (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- PRD / USDT (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- PRD / USDT (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- PRD / USDT (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today