AdaptivePoolPolicyHookV1 on Ethereum

Uniswap v4 Hook Contract 0xb067b5deccbb371eb358953626dfbb0dc55608c4 on Ethereum · Dynamic fee · Verified contract

Volume (24h)
$57
Value locked (TVL)
$375
All-time volume
$1.60K
Pools using this hook
1
Swaps (24h)
7 (6 traders)
Total swaps
145

What it does

An admin-managed dynamic-fee hook that charges different LP fees per swap direction (0% to 100%), blocks swaps outside a price band, can add an owner-collected hook fee up to 100%, and limits new liquidity to allowlisted LPs while leaving withdrawals unrestricted.

This read was written for the hook 0xfde6…48c4 on Ethereum and reused here: the two run the same code.

How it works step by step

  • Sets a separate LP fee for each swap direction (token0 to token1 vs token1 to token0), adjustable by the owner or delegated policy managers anywhere from 0% to 100%.
  • Rejects any swap that would push the pool price outside an owner-set price band (lower bound for sells of token0, upper bound for sells of token1).
  • Can charge an extra hook fee (0% to 100%, default 0%) on the swap's output for exact-input trades or extra input for exact-output trades; this fee is held by the hook and claimable by the owner.
  • Restricts adding liquidity to the owner and whitelisted providers unless the owner turns on public liquidity.
  • Never runs on withdrawals, so LPs can always remove their liquidity.
Swap behaviour
Each swap pays a direction-specific LP fee set by policy managers (0% to 100%), and reverts if it ends outside the configured price band. If the owner sets a hook fee, it is taken from the output (exact input) or added to the input (exact output) and sent to the hook.
Liquidity behaviour
Adding liquidity is limited to the owner and allowlisted providers (checked through trusted routers) unless public liquidity is enabled. Remove-liquidity callbacks are disabled, so LPs can always withdraw freely.
Fee behaviour
LP fees per direction range from 0% to 100% and go to LPs; setting 100% effectively freezes price movement in that direction while exact-input swaps lose their whole input. A separate owner-set hook fee of 0% to 100% (default 0%) is charged to swappers and collected by the owner.
Owner & admin controls
The owner and any policy managers it appoints can set directional LP fees up to 100%, change price bounds, and manage the LP allowlist; only the owner can set the hook fee up to 100%, register routers, toggle public liquidity, and claim all tokens held by the hook. Ownership cannot be renounced, only transferred in two steps.

Enabled Uniswap v4 callbacks

beforeAddLiquidity, beforeSwap, afterSwap, afterSwapReturnDelta

beforeAddLiquidity: enforces the LP allowlist; beforeSwap: applies the directional dynamic LP fee; afterSwap: enforces price bounds and computes the hook fee; afterSwapReturnDelta: charges the hook fee to the swapper and moves it to the hook.

Security & trust assessment

Risk level: high (verified source, high confidence).

Who controls it: A single owner (plus any policy managers it adds) controls fees, price bounds and the LP allowlist; the owner alone controls a hook fee that can reach 100% and claims all hook-held tokens. Worst case, traders lose their whole swap output or trading is halted.

Risk to user funds: The hook can take 0% to 100% of a swap's unspecified amount as its fee, and LP fees can be 0% to 100%, so traders setting slippage limits is essential. LP principal stays in the PoolManager and cannot be locked or drained by this hook.

Security findings

  • [high] Hook fee can be set up to 100%: The owner can set the extra hook fee to any value up to 100% of the swap's unspecified amount, which would confiscate the entire output of exact-input swaps, with the proceeds claimable by the owner.
  • [medium] LP fees adjustable up to 100% by managers: The owner or delegated policy managers can set either direction's LP fee up to 100%, which can freeze trading in that direction and make exact-input swaps lose their full input to LPs.
  • [medium] Price band can block swaps: Policy managers can set price bounds that cause swaps in a direction to revert, effectively halting trading at chosen prices.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks are disabled, so LP principal can always be withdrawn; the allowlist only gates new deposits.

Contract details

Verified source
Yes (AdaptivePoolPolicyHookV1)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
16,262 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, ownable, return-delta

Pools using AdaptivePoolPolicyHookV1