Limit orders hook on Base
Uniswap v4 Hook Contract 0xe10e2c26330da1211b0939c4530b64a588301040 on Base · Limit orders
- Volume (24h)
- $432
- Value locked (TVL)
- $217
- All-time volume
- $33.07K
- Pools using this hook
- 3
- Swaps (24h)
- 163 (103 traders)
- Total swaps
- 7,165
What it does
A limit-order hook that lets users place, cancel and withdraw resting orders at chosen ticks, filling them as swaps move the pool price past those ticks.
How it works step by step
- afterInitialize stores the starting tick for each pool so later swaps can detect tick crossings.
- placeOrder records a limit order keyed by an order id derived from pool key, tick, and direction, and tracks liquidity per order and owner.
- afterSwap reads the last tick and the new tick to determine which orders were crossed and fills them.
- cancelOrder and withdraw let order owners remove unfilled liquidity or claim filled proceeds.
- getOrderInfo, getOrderLiquidity and getOrderId are view helpers for reading order state.
- Treasury and ownership functions allow the owner to manage the destination address and admin role.
- Swap behaviour
- afterSwap runs after each swap to check tick movement and settle any limit orders crossed by the price change.
- Liquidity behaviour
- No liquidity callbacks are enabled; the beforeAddLiquidity and beforeRemoveLiquidity selectors exist but the hook permissions show only afterInitialize and afterSwap are active.
- Fee behaviour
- Uses the pool's static fee; no fee override or fee-taking logic was identified from the decoded functions.
- Owner & admin controls
- Owner (Ownable) can transfer or renounce ownership and update the treasury address via updateTreasury; no pause or upgrade functions were found in the dispatched selectors.
Enabled Uniswap v4 callbacks
afterInitialize, afterSwap
afterInitialize records the initial tick for a pool and afterSwap reads stored tick data to detect crossings and fill resting limit orders; the selectors are used for order bookkeeping.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The owner can change the treasury address, which may receive funds or fees from the hook's order mechanism, and can transfer ownership to any address.
Risk to user funds: The hook contract holds liquidity for placed limit orders in its storage accounting; users can cancel or withdraw through the hook, and the owner's treasury setting is the main lever over any fees or proceeds.
Security findings
- [medium] Owner-controlled treasury: The owner can redirect the treasury address via updateTreasury, so any value routed to the treasury is controlled by a single key.
- [info] Single-owner control: Ownership can be transferred or renounced by the owner; no timelock or multisig requirement was detected in the bytecode.
- [info] Hook holds order liquidity: The hook stores user order liquidity keyed by order id and provides withdraw and cancelOrder paths, so user-deposited liquidity is held by the hook contract itself.
Contract details
- Verified source
- No
- Bytecode size
- 18,606 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Limit orders hook
- WETH / USDC (0.05% fee) — 24h volume $432, TVL $217, 163 swaps today
- ETH / USDC (0.05% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / USDC (0.25% fee) — 24h volume $0, TVL $0, 0 swaps today