AssayAssay

Swap

block —
Balance —
$1.50
You receiveBalance —
0.00000

$0.00

Slight drift — modest surcharge
0.0740%
Rate
1 USDC = 0.000000 WETH
Minimum received
0.00000 WETH
Price impact
0.00%
Hook gas, first swap of a block
52,849—
reading the pool…

Why this fee

Signed drift against the cached reference

+24

ticks · 1 tick = 1 bp

-3000cap 950+1,200
baseFeePips
500
⌈ drift × 100 pips/tick × 10.00% ⌉
+240
Uncapped quote
740 pips
clamp( 100 , 10,000 )
740 pips

drift simulated · this swap pays 0 WETH in fees

Same block, same pool

What the opposite direction is quoted right now

This swap · capturing

7.40 bp

Captures 24 ticks of drift. Charged a share of what it picks off.

Opposite direction

2.60 bp

Moves away from the reference, captures nothing, quoted at the floor.

Spread of 4.80 bp between two swaps a volatility-driven hook would quote identically. Both figures above are computed from the drift the hook itself reports. test/integration/DynamicPricing.t.sol pins the property on chain: in one block, against one reference, the swap capturing the drift is quoted strictly higher than the swap adding to it.

drift simulated — pool not read yet

Execution path

1 hop · v4 singleton

USDCUSDC
──
AssayHook · 740 pips
──
WETHWETH
reference
0x5675…0d38 · cached
pool tick / reference tick
reading…

Both ticks are read from the deployed hook's own state. Their difference, signed by the direction of this swap, is the entire input to the fee above.

Hook events, this pool

preview, not fetched

  • SwapAssayedfeePips 740 · sender 0x0DFA…66d5 (router)—
  • SwapAssayedfeePips 260 · sender 0x0DFA…66d5 (router)—
  • ReferenceFreshnessChangedfresh true · transition only, not per swap—
  • PoolRegisteredbaseFeePips 500 · poolId 0x1b4f…84eegenesis

These are the real event signatures from IAssayEvents.sol, populated with the quote above — a preview of what this swap would emit, not a log fetched from the chain. Every SwapAssayed event the pool has actually emitted is read from the chain and listed on the markets page. sender is the router, never the trader.