Hook 0x0e9a…2ac0 on Base
Uniswap v4 Hook Contract 0x0e9aab208041af18c48517722c95fa2951232ac0 on Base · Other
- Volume (24h)
- $18.62K
- Value locked (TVL)
- $1.02K
- All-time volume
- $18.62K
- Pools using this hook
- 3
- Swaps (24h)
- 91 (16 traders)
- Total swaps
- 91
What it does
A Uniswap v4 hook with swap and liquidity gating plus admin-controlled routing and gas policy, whose exact trader and LP effects cannot be confirmed without verified source.
How it works step by step
- Gates swaps through beforeSwap and afterSwap, with checks on trusted routers and a global pause flag
- Gates liquidity additions and removals, with third-party liquidity possibly blocked
- Restricts pool initialization to authorized initializers
- Enforces a gas policy (minimum gas before and after canonical execution and at entry)
- Manages residue and float balances with withdraw, sweep and take functions
- Uses a self-unlock callback to run pool-manager operations
- Swap behaviour
- beforeSwap and afterSwap are implemented and call the pool manager unlock and currency-moving functions; swaps are likely restricted to trusted routers and subject to pause and gas-policy checks.
- Liquidity behaviour
- beforeAddLiquidity and beforeRemoveLiquidity are implemented; they appear to gate liquidity (a ThirdPartyLiquidityBlocked error suggests third-party liquidity may be restricted). Exact logic cannot be confirmed without source.
- Fee behaviour
- Could not determine from decoded bytecode; fee-related selectors such as fee() appear only as external calls. Assume the pool's static fee unless the hook overrides it, which cannot be confirmed here.
- Owner & admin controls
- Admin address (slot 0) can set admin, set global pause, set residue recipient, set trusted routers, trusted quoters and keepers, configure gas policy (setGasPolicy), and sweep tokens via sweep(address,address). No upgrade proxy pattern detected.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap
beforeInitialize restricts initialization (UnauthorizedInitializer error). beforeAddLiquidity and beforeRemoveLiquidity likely gate liquidity actions. beforeSwap and afterSwap run routing, gas and accounting logic for swaps, including a self-unlock pattern through unlockCallback.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: The admin key can pause the hook globally, change trusted routers and quoters, grant keeper roles, change gas policy, redirect residue to a chosen recipient and sweep tokens held by the contract. These are powerful controls over funds the hook holds.
Risk to user funds: The hook has custody-like functions (sweep, take, transferFrom, withdrawFloat) and can move tokens during swap and liquidity callbacks. Admin-controlled pause and sweep could block or drain value held by the hook.
Security findings
- [high] Admin token sweep and residue redirection: sweep(address,address) and setResidueRecipient let the admin move tokens the hook holds, and residue accounting can route value to a chosen address.
- [medium] Global pause and router allowlist: setGlobalPaused and trusted router allowlisting can block or restrict swaps and liquidity actions for all users.
- [medium] Hook moves currency during swaps: The hook calls poolManager unlock and take/transfer selectors inside swap callbacks, so it moves currency during pool operations. Behaviour depends on unverified logic.
- [info] Unverified source: No source is available, so the exact fee, rebalancing and pricing logic could not be verified.
Contract details
- Verified source
- No
- Bytecode size
- 24,572 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, self-unlock
Pools using Hook 0x0e9a…2ac0
- WETH / Surplus (0.10% fee) — 24h volume $18.34K, TVL $289, 74 swaps today
- WETH / Basecat (0.10% fee) — 24h volume $275, TVL $472, 10 swaps today
- USDC / Basecat (0.10% fee) — 24h volume $4.66, TVL $260, 7 swaps today