Limit orders hook on Base
Uniswap v4 Hook Contract 0xa848e063a63d164f2a25d71446c90449b9ba6040 on Base · Limit orders
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 11
What it does
A Uniswap v4 hook that appears to implement owner-managed swap limits with an exemption list for specific addresses, though the exact mechanism cannot be confirmed without verified source.
How it works step by step
- Runs a beforeInitialize check when the pool is created.
- Runs an afterSwap hook that reads a limitsEnabled flag and a limitExempt mapping.
- Lets the owner exempt specific addresses from limits via setLimitExempt.
- Lets the owner permanently disable limits via removeLimits.
- Lets the owner set a numeric parameter stored in slot 1 that is read during swaps.
- Ownable with transferOwnership for admin handover.
- Swap behaviour
- afterSwap executes after every swap and reads limit-related state (limitsEnabled flag and per-address exemption mapping), with an owner-controlled numeric parameter also consulted; the precise enforcement logic is not determinable from decoded bytecode.
- Liquidity behaviour
- No liquidity callbacks are enabled; beforeAddLiquidity, beforeRemoveLiquidity and related selectors exist in the ABI but the hook permissions only enable beforeInitialize and afterSwap.
- Fee behaviour
- Uses the pool's static fee; afterSwap and the uint256 setter may track or adjust per-swap limits but no fee-taking or fee-sharing mechanism is evident.
- Owner & admin controls
- Owner (slot 0) can call setLimitExempt(address,bool) to exempt addresses and transferOwnership(address); removeLimits() can be called by the owner to disable the limits flag permanently; fe69546c (uint256 setter writing slot 1) is a non-standard owner-gated parameter setter, likely used to set the pool fee or a limit parameter.
Enabled Uniswap v4 callbacks
beforeInitialize, afterSwap
beforeInitialize: runs on pool initialization, likely to validate or record pool parameters (token, fee, tick spacing). afterSwap: runs after each swap, likely to update limit or tracking state (limitsEnabled, exempt mapping read).
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The owner can transfer ownership, exempt addresses from limits, remove limits entirely and call the uint256 setter (fe69546c); a compromised owner key could change swap-related limit state for the pool.
Risk to user funds: The hook does not appear to take or hold tokens via return deltas, so user funds are not directly custodied; however, the owner-controlled parameters in afterSwap could restrict or alter swap outcomes for non-exempt users.
Security findings
- [info] Swap-time limits gated by owner-controlled flags: afterSwap reads the limitExempt mapping and limitsEnabled flag, indicating swap-level restrictions that the owner can modify.
- [info] Limits can be removed irreversibly by owner: removeLimits() sets the limitsEnabled bool (slot 2) to false and is callable by the owner; the flag is never re-enabled in the decoded functions, so removal appears irreversible.
- [medium] Unidentified owner-controlled numeric parameter: Owner-only setter (selector fe69546c) writes a uint256 storage slot that is read in afterSwap; its purpose cannot be confirmed without source, and it could change swap behaviour.
- [low] Single-owner control without timelock: Ownable pattern with transferOwnership; no timelock or multisig evident from the bytecode.
Contract details
- Verified source
- No
- Bytecode size
- 3,819 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Limit orders hook
- wtSPCX / MEMELORD (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today