10%
of captured drift, charged as fee
The one free parameter, calibrated for the least bad worst case across two independent windows of flow rather than the best case under one assumption. At this share each tick of drift adds ten pips.
Unaudited. Base Sepolia only. Never having held value.
The adverse-selection gate does not currently pass — the mechanism is deployed, the evidence is not established. Read the result
Uniswap v4 hook · permission mask 0x30C4
Every dynamic-fee hook shipping today sets the fee from volatility — so a retail swap and a top-of-block arbitrage pay the same rate, though one is the liquidity provider's entire revenue and the other is their entire loss. Assay prices each swap on the drift it captures against a cached reference, signed by direction.
The quote surface
Fee as a function of signed drift. Two swaps in one block, against the same drift, in opposite directions.
Capturing
7.40 bp
Opposing
2.60 bp
1.00% ceiling — maxFeePips 10,000
0.01% floor — minFeePips 100
drift +1,200 ticks →
Drag anywhere on the surface, or focus it and use ← →. The curve is evaluated from the same FeeBlend port the swap card quotes from, so what you see here is what the contract charges.
Read from the chain, right now
The reference price, the fee bounds and the block below are live contract reads — not fixtures.
Pool drift
—
reading…
Toward the reference
—
captures the drift
Away from it
—
captures nothing
Those two figures are the entire product. Same pool, same instant, same drift — quoted differently because one trade takes value from liquidity providers and the other does not. A volatility-driven hook cannot tell them apart, because volatility is a property of the block and not of the order.
hook 0xc825…70c4 ↗ · oracle 0x5675…0d38 ↗
The mechanism, in three facts
10%
The one free parameter, calibrated for the least bad worst case across two independent windows of flow rather than the best case under one assumption. At this share each tick of drift adds ten pips.
-40 … 950
Below 40 ticks of adverse drift the quote sits at the 0.01% floor; above 950 it saturates at the 1.00% ceiling. Everything a router reads from feeBounds() holds.
16,180
Against a 20,000 budget. The reference is cached in one packed slot and refreshed at most once per block, so the common path makes no external call at all.
The hook, its oracle and one USDC/WETH pool are live on Base Sepolia, and the reference price above is read from the chain. But the pool has seen two swaps, both from the deploy script — so the aggregate figures on the markets page (volume, TVL trend, the distribution of quotes) are still illustrative fixtures rather than measurements. There is not yet enough history to measure anything.
Separately, the adverse-selection gate does not currently pass: the mechanism is implemented and the arithmetic is tested, but the evidence that it improves liquidity provider outcomes is not established. The full result is in the docs, because a claim this project cannot support is not one it should make on a landing page.