WLimitOrderHook on Arbitrum
Uniswap v4 Hook Contract 0x63d3132013839ed98e9dbc375a88d5eebf52d040 on Arbitrum · Limit orders · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $6.77K
- Pools using this hook
- 2
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 57
What it does
A Uniswap v4 hook that lets users place limit orders on pool tick ranges, filled automatically when a swap moves the price through them, and offers a combined swap-then-place helper in one transaction.
How it works step by step
- Lets users place single-sided limit orders on a tick range of a v4 pool via placeOrder, with liquidity recorded per user and per order id.
- Fills crossed limit orders inside afterSwap, when a swap moves the pool price across their tick range.
- Lets users cancel an unfilled order or withdraw a filled order's proceeds using cancelOrder and withdraw.
- Provides swapAndPlaceOrder, which performs an exact-input swap and then places a limit order atomically in one transaction.
- Enforces an optional minimum output amount on the helper swap to guard against sandwich attacks.
- Restricts unlock callbacks to the PoolManager and uses a sentinel value to separate the helper swap from the base order callbacks.
- Swap behaviour
- afterSwap fills any limit orders on ticks crossed by the swap. The swapAndPlaceOrder helper performs an exact-input swap inside an unlock callback, settles and takes deltas against the payer, enforces an optional minAmountOut, then places the order.
- Liquidity behaviour
- No liquidity callbacks. Limit orders are recorded as single-sided positions on tick ranges (placeOrder, cancelOrder, withdraw), with liquidity tracked per user and per order id rather than through afterAddLiquidity or afterRemoveLiquidity.
- Fee behaviour
- Uses the pool's static fee. The hook takes no fee of its own; swaps pay the pool fee set at initialization.
- Owner & admin controls
- No admin controls found. The hook has no owner, pause or upgrade functions in the verified ABI; order placement, cancellation and withdrawal are per-user operations.
Enabled Uniswap v4 callbacks
afterInitialize, afterSwap
afterInitialize initializes per-pool order bookkeeping (such as the last tick lower). afterSwap is used to fill crossed limit orders when a swap moves the price through their tick range.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged role was found in the verified source, so no single key can change parameters, pause the hook or redirect user funds.
Risk to user funds: The hook holds user liquidity deposited into limit-order positions and releases it only to the depositing address on cancel or withdraw. Swap settlement in swapAndPlaceOrder pulls the payer's input tokens and sends output to the same payer. Funds are exposed to smart-contract bugs in the base library and to the optional zero-minAmountOut sandwich risk, but no owner can seize or freeze them.
Security findings
- [medium] Optional slippage protection: The swapAndPlaceOrder helper takes minAmountOut, and passing 0 disables the slippage check. The source documents this as a sandwich-attack risk.
- [info] Callback routing is restricted: The unlock callback is guarded by onlyPoolManager and the swap sentinel is distinct from the CallbackType enum values, so arbitrary external callers cannot supply a payer for swaps.
- [info] Permissionless order management: The contract is the verified WLimitOrderHook wrapper on top of the OpenZeppelin LimitOrderHook base. It exposes order placement, cancellation and withdrawal to any user for their own orders, with no admin escape hatch.
Contract details
- Verified source
- Yes (WLimitOrderHook)
- Compiler
- solc 0.8.33+commit.64118f21
- Bytecode size
- 17,835 bytes
- Upgradeable proxy
- No
- Detected patterns
- limit-orders
Pools using WLimitOrderHook
- USDC / gUSDC (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- ETH / wstETH (0.0075% fee) — 24h volume $0, TVL $0, 0 swaps today