Data Sources & Methodology

Full transparency on all addresses, contracts, and providers used in our benchmarks. Every address is verifiable on-chain through the links provided below.

Why Transparency Matters

Benchmark results are only meaningful if they're reproducible. By using the same well-known addresses across all providers, we ensure fair comparisons. High-activity wallets like vitalik.eth stress-test API performance with real-world data volumes. All addresses are publicly verifiable.

Test Wallets
Wallet addresses used for portfolio, transfer, and NFT benchmarks

Vitalik Buterin

vitalik.eth

Ethereum

Primary test wallet

One of the most active wallets on Ethereum with thousands of token holdings, hundreds of NFTs, and millions of transactions. Chosen because it stress-tests API pagination, indexing depth, and response payload handling. Every provider must demonstrate they can handle real-world data volumes.

Why chosen: Massive transaction history, diverse token holdings, extensive NFT collection - perfect for stress-testing data APIs

Uniswap Wallet

Alternative Test

Ethereum

Validation wallet

Secondary wallet used to validate consistency of benchmark results. Ensures APIs don't have special-case optimizations for popular addresses like vitalik.eth.

Why chosen: Cross-validates results, ensures no special-casing for famous addresses

Solana Test Wallet

High Activity

Solana

Solana benchmarks

High-activity Solana wallet with substantial SOL and SPL token holdings. Used for Solana-specific benchmarks and QuickNode RPC comparisons.

Why chosen: High transaction volume, diverse SPL token holdings, suitable for Solana API testing

USDC Contracts
Stablecoin contracts used for RPC race benchmarks (balanceOf calls)

USDC on Ethereum Mainnet

Ethereum Mainnet

RPC race - balanceOf()

Circle's official USDC stablecoin contract on Ethereum mainnet. This is one of the highest-volume contracts on Ethereum, processing millions of transfers daily.

Why chosen: Most liquid stablecoin, highest transfer volume, ideal for real-world RPC latency testing

USDC on Base Mainnet

Base Mainnet

RPC race - balanceOf()

Native USDC on Base L2 (not bridged). This is the official Circle-issued USDC contract on Coinbase's L2 network.

Why chosen: L2 comparison, native USDC (not bridged), high activity on Base

USDC on Ethereum Sepolia

Ethereum Sepolia

Testnet benchmarks

Circle's official USDC testnet token on Sepolia. Used for development and testing without real assets.

Why chosen: Official testnet token, faucet available, matches mainnet contract interface

USDC on Base Sepolia

Base Sepolia

Testnet benchmarks

USDC test token on Base's Sepolia testnet. Used for L2 development testing.

Why chosen: Base L2 testnet, compatible with Base mainnet workflows

USDC on Solana Mainnet

Solana Mainnet

Solana token benchmarks

Circle's official USDC SPL Token Mint on Solana. This is the canonical USDC token on Solana with the highest liquidity and adoption.

Why chosen: Official SPL token mint, highest Solana stablecoin volume, cross-chain comparison

USDC on Solana Devnet

Solana Devnet

Solana testnet benchmarks

USDC SPL Token on Solana devnet for development testing and integration validation.

Why chosen: Devnet testing, faucet tokens available

Race Target Wallets
High-balance wallets used as targets for balanceOf() calls in RPC races

Circle USDC Treasury

Ethereum

balanceOf() target

Circle's primary USDC treasury on Ethereum. This address holds billions of USDC and is used as the target for balanceOf() calls in RPC benchmarks.

Why chosen: Guaranteed high balance (billions), stable holdings, never zero - ensures consistent benchmark results

Coinbase on Base

Base

balanceOf() target

Coinbase's custody address on Base L2. Holds significant USDC reserves and is used as the target for Base chain RPC benchmarks.

Why chosen: Major L2 holder, significant USDC balance, reliable for Base chain testing

Benchmark Contracts (Data API vs RPC)
Custom deployed contracts for real-time comparison of Data API indexing vs direct RPC calls

How This Benchmark Works

These custom contracts let us measure the real-time performance gap between Data APIs and direct RPC calls:

  1. Write: Call increment() to change contract state and emit an event
  2. RPC Read: Immediately call get() via RPC to read the new value
  3. Data API Read: Query the Data API for the event/transaction to see when it's indexed
  4. Compare: Measure the latency difference between RPC (instant) and Data API (indexing delay)

This shows the trade-off: RPC is faster for reads, but Data APIs provide enriched, queryable data.

Counter Contract (EVM)

Ethereum Sepolia

Data API vs RPC

Custom Solidity counter contract deployed for real-time benchmarking. Exposes get() for reads, increment() for writes, and emits events on state changes. Compares how fast Data APIs index new events vs direct RPC reads.

Functions

get() - Read current valueincrement() - Increase and emit eventset(uint256) - Set value

Events

Incremented(uint256 newValue)Set(uint256 newValue)

Why chosen: Simple, deterministic state changes with events - perfect for measuring indexing latency vs RPC latency

contracts/Counter.solView on Etherscan

Counter Program (Solana)

Solana Devnet

Data API vs RPC

Custom Anchor program deployed for Solana benchmarking. Stores a counter in a PDA account. Tests how fast Data APIs reflect account state changes vs direct RPC account reads.

Functions

initialize(u64) - Create counterincrement() - Increase countset(u64) - Set value

Events

Account state changes logged via Anchor

Why chosen: Minimal Anchor program with predictable account structure - measures Solana indexing latency

solana/benchmark_counter/src/lib.rsView on Solscan
Event Signatures (Topics)
ERC20 event topic hashes used for log filtering and streaming benchmarks

Transfer

Event streaming benchmarks

Signature

Transfer(address indexed from, address indexed to, uint256 value)

Topic / Selector Hash

0xddf252ad1be2c89b69c2b068fc378daa80d26c7b64e6aed60d5a63c29e1f96e5

The ERC20 Transfer event emitted whenever tokens are transferred between addresses. This is the most common event on Ethereum and is used for real-time transfer monitoring benchmarks.

Approval

Event filtering tests

Signature

Approval(address indexed owner, address indexed spender, uint256 value)

Topic / Selector Hash

0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925

The ERC20 Approval event emitted when an allowance is set. Used to test event filtering capabilities alongside Transfer events.

Function Selectors
ERC20 function selectors used for eth_call RPC benchmarks

balanceOf

Primary RPC benchmark

Signature

balanceOf(address)

Topic / Selector Hash

0x70a08231

Returns the token balance of an address. This is the function called in RPC races to measure raw read latency across different providers.

totalSupply

Contract verification

Signature

totalSupply()

Topic / Selector Hash

0x18160ddd

Returns the total token supply. Used to verify contract state and validate RPC responses.

decimals

Response parsing

Signature

decimals()

Topic / Selector Hash

0x313ce567

Returns the number of decimals for the token. Used to correctly parse balance responses (USDC uses 6 decimals).

Benchmark Tasks (T1-T5)
Standardized test scenarios for comparing API provider performance
T1

Wallet Portfolio Snapshot

Fetches complete token balances with USD prices and metadata for a wallet address. Tests API's ability to aggregate multiple data sources into a single response.

Complexity:Medium
API Calls:1-3 calls

Supported Providers:

GoldRushMoralisAlchemyMobula
T2

Wallet Transfer Feed

Retrieves paginated transfer history (ERC20, ERC721, native) with decoded transaction data. Tests pagination handling and historical data depth.

Complexity:High
API Calls:1-10+ calls (paginated)

Supported Providers:

GoldRushMoralisAlchemy
T3

NFT Gallery

Fetches owned NFTs with full metadata (image URLs, attributes, collection info). Tests media resolution and metadata enrichment.

Complexity:High
API Calls:1-5 calls

Supported Providers:

GoldRushMoralisAlchemy
T4

Token Holders Snapshot

Retrieves holder list with balances for a specific token contract. Tests large dataset handling and sorting capabilities.

Complexity:Medium
API Calls:1-3 calls

Supported Providers:

GoldRushMoralis
T5

Token Price & Market Data

Fetches current and historical price data with market metrics (volume, market cap, price change). Tests price feed accuracy and update frequency.

Complexity:Low
API Calls:1 call

Supported Providers:

GoldRushCodexMobula
Benchmark Configuration
Available options for customizing benchmark runs

Iterations

1 (quick)Single run for rapid testing
5 (fast)Good for development
10 (default)Balanced accuracy
25 (thorough)Production testing
50 (comprehensive)Statistical significance
100 (full)Maximum accuracy

Execution Modes

sequentialPrecise latency

Runs requests one at a time per provider. Most accurate latency measurements, no burst contention.

parallelThroughput testing

Runs multiple requests concurrently against the same provider (default 3 in flight) to test burst performance.

Statistics Collected

MinFastest response time observed
Avg (Mean)Average response time
P50 (Median)50th percentile - typical response
P9595th percentile - worst-case excluding outliers
P9999th percentile - near-worst case
MaxSlowest response time observed
StdDevConsistency measure - lower is more predictable
Contract Comparison Tests
Tests comparing Data API indexing speed vs direct RPC performance

Ethereum Test

Sepolia Testnet

Compares Data API indexing speed vs direct RPC calls on Ethereum Sepolia

Contract

0xB3492cf80B1C2F6FaF88abF40c315FaC1E48CAeF

Solana Test

Devnet

Compares Data API indexing speed vs direct RPC calls on Solana Devnet

Contract

HN5wEkDnunHUqRzZZMudVBVDvdbQVgrcbGJnvyPZ8D7p
API Providers Tested
Data API and RPC providers included in the benchmark suite
ProviderTypeCoverageFree TierStreamingDescription
GoldRush (Covalent)Data APIEVM + Solana (200+ chains)100K credits/moGraphQL WebSocketUnified multichain data API with REST and GraphQL WebSocket streaming. Provides indexed, enriched blockchain data.
MoralisData APIEVM (24 chains)40K CU/dayWebhooksWeb3 data platform with extensive EVM chain support. Uses webhook-based streaming.
CodexData APIEVM (80 chains)10K req/moGraphQLToken price and market data API via GraphQL. Specializes in DeFi token analytics.
MobulaData APIEVM + Multi (88 chains)10K creditsWebSocketMarket data and wallet analytics with WebSocket streaming support.
BitqueryData APIEVM + Multi (40 chains)1K points trialGraphQL + KafkaGraphQL-based blockchain data with DEX analytics and real-time streaming via Kafka.
ChainbaseData APIEVM (9 chains)2 RPS freeWebhooksWeb3 data cloud with SQL querying capability. REST, GraphQL, and SQL support.
ZerionData APIEVM (26 chains)2K req/daySmart WebhooksDeFi portfolio aggregation with positions, transactions, and PnL tracking.
AlchemyRPCEVM (64 chains)300M CU/moWebSocketEnterprise-grade node infrastructure with enhanced APIs. Industry standard for EVM RPC.
QuickNodeRPCEVM + Solana (25 chains)10M req/moWebSocketHigh-performance RPC with WebSocket support. Used for EVM and Solana benchmarks.
AnkrRPCEVM (35 chains)Unlimited basicRPCDistributed multichain RPC with geo-distributed nodes. Includes enhanced APIs.
PublicNodeRPCEVM (50 chains)UnlimitedWebSocketFree, public RPC endpoints. Community-operated with no rate limiting.
dRPCRPCEVM (40 chains)25K req/moWebSocketDecentralized RPC network with multiple node providers. Free tier with generous limits.
LlamaRPCRPCEVM (20 chains)UnlimitedRPCPrivacy-preserving RPC by DefiLlama. No request logging, completely free to use.

Benchmark Methodology

  • Server-side timing: All latency measurements are taken server-side using high-resolution timers to eliminate client-side variance, network jitter, and browser differences.
  • Warm-up calls: 2 warm-up requests are made before measuring to account for cold starts, connection pooling, and DNS resolution. Only steady-state performance is measured.
  • Identical parameters: Same wallet addresses (vitalik.eth), page sizes (100 items), and time windows across all providers to ensure apples-to-apples comparison.
  • Rate limit compliance: All requests stay within each provider's free tier limits. We implement exponential backoff (400ms base, 4s max) for rate-limited responses.
  • No caching: Each test makes fresh API calls without response caching. We measure actual API performance, not CDN or cache performance.
  • Timeout handling: 30-second timeout per request. Failed requests are recorded separately and don't skew latency averages.

Summary

5
Benchmark Tasks
13
Providers
3
Test Wallets
2
Contracts
6
Iteration Presets
7
Stats Tracked

Reproducibility

All addresses and contracts listed on this page are publicly verifiable. Click any address to view it on the corresponding block explorer. You can independently verify:

  • • Wallet transaction history and token holdings
  • • Contract source code (verified contracts)
  • • Token transfer volumes and activity levels
  • • Historical balance changes