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

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
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.00000 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

Trades away from the reference, captures nothing, quoted below base.

Spread of 4.80 bp between two swaps a volatility-driven hook would quote identically. Measured in test/integration/DynamicPricing.t.sol at 100 bp against 1 bp.

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. The pool has emitted two real SwapAssayed events so far, at 500 and 3,070 pips. sender is the router, never the trader.