Dynamic fee hook on Arbitrum
Uniswap v4 Hook Contract 0x73c463a824dcbad3ad8b75b9fd9ec527593b6888 on Arbitrum · Dynamic fee
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
A Uniswap v4 hook that applies a dynamic fee and routes or settles swaps against an external Curve-style pool, with the hook returning deltas that move currency during swaps.
How it works step by step
- Records pool state on initialization in a storage mapping keyed by pool id
- Computes a dynamic fee per swap using quote and quoteFor logic with a fee denominator
- Settles swap currency with the PoolManager via take, settle and sync calls
- May execute swaps against external Curve pools using exchange and get_dy selectors
- Supports fee exemption addresses (exempt0 to exempt3 and isFeeExempt)
- Provides a sweepDust function to recover residual tokens
- Swap behaviour
- beforeSwap computes a dynamic fee and quote, and beforeSwapReturnDelta lets the hook take or supply currency, likely by executing an exchange against an external Curve pool and settling with the PoolManager.
- Liquidity behaviour
- beforeAddLiquidity is enabled and can revert or gate liquidity additions; beforeRemoveLiquidity and afterRemoveLiquidity/afterAddLiquidity exist as selectors but their hook permissions are not enabled, so they are not invoked by the PoolManager.
- Fee behaviour
- Fee is quoted through quote/quoteFor and exposed via feePips and MAX_FEE_PIPS/FEE_PIPS_DENOMINATOR; fee exemption is governed by isFeeExempt with exempt0..exempt3 addresses. Exact fee formula cannot be determined from decoded bytecode alone.
- Owner & admin controls
- No admin controls found.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, beforeSwap, beforeSwapReturnDelta
beforeInitialize: records pool state (writes to storage slot 1 keyed by pool id) on pool creation. beforeAddLiquidity: gates or inspects liquidity additions. beforeSwap: computes a dynamic fee and quotes the swap. beforeSwapReturnDelta: the hook returns a delta that can take or supply currency during swaps, so it moves pool funds (heuristic tag moves-currency present).
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: Privileged roles are not identifiable from decoded bytecode; no owner or setter selector was found. sweepDust(address) is callable and can move residual tokens held by the hook, so whoever can call it (access control unknown) can withdraw dust from the contract.
Risk to user funds: The hook can take and settle currency during swaps via return deltas and can transfer residual balances through sweepDust, so it can hold and move pool and user funds during swap execution.
Security findings
- [medium] Return-delta hook moves pool currency: Hook permissions include beforeSwapReturnDelta and the bytecode calls take/settle/sync, meaning the hook settles currency with the PoolManager during swaps.
- [medium] Dust sweep access control unclear: sweepDust(address) is nonpayable and its caller check could not be confirmed from bytecode; if unrestricted it lets anyone sweep the hook's token balance.
- [info] External Curve pool dependency: Bytecode references Curve-style selectors (get_dy, exchange, is_meta, coins, balances), indicating the hook may route swaps through external Curve pools.
- [info] Unverified source: No verified source is available, so function behaviour, owner roles and upgrade paths are inferred only from selectors and storage access.
Contract details
- Verified source
- No
- Bytecode size
- 14,573 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta
Pools using Dynamic fee hook
- USDC / USD₮0 (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today