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.
Vitalik Buterin
vitalik.ethEthereum
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 TestEthereum
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 ActivitySolana
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 on Ethereum Mainnet
Ethereum Mainnet
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
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
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
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
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
USDC SPL Token on Solana devnet for development testing and integration validation.
Why chosen: Devnet testing, faucet tokens available
Circle USDC Treasury
Ethereum
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
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
How This Benchmark Works
These custom contracts let us measure the real-time performance gap between Data APIs and direct RPC calls:
- Write: Call
increment()to change contract state and emit an event - RPC Read: Immediately call
get()via RPC to read the new value - Data API Read: Query the Data API for the event/transaction to see when it's indexed
- 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
Contract Address
0xB3492cf80B1C2F6FaF88abF40c315FaC1E48CAeFCustom 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 valueEvents
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 EtherscanCounter Program (Solana)
Solana Devnet
Contract Address
HN5wEkDnunHUqRzZZMudVBVDvdbQVgrcbGJnvyPZ8D7pCustom 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 valueEvents
Account state changes logged via AnchorWhy chosen: Minimal Anchor program with predictable account structure - measures Solana indexing latency
solana/benchmark_counter/src/lib.rsView on SolscanTransfer
Event streaming benchmarksSignature
Transfer(address indexed from, address indexed to, uint256 value)Topic / Selector Hash
0xddf252ad1be2c89b69c2b068fc378daa80d26c7b64e6aed60d5a63c29e1f96e5The 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 testsSignature
Approval(address indexed owner, address indexed spender, uint256 value)Topic / Selector Hash
0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925The ERC20 Approval event emitted when an allowance is set. Used to test event filtering capabilities alongside Transfer events.
balanceOf
Primary RPC benchmarkSignature
balanceOf(address)Topic / Selector Hash
0x70a08231Returns the token balance of an address. This is the function called in RPC races to measure raw read latency across different providers.
totalSupply
Contract verificationSignature
totalSupply()Topic / Selector Hash
0x18160dddReturns the total token supply. Used to verify contract state and validate RPC responses.
decimals
Response parsingSignature
decimals()Topic / Selector Hash
0x313ce567Returns the number of decimals for the token. Used to correctly parse balance responses (USDC uses 6 decimals).
Ethereum Test
Sepolia TestnetCompares Data API indexing speed vs direct RPC calls on Ethereum Sepolia
Contract
0xB3492cf80B1C2F6FaF88abF40c315FaC1E48CAeFSolana Test
DevnetCompares Data API indexing speed vs direct RPC calls on Solana Devnet
Contract
HN5wEkDnunHUqRzZZMudVBVDvdbQVgrcbGJnvyPZ8D7p| Provider | Type | Coverage | Streaming | Description |
|---|---|---|---|---|
| GoldRush (Covalent) | Data API | EVM + Solana | GraphQL WebSocket | Unified multichain data API with REST and GraphQL WebSocket streaming. Provides indexed, enriched blockchain data. |
| Moralis | Data API | EVM | Webhooks | Web3 data platform with extensive EVM chain support. Uses webhook-based streaming. |
| Codex | Data API | EVM | GraphQL | Token price and market data API via GraphQL. Specializes in DeFi token analytics. |
| Mobula | Data API | EVM + Multi | WebSocket | Market data and wallet analytics with WebSocket streaming support. |
| Alchemy | RPC | EVM | WebSocket | Enterprise-grade node infrastructure with enhanced APIs. Industry standard for EVM RPC. |
| Ankr | RPC | EVM | RPC | Distributed multichain RPC with geo-distributed nodes. Free tier available. |
| PublicNode | RPC | EVM | RPC | Free, public RPC endpoints. No rate limiting, community-operated. |
| dRPC | RPC | EVM | RPC | Decentralized RPC network with multiple node providers. Free tier with generous limits. |
| LlamaRPC | RPC | EVM | RPC | Privacy-preserving RPC by DefiLlama. No request logging, free to use. |
| QuickNode | RPC | Solana | WebSocket | High-performance Solana RPC with WebSocket support. Used for Solana benchmarks. |
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
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