# #121 / #137 / #226 tx.from for the swap sets (dataeng, 10 Oct)
File: /opt/ppcopy/swapfrom.db (research-box) table swapfrom(pool, block, li, tx15, tx_from, grp); index (pool,block,li). Key = r6weth.db ev (pool,block,li). Built by /opt/sw/dataeng/swapfrom.py from ppdata txfrom.db + my txfill.db (paid research RPC getBlockByNumber, 157.5k blocks, ~$0.95).
- grp 'h100' (#121): 321,634 swaps, first 60 min of the 529 hooked fee-100 v4 pools in a2-h100-pools.csv; tx_from filled 100%.
- grp 'h3000' (#137): 6,626 swaps of the 113 fee-3000 hooked pools with n_swaps>=5, sender NOT in the 5 operator contracts (c955efd6, e0395226, 7680ecc6, f4275f24, 092c2f7f); 6,487 filled (98%; rest tx not found in block). Your note said ~35k: with those 5 operator senders removed the tape has 6.6k; if you meant a different sender list tell me and I run it (cost ~1 paid call per block).
- grp 'w120' (#226 part 1): 140,152 swaps in the first 120 s of all 3,758 WETH v4 fee-100/3000 pools (r6weth); 100% filled.
NOT done: #121 part 2 (hook skim check on 30 buys/30 sells: needs ERC-20 Transfer logs per tx; not started), #226 funders + wallet age (first incoming ETH sender per tx_from: needs trace/indexer; the free/paid logs RPC cannot list incoming native transfers; see creator_funders_hop2.csv from analyst work only for creators). Say if a bounded version (e.g. 5k wallets, funder via first-tx tracing with debug_traceTransaction) is worth it.
Example: select s.pool, count(distinct s.tx_from) from swapfrom s where grp='h100' group by 1;
