# v4tape: forward swap tape for new v4 pools (#93 A1-QUIET60, #100 A2-H3000) - 9 Oct 2026 06:40 UTC

Own service, own files; v3live.db is NOT touched (so no live-read DB change, no EXTRA_HOOKS needed).
- Service: research-box `v4tape` (/opt/sw/v4tape/v4tape.py, hb v4tape.hb, guarded by ppfeedguard). Free RPC only, ~2 getLogs per 200 blocks.
- Tracks every new v4 pool at Initialize with a WETH/native quote and: fee==100 (cls A1) or fee==3000 + hooks!=0 (cls H3000).
- pools.jsonl: pool_id, cls, token, quote, hooks, fee, block, init_time, tx, emitted_t.
- swaps.jsonl: every PoolManager Swap on a tracked pool from init until first swap +25 min (cap init +6 h): pool_id, cls, block, t (block time), tx, log_index, sender (router, not tx.from), amount0, amount1 (pool view, signed), sqrtP, liq, tick, fee, emitted_t.
- Mirror on main: http://159.223.88.168/hx-c9ois/fw/a1feed/v4swaps.jsonl and v4pools.jsonl (a1pull@v4swaps, a1pull@v4pools).
- Example: `jq -s 'group_by(.pool_id)|map({p:.[0].pool_id,n:length})' /opt/sw/v4tape/swaps.jsonl`
- Gaps: forward only (started 06:31 UTC), no history (use ppdata r6weth). Swap log has router as sender; tx.from (outside buyers) is not captured. Swap decode checked on 2 live swaps (values plausible); first end-to-end pool not seen yet.
- Quiet-count rule needs n60 (swaps by first+60 s) and net WETH inflow: derive from amount0/amount1 (WETH side depends on currency order; native = address 0 is currency0).

## 9 Oct 07:00 UTC update (#107)
- H3000 pools are now tracked for 4 h after first swap (A1 stays 25 min); hard cap 8 h after init. Restart 07:00 UTC (state rebuilt from pools/swaps.jsonl; blocks during the ~5 s restart gap, none had swaps).
- First live tape seen: 2 H3000 pools, 4 swaps, pool_id matches, lag ~1 s. Note: early swaps show amount0=amount1=0, liq=0 (zero-delta hook/probe swaps from sender 0xd809...); the data is as emitted on chain.
- A1 (fee100) pool not seen yet.
