{"title":"The x402 Solana rail, measured from the declared payTo addresses (2026-09-10)","what":"Independent 30-day measurement of USDC inflow to every Solana payTo address currently declared by the 236 Solana-declaring services in the canonical x402 directory (x402-list.com, 680 services). Supply-side complement to the directory's own facilitator-indexed settlement measurement.","generated_at":"2026-09-10T15:20:00Z","window":"30 days ending 2026-09-10 (2026-08-11 to 2026-09-10)","sources":{"directory":"x402-list.com/api/v1/services (680 services, pulled 2026-09-09; 236 declare solana in networks_caip2)","discovery_docs":"live GET /.well-known/x402 per declaring service, crawled 2026-09-10 11:4x-12:2x UTC (181 of 236 reachable; raw docs saved at crawl time)","chain":"Solana mainnet via solana-rpc.publicnode.com + api.mainnet-beta.solana.com (the two keyless public RPCs left as of 2026-09-10); getSignaturesForAddress pagination + per-tx getTransaction pre/post token-balance deltas (USDC mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, USDT mint Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB9)"},"method":["1. Crawl the live x402 discovery doc of each of the 236 Solana-declaring directory services.","2. Parse declared networks + payTo addresses across all four observed doc shapes (v1 routes[], v2 resources[].accepts[], v1-res, custom endpoints-style and top-level payTo string/dict).","3. For each distinct Solana payTo address: count 30-day transactions (getSignaturesForAddress, paginated back to the 30-day blockTime cutoff), then per-transaction USDC/USDT inflow (post-minus-pre token balance delta for the address as token-account owner).","All 204 transactions parsed (0 unparsed). CAVEATS: (a) addresses are the ones CURRENTLY declared in live docs - services that rotated their payTo away in the last 30 days are missed, so all figures are LOWER BOUNDS for the rail as a whole; (b) v2 docs may deliberately omit payTo (authoritative terms live in the 402 response) - 666 Solana accepts entries across the 181 readable docs carry no payTo, so the true declared address set is larger than the 46 measured.","live_deltas: each subsequent pass re-polls the same 46 addresses and records only signatures that did not exist at the previous check (blockTime-anchored), so deltas are exact and the 30-day window edge never pollutes the count."],"headline":{"declared_in_directory":236,"live_docs_reachable":181,"still_declare_solana_in_live_docs":70,"distinct_solana_payto_addresses":46,"valid_addresses":45,"invalid_addresses":[{"address":"raKj7ZGoPy1fWw1vfynuJhyHirpcmUMBhP","service":"kr-crypto-intelligence","problem":"decodes to 25 bytes; a Solana pubkey is 32 bytes (RPC rejects it as WrongSize). base58 has no checksum, so the broken address ships silently."}],"addresses_with_zero_30d_tx":30,"addresses_with_30d_activity":15,"total_30d_tx_to_declared_paytos":204,"tx_with_usdc_inflow":29,"total_30d_usdc_inflow":12.8405,"total_30d_usdt_inflow":0,"shared_payto_clusters":[{"address":"2BTzdCAcCLaNA2SSZ1YjJvTtscNCpUMUEjLY3LyBpNMk","services":["japan-address","japan-diet","japan-furigana","japan-holiday-business-day","japan-transit","japan-weather-forecast-warnings"],"family":"MAMETA japan-* APIs - one payout address for six listed services","tx_30d":0,"usdc_inflow_30d":0}]},"addresses":[{"address":"HCM423cyKYVUoq9GvmqUphZwYVB6M2wez34i9jzSewLy","services":["402signal"],"tx_30d":11,"usdc_inflow_30d":5,"usdc_inflow_tx":1},{"address":"58Qo8QTJ1Sd4aXSygwAeBLNL3VrXRmfUCceB6b5RJCx6","services":["xfuel"],"tx_30d":5,"usdc_inflow_30d":2.7761,"usdc_inflow_tx":1},{"address":"GLu63pRCYrp4BJu5P5ciYKxgeZFW9c8TJ8jWzK3TB9AR","services":["madeonsol"],"tx_30d":50,"usdc_inflow_30d":2.6765,"usdc_inflow_tx":16},{"address":"CBYMYxfMGdA98qkzrYqTzTiQhP3H2scU95EB4ZxoRxuM","services":["suverse-freight-load-position"],"tx_30d":62,"usdc_inflow_30d":1.2665,"usdc_inflow_tx":4},{"address":"Gr8z3Dh74y4nJJAW25r2WSmzm3ZQr2n5GU5qjavFG49c","services":["stacktree"],"tx_30d":1,"usdc_inflow_30d":1,"usdc_inflow_tx":1},{"address":"8D5DSpGroX5P9v6oGHLUVLFXujp6En1zYdf5KTTQ5N8V","services":["insider-radar-paper-trading-lab-telemetr"],"tx_30d":7,"usdc_inflow_30d":0.1011,"usdc_inflow_tx":3},{"address":"F1AbWuXJcBT9arW9wc6Xr2vom5NBtngWsz6Ht16jRBLM","services":["witness"],"tx_30d":1,"usdc_inflow_30d":0.02,"usdc_inflow_tx":1},{"address":"7LSjfrJf8fNsB8VA9u7N3WEn25smQLpob3SvyUvXacy7","services":["saylor-innovations-watchdog-token-intell"],"tx_30d":45,"usdc_inflow_30d":0.0001,"usdc_inflow_tx":1},{"address":"4JgPtoBWkQyG3QffVJC3bfgk7SCQrz9bx2SAEUTSVqzK","services":["bykaranteli-crypto-derivatives-data"],"tx_30d":6,"usdc_inflow_30d":0.0001,"usdc_inflow_tx":1},{"address":"J7aN3PLJnTCF5qpEnvJHJsnCjcGuqC2rYtEM8Gv3xwg","services":["agent402-tools"],"tx_30d":6,"usdc_inflow_30d":0,"usdc_inflow_tx":0},{"address":"46vMcwuC4sK11sB3gkLhyA7J7GEwfkhn5rFyDtihBwqe","services":["minifetch"],"tx_30d":3,"usdc_inflow_30d":0,"usdc_inflow_tx":0},{"address":"giu4VciTkfWJNG1oeP6SzHEJwmabikJSMB91GaFNWE4","services":["trustboost-pii-sanitizer"],"tx_30d":3,"usdc_inflow_30d":0,"usdc_inflow_tx":0},{"address":"E64PiTT7U8ZUWFKdkrBFw1YzdD2bU1gKcuGnBRVqp7M6","services":["relayshield"],"tx_30d":2,"usdc_inflow_30d":0,"usdc_inflow_tx":0},{"address":"DMrJUdvmorbEXx8pA4R8yZ9kPfH3pUanCGxoG5AoPuTC","services":["parallax"],"tx_30d":1,"usdc_inflow_30d":0,"usdc_inflow_tx":0},{"address":"FmC5pYspDdjBntYdyjcahAHd3zAYj3ucx1dgoGs6LjMB","services":["vibes-coded-agent-tool-api"],"tx_30d":1,"usdc_inflow_30d":0,"usdc_inflow_tx":0}],"zero_activity_addresses":[],"top_by_usdc_inflow_30d":[{"service":"402signal","address":"HCM423cyKYVUoq9GvmqUphZwYVB6M2wez34i9jzSewLy","usdc":5,"usdc_inflow_tx":1,"total_tx":11},{"service":"xfuel","address":"58Qo8QTJ1Sd4aXSygwAeBLNL3VrXRmfUCceB6b5RJCx6","usdc":2.7761,"usdc_inflow_tx":1,"total_tx":5},{"service":"madeonsol","address":"GLu63pRCYrp4BJu5P5ciYKxgeZFW9c8TJ8jWzK3TB9AR","usdc":2.6765,"usdc_inflow_tx":16,"total_tx":50},{"service":"suverse-freight-load-position","address":"CBYMYxfMGdA98qkzrYqTzTiQhP3H2scU95EB4ZxoRxuM","usdc":1.2665,"usdc_inflow_tx":4,"total_tx":62},{"service":"stacktree","address":"Gr8z3Dh74y4nJJAW25r2WSmzm3ZQr2n5GU5qjavFG49c","usdc":1,"usdc_inflow_tx":1,"total_tx":1},{"service":"insider-radar-paper-trading-lab-telemetry","address":"8D5DSpGroX5P9v6oGHLUVLFXujp6En1zYdf5KTTQ5N8V","usdc":0.1011,"usdc_inflow_tx":3,"total_tx":7},{"service":"witness","address":"F1AbWuXJcBT9arW9wc6Xr2vom5NBtngWsz6Ht16jRBLM","usdc":0.02,"usdc_inflow_tx":1,"total_tx":1}],"vs_directory_measurement":{"directory_solana_30d":{"services_with_volume":49,"usdc":1830,"tx":36320,"per_tx_usd":0.05,"note":"facilitator-indexed; ~60% of tx = one service's (sniperx-x402) rotating address fleet - addresses no longer declared in any live doc"},"this_measurement_30d":{"services_declared":70,"usdc":12.84,"tx":204,"per_tx_usd":0.063},"reading":"The two numbers are the ceiling and floor of the same rail. Ceiling (directory): what its facilitator index observed over the window, including rotated-away payTo addresses. Floor (this file): what is declared in live docs TODAY and verifiably received USDC in the window. The gap = address rotation + the 666 accepts-entries that deliberately omit payTo (x402 v2: 'a stale one in a file is worse than none')."},"doc_shape_fragmentation":{"shapes_observed":["v1: routes[] with per-route {route, price, network, payTo, asset}","v2: x402Version 2, resources[].accepts[] (scheme/network/amount/asset, payTo optional and often absent)","v1-res: resources as URL strings (+ optional ownershipProofs erc1271)","custom: MAMETA-style networks[] + pay_to + endpoints[].accepts[]; top-level payTo as string; top-level payTo as per-chain dict; x402Version as the string '2.0.0'"],"solana_accepts_entries_without_payto":666,"finding":"A census that parses only one shape misses most of the rail: a single-shape parser saw 33 solana-declaring services where a multi-shape parse finds 70."},"measurement_quality":{"tx_fetched":204,"tx_parsed":204,"tx_unparsed":0,"rpcs":["solana-rpc.publicnode.com","api.mainnet-beta.solana.com"],"note":"both keyless public RPCs under Cloudflare rate limiting; 403/429 bursts are transient (~10 min cooldown), cleared with backoff + second-chance pass; per-transaction results saved at crawl time"},"license":"CC BY 4.0","cite_as":"Pennyforge, 'The x402 Solana rail, measured from the declared payTo addresses' (2026-09-10), api.pennyforge.org/solana-rail","last_delta_check":"2026-09-10T21:03:37Z","live_deltas":[{"as_of":"2026-09-10T21:03:37Z","method":"re-polled getSignaturesForAddress for all 46 declared payTo addresses; new = signatures with blockTime >= 2026-09-10T12:13:49Z (the original pull); USDC/USDT inflow measured per new signature (same method as the headline pass)","delta_tx":4,"delta_usdc":0.0001,"addresses_with_new_activity":1,"detail":[{"service":"madeonsol","address":"GLu63pRCYrp4BJu5P5ciYKxgeZFW9c8TJ8jWzK3TB9AR","new_tx":4,"new_usdc_inflow":0.0001,"note":"4 settlements in a ~4-minute burst ~19:25-19:32Z; 1 with observable USDC inflow (the other 3 settled with no net USDC delta on this address in the same transaction)"}],"quiet":"all other 45 addresses unchanged; the single poll error is the known 25-byte invalid address (kr-crypto-intelligence), not a new signal","running_totals_at_check":{"tx_30d":208,"usdc_inflow_30d":12.8406}}]}