{"title":"The x402 settlement rails, measured — all four chains in one file (2026-09-11)","what":"Cross-rail consolidation of the four 30-day measurements Pennyforge made of the x402 settlement rails (Solana, Arbitrum, Polygon, with Base as control/census context) — each measured the same way: directory declaration -> live discovery docs -> declared payTo addresses -> 30-day USDC inflow to exactly those addresses, read straight off-chain. This file is an INDEX plus the cross-rail comparison, not a new measurement: every per-rail number is pulled verbatim from the dated per-rail files linked in per_rail_files. All figures are lower bounds (wallets rotated away or omitted from docs are invisible).","generated_at":"2026-09-11T23:55:00Z","window":"30 days ending 2026-09-11 per rail (Solana: 2026-08-11..09-10; Arbitrum & Polygon: 2026-08-12..09-11 — see each per-rail file for exact block anchors)","per_rail_files":{"solana":"https://api.pennyforge.org/solana-rail (generated 2026-09-10T15:20:00Z)","arbitrum":"https://api.pennyforge.org/arbitrum-rail (generated 2026-09-11T05:45:00Z)","polygon":"https://api.pennyforge.org/polygon-rail (generated 2026-09-11T15:40:00Z)","diligence":"https://api.pennyforge.org/diligence (directory landscape digest, 09-09)"},"rails":[{"rail":"solana","declared_in_directory":236,"live_docs_reachable":181,"still_declaring_in_live_docs":70,"distinct_payto_addresses":46,"invalid_addresses":1,"addresses_with_zero_30d_tx":30,"addresses_with_30d_activity":15,"tx_30d":204,"usdc_inflow_30d":12.8405,"usdt_inflow_30d":0,"base_control":null,"base_control_note":"SPL token model — no same-window EVM Base control was measured for this rail; the directory census Base context below applies instead","data_file":"https://api.pennyforge.org/solana-rail"},{"rail":"arbitrum","declared_in_directory":40,"live_docs_reachable":28,"still_declaring_in_live_docs":6,"declaring_without_wallet_in_doc":3,"distinct_payto_addresses":6,"addresses_with_30d_activity":1,"tx_30d":187,"usdc_inflow_30d":11.2784,"base_control":{"tx_30d":5992,"usdc_inflow_30d":1325.1397,"active_wallets":3},"data_file":"https://api.pennyforge.org/arbitrum-rail","base_control_ratio_tx":32,"base_control_ratio_usd":117.5},{"rail":"polygon","declared_in_directory":55,"live_docs_reachable":42,"still_declaring_in_live_docs":17,"declaring_without_wallet_in_doc":4,"distinct_payto_addresses":8,"addresses_with_30d_activity":2,"tx_30d":8,"usdc_inflow_30d":28.481483,"token_note":"native Circle USDC (0x3c499c…c3359) — the exact contract the declaring docs name; bridged USDC.e secondary pass = 0 tx / $0 across all 8 addresses","base_control":{"tx_30d":1549,"usdc_inflow_30d":1265.425782,"active_wallets":6},"data_file":"https://api.pennyforge.org/polygon-rail","base_control_ratio_tx":193.6,"base_control_ratio_usd":44.4}],"solana_live_delta":{"as_of":"2026-09-10T21:03:37Z","delta_tx":4,"delta_usdc":0.0001,"running_totals_at_check":{"tx_30d":208,"usdc_inflow_30d":12.8406},"note":"re-poll of the same 46 addresses since the 09-10 12:13Z pull; blockTime-anchored"},"base_context":{"from_census_2026_09_09":"Base is the directory's default rail: ~95% of listed services declare Base (landscape summary: 647 of 680 at the 09-09 pull), and Base holds 83.5% of the measured dollars in the census's measured set (total across measured rails ~$2,624/30d ~ $87/day — census article 09-09, the source for these two claims). The per-rail files' Base controls show the same direction per wallet population: the declared wallets are active on Base, not on the rail their docs claim.","per_rail_base_controls":{"arbitrum":{"tx_30d":5992,"usdc_inflow_30d":1325.1397},"polygon":{"tx_30d":1549,"usdc_inflow_30d":1265.425782}}},"cross_rail_reading":["On every EVM rail measured, the declared wallets settle where the money is, not where the docs claim: Arbitrum 187 tx / $11.28 vs 5,992 tx / $1,325.14 on Base for the SAME wallets (~117x the dollars); Polygon 8 tx / $28.48 vs 1,549 tx / $1,265.43 on Base for the SAME wallets (~44x the dollars). The rail declaration in the doc is a statement of intent, not of settlement.","Solana inverts the activity pattern: it is the rail with the most declarations (236), the most measured transactions (204) and the most active declared wallets (15 of 46) — the only rail where a broad set of declared addresses actually receives money — but at $12.84/30d the dollars are still small, and there is no EVM Base control for this token model.","Declaration is marketing, settlement is a number: the directory's per-rail 'volume' (facilitator-indexed) and these per-wallet chain measurements are two different instruments; on the rails where both exist they bracket each other without either bounding the other (see each per-rail file's vs_directory_measurement)."],"method_note":"Identical cascade on every rail: (1) pull the full x402-list.com directory; (2) crawl each declaring service's live /.well-known/x402 doc; (3) parse declared networks + every payTo across all observed doc shapes; (4) per distinct payTo address, 30-day USDC Transfer inflow on the declared chain (block-anchored windows, public RPCs, 0 errors per rail); (5) Base control for the EVM rails = the same addresses, same window, Base native USDC. Per-rail caveats (rotated wallets, omitted payTo, unreachable docs, token-variant traps) are in each per-rail file.","articles":["https://dev.to/pennyforgehq/i-counted-the-payments-behind-every-solana-x402-address-1284-in-30-days-3af4 (Solana rail, 09-10)","https://dev.to/pennyforgehq/i-measured-every-x402-wallet-that-claims-arbitrum-1128-in-30-days-h82 (Arbitrum rail, 09-11)","https://dev.to/pennyforgehq/i-counted-usdc-payments-to-every-published-polygon-x402-wallet-2848-in-30-days-dfp (Polygon rail + 4-rail wrap, 09-11)"],"license":"CC BY 4.0 — copy freely with attribution to api.pennyforge.org/rails (or the per-rail cite_as for the detail data)","cite_as":"https://api.pennyforge.org/rails","built_from":{"solana-rail.json":"2026-09-10T15:20:00Z (last live delta 2026-09-10T21:03:37Z)","arbitrum-rail.json":"2026-09-11T05:45:00Z","polygon-rail.json":"2026-09-11T15:40:00Z","builder":".tmp-tests/build-rails-json.py (pulls headlines verbatim; ratios computed)"}}