Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
LABS
Guides

How to Monitor Transaction Throughput

A developer guide to measuring and tracking transaction throughput (TPS) across major blockchains using RPC endpoints, block explorers, and custom monitoring scripts.
Chainscore © 2026
introduction
PERFORMANCE METRICS

How to Monitor Transaction Throughput

Learn how to measure and analyze the rate of transactions processed by a blockchain network, a critical metric for assessing scalability and user experience.

Transaction throughput measures the number of transactions a blockchain network can process per second (TPS). It's a fundamental metric for evaluating a network's scalability and real-world utility. While Bitcoin and Ethereum handle ~7 and ~15-30 TPS respectively, high-performance chains like Solana aim for thousands. Monitoring throughput helps developers understand network capacity, identify bottlenecks, and anticipate fee markets. It's calculated by dividing the total transactions in a block by the block time.

To monitor throughput, you need access to blockchain data. You can query this directly from a node's RPC endpoint or use data providers. For example, to get recent TPS from an Ethereum node using ethers.js, you can fetch the latest block and its transaction count. The formula is: TPS = (txCount_currentBlock) / (timestamp_currentBlock - timestamp_previousBlock). This gives you a point-in-time measurement, but for accurate trends, you should average this over multiple blocks.

For continuous monitoring, setting up a dashboard is essential. Tools like Grafana with data from Prometheus or time-series databases can visualize TPS in real-time. You would write a script that periodically polls the chain (e.g., every 5 seconds), calculates the TPS, and writes it to your database. Alerts can be configured for when throughput drops below a threshold, indicating potential network congestion or issues with your node's sync status.

When analyzing throughput data, context is key. A sudden spike might indicate a popular NFT mint or token launch, while a sustained drop could signal network-wide problems. Compare your TPS measurements against the network's theoretical maximum and historical averages. Also, correlate TPS with other metrics like gas prices and mempool size; high throughput with low fees is ideal, while high throughput with soaring fees suggests demand is outstripping supply.

For developers, understanding throughput is crucial for dApp design. If your application expects 1000 users to perform an action simultaneously, you must know if the underlying chain can handle that load. Testing your application's performance under simulated load, using tools like Hardhat or custom scripts, can prevent surprises. Monitoring helps you decide if you need to implement layer-2 solutions, choose an alternative chain, or optimize your contract's gas usage to remain efficient during high-traffic periods.

prerequisites
ESSENTIAL CONCEPTS

Prerequisites

Before you can effectively monitor transaction throughput, you need to understand the foundational concepts and tools that power blockchain data analysis.

Transaction throughput is measured in transactions per second (TPS), a critical metric for evaluating blockchain scalability and performance. To monitor it, you must first understand the components that define a transaction's lifecycle: propagation (broadcasting to the network), mempool inclusion (waiting for validation), and block finalization (confirmation). Different blockchains, like Ethereum, Solana, or Polygon, have vastly different throughput capacities and consensus mechanisms, which directly impact how you collect and interpret this data. For instance, Solana's high TPS is achieved through parallel execution, while Ethereum's is constrained by its current block gas limit.

You will need access to reliable data sources. The most common method is via a node RPC endpoint, which allows you to query the blockchain directly for block data, pending transactions, and network status. Services like Alchemy, Infura, QuickNode, or running your own node (e.g., Geth for Ethereum, Solana Labs client) provide this access. Alternatively, you can use blockchain indexers like The Graph or Covalent, which offer structured, queryable datasets of historical transactions and blocks, simplifying the aggregation of throughput metrics over time.

A basic understanding of the target blockchain's data structures is required. You must know how to parse a block to count transactions. For example, an Ethereum block header contains fields like gasUsed and transactionsRoot, while the block body holds an array of transaction objects. On Solana, you would examine transactions within a confirmed block. You'll also need to handle the concept of block time—the average interval between blocks—as TPS is calculated by dividing the number of transactions in a block by the block time.

Proficiency in a programming language for data fetching and calculation is essential. Python with libraries like web3.py (Ethereum) or solana.py, or JavaScript/TypeScript with ethers.js or @solana/web3.js, are standard choices. Your script will need to: 1) Connect to an RPC provider, 2) Fetch the latest N blocks, 3) Extract and count transactions from each block, and 4) Calculate the average TPS over that period. You should also be comfortable working with JSON-RPC API calls, which are the standard interface for blockchain nodes.

Finally, consider the difference between theoretical maximum TPS (a network's designed limit under ideal conditions) and observed/actual TPS (real-world usage). Monitoring actual TPS requires a time-series approach, tracking metrics like peak usage periods, average block fullness (e.g., gas used/gas limit on Ethereum), and mempool backlog. Tools like Prometheus for metrics collection and Grafana for visualization are commonly used in production monitoring setups to create dashboards that display real-time and historical throughput data.

key-concepts-text
KEY CONCEPTS

How to Monitor Transaction Throughput

Transaction throughput, measured in transactions per second (TPS), is a critical metric for assessing blockchain performance and network health.

Throughput is calculated by dividing the total number of transactions processed in a given period by the duration of that period. For example, if a blockchain processes 15,000 transactions in a 60-second block, its throughput is 250 TPS. This is a theoretical maximum for that specific block. To get a more accurate picture, you should monitor this metric over longer timeframes—such as hourly or daily averages—to account for natural fluctuations in network activity and block production times.

To monitor throughput programmatically, you can query a node's RPC endpoint or use a block explorer API. The general process involves: 1) Fetching the most recent block, 2) Counting the number of transactions within it, 3) Dividing by the block time. For Ethereum, you can use the eth_getBlockByNumber RPC call. Here's a simplified Python example using Web3.py:

python
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('YOUR_RPC_URL'))
latest_block = w3.eth.get_block('latest')
tx_count = len(latest_block.transactions)
block_time = 12 # Ethereum's target block time in seconds
current_tps = tx_count / block_time
print(f"Current TPS: {current_tps}")

Note that this calculates TPS for a single block; real-world monitoring requires averaging over multiple blocks.

It's crucial to distinguish between theoretical TPS (based on block size and time) and actual sustained TPS (average rate over hours or days). Networks like Solana often report peak theoretical TPS (e.g., 65,000), but actual sustained rates are lower due to varying transaction loads. For a holistic view, combine TPS data with other metrics: pending transaction queue size, average gas fees, and network latency. Tools like Chainscore's Network Performance Dashboard aggregate this data across multiple chains, providing real-time and historical throughput analysis without requiring direct node access.

When analyzing throughput, consider the type of transactions. A high TPS value driven by simple token transfers is less computationally intensive than one driven by complex smart contract executions. Layer 2 solutions like Arbitrum or Optimism report their own TPS metrics, which reflect transactions settled on the L2 before being batched to Ethereum. Monitoring these requires querying the L2's specific sequencer or data availability layer. Always verify the data source: native node RPC offers raw data, while indexed services like The Graph or Covalent provide queryable historical datasets for trend analysis.

For production monitoring, set up automated alerts for throughput deviations. A sudden, sustained drop in TPS could indicate network congestion, a sequencer outage on an L2, or a potential security event. Conversely, a spike might signal a major protocol launch or airdrop event. By tracking throughput alongside block time and fee metrics, developers and network operators can make informed decisions about user experience, capacity planning, and infrastructure scaling.

method-1-block-explorer
METHOD 1

Using Block Explorers

Block explorers are the most accessible and immediate tools for monitoring a blockchain's transaction throughput, providing real-time data on block size, gas usage, and network congestion.

A block explorer is a web-based interface that allows you to inspect all activity on a blockchain. To monitor transaction throughput—the rate at which transactions are processed—you need to analyze key metrics displayed on the explorer's main dashboard. For Ethereum, tools like Etherscan and Blockscout show the current Transactions Per Second (TPS), average block time, and gas used per block. For Solana, Solana Explorer and Solscan display similar real-time metrics, including TPS and slot time.

The primary metric for throughput is Transactions Per Second (TPS). This is calculated by dividing the number of transactions in the most recent block by the block time. For example, if an Ethereum block contains 200 transactions and is produced every 12 seconds, the instantaneous TPS is ~16.7. However, a single data point can be misleading. To get an accurate picture, you should observe the Average TPS over a longer period, such as an hour or a day. Most explorers provide charts for this, showing how throughput fluctuates with network demand.

Beyond TPS, other explorer data points are crucial for throughput analysis. Block size and gas used per block indicate how full blocks are, which directly impacts confirmation times and fees. A consistently high gas usage percentage (e.g., over 90% on Ethereum) signals network congestion and a potential bottleneck for throughput. Additionally, monitoring the mempool or transaction pool shows the backlog of unconfirmed transactions. A large, growing mempool indicates that the network's current throughput is insufficient to handle incoming demand.

For a developer or researcher, this data is essential for performance testing and user experience planning. If you're building a dApp, knowing the typical and peak TPS of your target chain helps you design for realistic conditions. You can use explorers to conduct historical analysis by checking dates of high activity (like an NFT mint or a DeFi launch) to see how the network's throughput handled the stress. This research can inform decisions on whether to implement layer-2 scaling or adjust gas estimation logic in your application.

While user-friendly, block explorers have limitations for deep analysis. The TPS they report is often a live estimate, and historical data export for custom timeframes can be cumbersome. For more rigorous, programmatic analysis of throughput, you would need to use the chain's RPC endpoints directly or specialized data platforms, which is covered in subsequent methods. However, for a quick, reliable snapshot of current network health and throughput capacity, block explorers are an indispensable first tool.

method-2-rpc-script
PRACTICAL IMPLEMENTATION

Method 2: Building a TPS Monitor Script

A hands-on guide to creating a custom script that calculates and logs real-time transaction throughput for any EVM-compatible blockchain.

A custom TPS monitor script provides flexibility and deeper insight compared to public dashboards. You can tailor it to track specific metrics, filter transaction types, and integrate alerts. This method involves querying a node's RPC endpoint to fetch blocks, count transactions, and calculate the rate over a defined period. For this guide, we'll use Ethereum as the target chain and Node.js with the ethers.js library, but the logic applies to any EVM network like Polygon, Arbitrum, or Avalanche.

The core calculation is straightforward: Transactions Per Second (TPS) = (Total Transactions in N blocks) / (Total Time Span of N blocks). Your script needs to: 1) Fetch the latest block number, 2) Retrieve a range of previous blocks (e.g., the last 100), 3) Sum the transactions array length for each block, and 4) Divide by the time difference between the newest and oldest block. Using a larger sample size (more blocks) smooths out short-term volatility and provides a more stable average TPS figure.

Here is a basic implementation skeleton using ethers v6:

javascript
const { ethers } = require('ethers');
const RPC_URL = 'YOUR_MAINNET_RPC_ENDPOINT';
const SAMPLE_BLOCKS = 100;

async function calculateTPS() {
  const provider = new ethers.JsonRpcProvider(RPC_URL);
  const currentBlock = await provider.getBlockNumber();
  const blockRange = Array.from(
    {length: SAMPLE_BLOCKS},
    (_, i) => currentBlock - i
  );

  const blocks = await Promise.all(
    blockRange.map(b => provider.getBlock(b))
  );

  const totalTxs = blocks.reduce((sum, block) => sum + block.transactions.length, 0);
  const timeSpan = blocks[0].timestamp - blocks[blocks.length-1].timestamp;
  const tps = totalTxs / timeSpan;

  console.log(`Avg TPS over ${SAMPLE_BLOCKS} blocks: ${tps.toFixed(2)}`);
  return tps;
}

This script fetches blocks sequentially, which is simple but slow for large ranges. For production, consider using batch RPC calls or a dedicated archive node.

To transform this into a persistent monitor, wrap the logic in a scheduled task. You can use setInterval to run the calculation every 10-30 seconds, logging results to a file or sending them to a metrics service like Prometheus or Datadog. For advanced monitoring, modify the script to track Pending TPS by subscribing to the pendingTransactions event via provider.on('pending', ...), which counts transactions broadcast to the mempool but not yet confirmed.

Key considerations for a robust monitor include: RPC Rate Limiting (pace your requests or use a paid node provider), Error Handling (retry logic for failed block fetches), and Data Persistence (store results in a time-series database for historical analysis). Comparing your script's output with public data from Etherscan or Blocknative is a good way to verify accuracy. This custom approach gives you the foundation to build alerts for TPS spikes or drops that could indicate network congestion or unusual activity.

METHODS

Monitoring Tools and Methods Comparison

A comparison of approaches for monitoring blockchain transaction throughput, from basic explorers to dedicated analytics platforms.

Feature / MetricBlock Explorers (e.g., Etherscan)Node RPC & Indexers (e.g., The Graph)Dedicated Analytics Platforms (e.g., Chainscore, Dune)

Real-time TPS/Gas Tracking

Historical Throughput Analysis

Limited (30 days typical)

Custom Alerting & Webhooks

Limited (self-hosted)

Multi-Chain Dashboard

Network Congestion Metrics

Basic (Gas Price)

Advanced (Pending Tx Pool)

Advanced + Predictive

Cost (for full features)

Free

$200-2k+/month (infra)

$50-500+/month (SaaS)

Developer Setup Complexity

None

High (node ops, subgraphs)

Low (API/SDK)

Data Granularity

Block-level

Transaction & Event-level

Aggregated & Transaction-level

advanced-metrics
NETWORK PERFORMANCE

How to Monitor Transaction Throughput

Transaction throughput is a critical metric for evaluating blockchain network health and scalability. This guide explains how to measure and interpret it using on-chain data and common tools.

Transaction throughput measures the number of transactions a blockchain network can process per second (TPS). It's a direct indicator of network capacity and a key bottleneck for scaling. While theoretical maximums are often cited, real-world throughput is constrained by block size, block time, and network congestion. For example, Ethereum's base layer averages 15-30 TPS, while Solana targets over 2,000 TPS. Monitoring actual throughput helps developers assess if a network can handle their application's load and anticipate user experience issues like slow confirmations during peak demand.

To calculate current throughput, you need two primary data points: the number of transactions in a recent set of blocks and the time period those blocks represent. The formula is: Throughput (TPS) = Total Transactions / Total Time in Seconds. You can fetch this data directly from a node's RPC API. For instance, using eth_getBlockByNumber on Ethereum, you sum the transactions array length for the last 100 blocks and divide by 100 multiplied by the average block time (~12 seconds). This provides a rolling, real-world TPS figure more accurate than theoretical limits.

Several blockchain explorers and analytics platforms provide pre-calculated throughput metrics. For Ethereum, Etherscan shows current TPS on its homepage. For a multi-chain view, CoinMetrics.io offers historical TPS charts for dozens of networks. For custom monitoring, you can use tools like The Graph to create subgraphs that index transaction counts, or set up dashboards in Dune Analytics using SQL queries against public datasets. These platforms allow you to track throughput trends, correlate them with gas price spikes, and set alerts for performance degradation.

When interpreting throughput data, context is essential. A sudden TPS drop could indicate a network issue, but it might also simply reflect low user activity. Conversely, sustained high throughput nearing the network's limit often leads to increased transaction fees and failed transactions. It's crucial to differentiate between average throughput and peak throughput. For dApp developers, designing for the 95th percentile peak is often necessary to ensure reliability. Also, consider layer-2 solutions: monitoring the throughput of an Optimism rollup or Arbitrum chain requires checking their respective sequencer or block explorers, as it operates independently from mainnet.

For advanced, programmatic monitoring, you can build a simple script. Using the web3.js library, you could periodically fetch recent blocks and calculate TPS. Here's a basic Node.js example:

javascript
async function getCurrentTPS(web3, sampleBlocks = 100) {
    const latest = await web3.eth.getBlockNumber();
    let totalTxns = 0;
    let oldestBlockTime;
    for (let i = 0; i < sampleBlocks; i++) {
        const block = await web3.eth.getBlock(latest - i);
        totalTxns += block.transactions.length;
        if (i === sampleBlocks - 1) oldestBlockTime = block.timestamp;
    }
    const newestBlock = await web3.eth.getBlock(latest);
    const timeSpan = newestBlock.timestamp - oldestBlockTime;
    return timeSpan > 0 ? totalTxns / timeSpan : 0;
}

This script averages TPS over a customizable block range, providing a stable metric.

Ultimately, effective throughput monitoring is proactive, not reactive. Integrate TPS tracking into your application's health dashboard. Set up alerts for when throughput falls below a threshold critical for your users. Combine throughput data with other metrics like average confirmation time and mempool size to get a complete picture of network performance. For teams building on high-throughput chains like Solana or Avalanche, also monitor the rate of failed transactions or skipped slots, as these can indicate congestion despite high nominal TPS. Regular monitoring informs infrastructure decisions, user communication, and contingency planning.

TRANSACTION THROUGHPUT

Frequently Asked Questions

Common questions and troubleshooting for developers monitoring blockchain transaction speed and capacity.

Transaction throughput is the rate at which a blockchain network processes and confirms transactions, typically measured in transactions per second (TPS). It's a key performance metric indicating network capacity.

How it's calculated:

  • Block Size: The maximum data (in bytes or gas) a block can hold.
  • Block Time: The average time between new blocks being produced.
  • Average Transaction Size: The typical size of a transaction on the network.

For example, a network with a 12-second block time and a 30 million gas limit, where an average ERC-20 transfer uses 65,000 gas, has a theoretical maximum of: (30,000,000 gas / 65,000 gas per tx) / 12 seconds ≈ 38 TPS.

Real-world throughput is often lower due to block space competition, varying transaction complexity, and network congestion.

How to Monitor Blockchain Transaction Throughput | ChainScore Guides