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