tektonic
All Posts
x402SolanaBaseBigQueryAnalyticsInfrastructure

Building Institutional-Grade x402 Analytics on BigQuery

A deep dive into how we built a public, SQL-queryable ledger of every x402 micro-payment on Solana and Base. Covering schema design, extraction pipelines, cost-aware partitioning, on-chain validation methodology, and reproducible queries for every figure we report.

Tektonic Labs / Engineering2026-04-0318 min read

Why We Built This

The x402 protocol repurposes the HTTP 402 Payment Required status code for permissionless, per-request API monetization. Clients generate cryptographic signatures offline, retry requests with payment headers, and facilitators verify and settle USDC on-chain, all within a single block. It is elegant. And it is scaling fast. We have now indexed every high-fidelity x402 transaction from the absolute genesis of the protocol across both Solana and Base. On Solana, the first x402 payment settled at 2025-07-04 04:58:21 UTC. On Base, it was 2025-07-02 11:26:05 UTC. From those first blocks through April 2026, the protocol has processed 173,938,621 successful payments totaling $49,262,937 in USDC volume. When we surveyed the tooling landscape, we found dashboards and explorers. Useful for quick lookups. But nothing built for the teams that actually need to query, audit, and monitor x402 flows at institutional scale: compliance desks, risk engineers, protocol auditors, and data teams inside funds and exchanges. So we built Tektonicx402: a public, open-access ledger of every x402 micro-payment on Solana and Base, published as Google BigQuery public datasets under CC-0. No API keys. No rate limits. Just SQL.

The Verified Ledger (as of April 3, 2026)

47.84M

Solana Successful Txns

47,842,167 since genesis

126.1M

Base Successful Txns

126,096,454 since genesis

173.9M

Total Txns

across both networks

$8.59M

Solana Volume

cumulative USDC settled

$40.67M

Base Volume

cumulative USDC settled

$49.26M

Total Volume

combined USDC settled

Reproducing These Figures

This is the exact query that produces the numbers above. Run it yourself against the Tektonic x402 public dataset on BigQuery Analytics Hub. Every figure we report in this post can be traced back to a query like this one.

sql
SELECT
  chain,
  COUNT(*) AS total_tx,
  SUM(amount_usdc) AS total_vol
FROM (
  SELECT 'solana' as chain, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.sol_raw`
  WHERE tx_status = 'SUCCESS'
  UNION ALL
  SELECT 'base' as chain, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.base_raw`
  WHERE tx_status = 1
)
WHERE block_timestamp >= TIMESTAMP("2024-01-01")
GROUP BY chain;

Methodology and Rigor

The data presented throughout this post is derived from a BigQuery-native extraction engine. Unlike polling-based indexers, our methodology enforces three constraints that we consider non-negotiable for institutional-grade reporting. Atomic State Validation. Only transactions with tx.err = '' (Solana) and receipt_status = 1 (Base) are counted toward volume. This ensures exactly 0.00% inflation from reverted or failed executions. On Solana, a transaction can land on-chain and still fail. The runtime marks it with an error status, but it is present in the ledger. On Base, transactions can revert after inclusion. If you are building an explorer for casual browsing, showing these is fine. If you are building infrastructure for institutional reporting, it is not. A compliance report that includes failed payments is wrong. A volume metric that counts reverted transactions is misleading. Signer-Level Attribution. We resolve Associated Token Accounts (ATAs) to their underlying owner wallets entirely inside the data warehouse. This ensures we capture P2P settlements even if they occur through un-indexed third-party clients. Temporal Precision. Data is partitioned daily on block_timestamp to prevent historical drift and ensure linear accountability. Every query against our dataset enforces a partition filter. This is not optional. Unpartitioned queries on the Solana public dataset scan 100TB+ and generate $5,000 to $20,000 in BigQuery bills. Our extraction queries enforce block_timestamp range filters to keep costs between $0.50 and $2.00 per single-day window.

Architecture Overview

Our pipeline bypasses traditional RPC methods entirely. Instead of polling nodes through rate-limited APIs, we source execution traces directly from validator-level data exports into BigQuery. This eliminates third-party indexer dependencies and ensures we capture every settlement, including those that batch-fetching approaches silently drop when volume spikes. The dataset is published on Google BigQuery Analytics Hub under project web3-publicgoods, natively unified in us-central1. To subscribe, save the dataset into your GCP project with a reference name (e.g., tektonic_x402) and replace placeholder project IDs in our SQL templates with your Google Cloud Project identifier.
1

Validator-level blockchain data exports feed into BigQuery raw tables

2

Extraction queries filter USDC transfers by known facilitator registries (28 orgs on Base, 15 on Solana)

3

Failed/reverted transactions are explicitly filtered: tx.err = '' on Solana, receipt_status = 1 on Base

4

ATA resolution maps token accounts to owner wallets inside the warehouse

5

Normalized outputs populate sol_raw and base_raw with human-readable USDC amounts

6

Five pre-built analytics views aggregate volumes, facilitators, buyers, sellers, and hourly trends

Solana Schema: sol_raw

The Solana extraction table sources from bigquery-public-data.crypto_solana_mainnet_us, using BigQuery's pre-decoded Token Transfers table rather than parsing raw instruction JSON. This is a critical design choice. It avoids brittle JSON field extraction and leverages Google's native Solana decoding pipeline. We identify x402 payments by finding USDC transfers where known facilitators appear as transaction signers, then enrich with amount normalization and execution status tracking. The facilitator registry currently contains 15 organizations across 22 public keys.
ColumnTypePurpose
tx_signatureSTRINGSolana transaction identifier (base58 encoded)
block_timestampTIMESTAMPBlock time. Used for mandatory partition filtering.
token_mintSTRINGUSDC token mint address
source_ataSTRINGBuyer's Associated Token Account
destination_ataSTRINGSeller's Associated Token Account
amount_usdcFLOAT64Human-readable transfer quantity
transaction_fromSTRINGPrimary signer / fee payer address
facilitator_signerSTRINGMatched x402 facilitator public key
tx_statusSTRINGSUCCESS or FAILED execution status
transfer_indexINTEGERPosition within transaction
chainSTRINGAlways "solana"

Base Schema: base_raw

The Base extraction targets canonical ERC-20 Transfer(address, address, uint256) events rather than TransferWithAuthorization, with the facilitator address serving as the x402 identifier signal. The facilitator registry contains 28 organizations across 100+ wallet addresses, including Coinbase CDP, PayAI, Questflow, Virtuals, and Thirdweb. Base queries are substantially cheaper than Solana. The dataset is smaller and partitioning costs are lower. The extraction query creates a temporary table of known facilitator addresses, filters for USDC transfers from the specific contract (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), and joins against the registry.
ColumnTypePurpose
tx_hashSTRINGBase transaction identifier
block_timestampTIMESTAMPSettlement block time
block_numberINTEGERBase block height
log_indexINTEGEREvent position within transaction
senderSTRINGUSDC payer (end-user or AI agent)
recipientSTRINGUSDC receiver (service provider)
facilitator_addressSTRINGTransaction submitter wallet
facilitator_nameSTRINGFacilitator ID (coinbase, virtuals, etc.)
amount_usdcFLOAT64Settlement value in human-readable USDC
chainSTRINGAlways "base"

Substantiating the Solana 51% Claim

We want to be precise about this because it matters. The claim that "Solana accounts for 51% of x402 payment volume" requires context. Base currently leads cumulative volume ($40.67M vs $8.59M) due to a large-scale merchant expansion in November 2025 that drove high-value settlements. Solana's strength is in transaction frequency, not average ticket size. During January 2026, Solana handled 50.6% of all global x402 transaction traffic: 11,926,526 successful payments versus 11,646,828 on Base. This is what we mean by the "51% share." It refers to transaction count dominance during the period when Solana achieved consumer adoption parity with Base. Average transaction values tell a complementary story. Base averages $0.32 per tick. Solana averages $0.17 per tick. The developer ecosystem on Solana is moving at a higher native frequency with smaller per-call settlements, which is consistent with AI agent micro-payment patterns. Solana also experienced a capital dominance peak in December 2025, capturing 65.9% of total USDC volume ($6.3M vs $3.2M on Base). This proves that SVM-based AI agents were moving larger capital chunks per API call during the holiday infrastructure surge. The following query reproduces the January 2026 parity window. We encourage researchers to modify the date range and verify independently.

January 2026 Transaction Parity (Reproducing the 51% Claim)

This query isolates January 2026 to show the month where Solana reached 50.6% of global x402 transaction traffic.

sql
SELECT
  chain,
  COUNT(*) AS successful_txns,
  ROUND(SUM(amount_usdc), 2) AS volume_usdc,
  ROUND(AVG(amount_usdc), 4) AS avg_tx_usdc
FROM (
  SELECT 'solana' AS chain, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.sol_raw`
  WHERE tx_status = 'SUCCESS'
    AND block_timestamp >= TIMESTAMP("2026-01-01")
    AND block_timestamp <  TIMESTAMP("2026-02-01")
  UNION ALL
  SELECT 'base' AS chain, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.base_raw`
  WHERE tx_status = 1
    AND block_timestamp >= TIMESTAMP("2026-01-01")
    AND block_timestamp <  TIMESTAMP("2026-02-01")
)
GROUP BY chain;

Comparative Analysis: Why Explorer-Based Indexers Under-Report

In an audit of the Merit-Systems/x402scan backend (specifically packages/backend/src/workers/prod-solana-sampling.sql), we identified two technical bottlenecks that explain why polling-based dashboards significantly under-report volume. 1. Registration Dependency. x402scan indexes via webhooks on registered ResourceResponse records. If an AI agent launches a facilitator-compliant API but skips the manual Faremeter registration, x402scan remains 100% blind to those transactions. Our pipeline has no registration requirement. We identify x402 payments purely by signer-level facilitator matching against on-chain data. 2. Lack of ATA Resolution. Their indexer scripts (as of v1.2) primarily track raw account address interactions. Our pipeline natively maps Associated Token Accounts to underlying owner wallets, revealing a 40x increase in unique transaction detection on Solana during the March 2026 window. We want to be clear: x402scan provides valuable discovery and visibility for the ecosystem. The distinction is the same one that exists between Etherscan and Dune Analytics. Explorers are for looking things up. Analytics infrastructure is for building on top of. When an institution needs x402 monitoring integrated into their existing data stack, they need SQL access to clean, historically complete data.
Tektonicx402scan
Total transfers15,94914,644
Total volume (USDC)$766.66$719.36
Delta+8.9% txns, +6.6% volbaseline
Failed txn handling118 explicitly filteredno failure filtering
Data sourcevalidator-level exportsthird-party indexers
Registration requirednoyes (Faremeter)
ATA resolutionnative warehouse joinsraw address only

Production Queries for Researchers

Below are queries designed for researchers and institutional data teams. Each one runs against the Tektonic x402 public dataset on BigQuery Analytics Hub. For queries against your own linked dataset, replace web3-publicgoods.tektonic_x402 with your project reference. All Solana queries must include block_timestamp partition filters to avoid runaway scan costs.

Daily Volume and Success Rate (Solana)

Aggregates daily transaction volume and success rates. Cost: approximately $0.50 to $2.00 per day scanned.

sql
SELECT
  DATE(block_timestamp) AS day,
  COUNT(*)              AS total_txns,
  COUNTIF(tx_status = 'SUCCESS') AS success_txns,
  ROUND(COUNTIF(tx_status = 'SUCCESS') / COUNT(*) * 100, 2)
                        AS success_rate_pct,
  ROUND(SUM(IF(tx_status = 'SUCCESS', amount_usdc, 0)), 2)
                        AS volume_usdc
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-01")
  AND block_timestamp <  TIMESTAMP("2026-04-01")
GROUP BY day
ORDER BY day DESC;

Facilitator Market Share (Solana)

Ranks facilitators by volume. Useful for evaluating which AI agents and API gateways drive the most x402 settlement activity.

sql
SELECT
  facilitator_signer,
  COUNT(*)                    AS total_txns,
  ROUND(SUM(amount_usdc), 2) AS total_volume_usdc,
  COUNT(DISTINCT transaction_from) AS unique_buyers,
  MIN(block_timestamp)        AS first_seen
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-01")
  AND tx_status = 'SUCCESS'
GROUP BY facilitator_signer
ORDER BY total_volume_usdc DESC
LIMIT 20;

Cross-Chain Daily Comparison

Unified query across both chains. One of the key advantages of having both datasets in the same BigQuery project.

sql
WITH combined AS (
  SELECT 'solana' AS chain, block_timestamp, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.sol_raw`
  WHERE tx_status = 'SUCCESS'
    AND block_timestamp >= TIMESTAMP("2026-03-01")
  UNION ALL
  SELECT 'base' AS chain, block_timestamp, amount_usdc
  FROM `web3-publicgoods.tektonic_x402.base_raw`
  WHERE tx_status = 1
    AND block_timestamp >= TIMESTAMP("2026-03-01")
)
SELECT
  chain,
  DATE(block_timestamp)       AS day,
  COUNT(*)                    AS txns,
  ROUND(SUM(amount_usdc), 2) AS volume_usdc
FROM combined
GROUP BY chain, day
ORDER BY day DESC, chain;

Network Health Diagnostics (Solana)

Monitors daily failure rates across the x402 payment network. Critical for risk desks and SLA monitoring.

sql
SELECT
  DATE(block_timestamp) AS day,
  COUNT(*)              AS total,
  COUNTIF(tx_status = 'FAILED') AS failed,
  ROUND(COUNTIF(tx_status = 'FAILED') / COUNT(*) * 100, 4)
                        AS failure_rate_pct
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-25")
GROUP BY day
ORDER BY day DESC;

Wallet Spending History (Solana)

Reconstruct a specific wallet's x402 payment history. Useful for compliance investigations and user-level analytics.

sql
SELECT
  tx_signature,
  block_timestamp,
  destination_ata    AS seller,
  facilitator_signer AS facilitator,
  amount_usdc,
  tx_status
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE transaction_from = '< WALLET_ADDRESS >'
  AND block_timestamp >= TIMESTAMP("2026-01-01")
ORDER BY block_timestamp DESC;

Pre-Built Analytics Views

Both chains provide five core aggregation views, designed for the queries institutional users actually run. These are defined in base_aggregate_stats.sql and sol_aggregate_stats.sql: 1. Summary Dashboard. total_transactions, total_volume_usdc, unique_buyers, unique_sellers, active_facilitators. 2. Per-Seller Ranking. Recipients ranked by volume with transaction counts and buyer diversity metrics. 3. Per-Facilitator Analysis. Transaction volume and participant counts by facilitator. Useful for evaluating settlement infrastructure. 4. Hourly Timeseries. Hour-bucketed activity with transaction counts, volume, and unique buyer participation for monitoring and alerting. 5. Top Buyers. Senders ranked by spending with seller diversity and payment timespan. Useful for AML screening and whale tracking.

A Note on Data Purity

Every row in our dataset represents a real, settled USDC payment. We enforce tx_status = 'SUCCESS' on Solana and receipt_status = 1 on Base at extraction time. This is not a filter applied at query time. It is baked into the extraction pipeline itself. The result is 0.00% inflation from reverted or failed executions. If you are running compliance reports, risk models, or volume metrics against this dataset, you can trust the numbers without additional filtering.

Getting Started

Step 1: Visit the Tektonic x402 Public Dataset on Google BigQuery Analytics Hub.
Step 2: Click Add dataset to project and save it with a reference name (e.g., tektonic_x402).
Step 3: Run any query from this post against web3-publicgoods.tektonic_x402 directly, or replace with your own linked project reference.
Step 4: For Solana queries, always include block_timestamp partition filters. Unpartitioned scans cost thousands of dollars.

The full pipeline source, facilitator registries, and additional queries are available on GitHub under CC-0. The dataset is maintained by Tektonic Labs with support from Google Cloud Web3 and the Solana Foundation.

Built for What Comes Next

The x402 protocol is still early. But the growth trajectory is clear. As AI agents increasingly monetize APIs, access compute, and settle micro-payments autonomously, transaction volumes will grow by orders of magnitude. We built this infrastructure for that future, not the current state. BigQuery scales horizontally without intervention. Our analytical views recompute incrementally. The pipeline handles chain reorganizations and late-arriving data gracefully. We are publishing this data because we believe the agentic economy deserves the same quality of financial infrastructure that traditional markets take for granted. Every figure in this post has a query behind it. Every query runs against a public dataset. Every dataset is open source. We invite every data team, auditor, and builder in the ecosystem to subscribe to the dataset, reproduce our results, and build on top of them.