Ethereum's Dencun upgrade introduced EIP-4844, which added a new transaction type for blob-carrying transactions. This created a separate, temporary data storage layer called blob space. Unlike calldata, blob data is not accessible to the Ethereum Virtual Machine (EVM) and is pruned after approximately 18 days. Its primary purpose is to provide a low-cost data availability solution for Layer 2 rollups, enabling them to post transaction data more cheaply and pass those savings to users.
How to Evaluate Blob Space Usage
Introduction to Blob Space Analysis
A technical guide to analyzing blob space usage, a new data availability layer introduced by Ethereum's Dencun upgrade.
To evaluate blob space usage, you must analyze the blob gas market. Blob gas is priced by a separate EIP-1559-style fee mechanism, independent of standard execution gas. The target blob gas per block is 0.375 MB (or three 128 KB blobs), with a maximum limit of 0.75 MB (six blobs). You can monitor real-time metrics like blob gas price, blobs per block, and total blob count using block explorers like Etherscan or dedicated dashboards from Ultrasound.money and Dune Analytics. A sustained high blob gas price indicates demand is exceeding the target capacity.
For developers, interacting with blob data requires specific tools. You can query blob information using the eth_getBlobSidecar RPC method introduced in the Ethereum Execution API. Analyze a blob's content by fetching it from the beacon node consensus layer. The following Python snippet using the web3.py library demonstrates how to get blob data for a transaction: blob_data = w3.eth.get_blob_sidecar(block_identifier='latest'). Remember, the raw blob data is encoded in KZG commitments and must be decoded for analysis.
Key metrics for a comprehensive analysis include blob utilization rate (used vs. target capacity), average blob size, and the ratio of blob-carrying transactions to total transactions. Track which Layer 2 networks (like Optimism, Arbitrum, zkSync) are the largest consumers of blob space. A sudden spike in usage or a consistently full blob block may signal the need for parameter adjustments or the eventual need for blob scaling solutions like data availability sampling in future upgrades.
Understanding blob space is crucial for rollup developers optimizing data costs, node operators ensuring proper synchronization, and researchers studying Ethereum's scaling roadmap. By monitoring its usage patterns, the community can gauge the success of proto-danksharding and plan for the full danksharding implementation, which will further expand this data layer's capacity and efficiency.
How to Evaluate Blob Space Usage
Understanding blob space consumption is critical for developers building on Ethereum's post-Dencun ecosystem. This guide covers the core concepts and tools needed to analyze and optimize your data availability costs.
Ethereum's EIP-4844 (Proto-Danksharding) introduced blob-carrying transactions, a new transaction type that includes large data packets called blobs. Unlike calldata, blobs are stored temporarily in the Beacon Chain consensus layer for approximately 18 days and are significantly cheaper. To evaluate usage, you must understand the unit of measurement: a single blob provides ~128 KB of raw data space, but due to encoding, the usable space for your application's data is approximately 125 KB. The primary metric is blob gas, a separate fee market that dynamically adjusts based on network demand for blob space.
You will need to interact with the blob gas price oracle to estimate costs. This can be done by querying the blobBaseFee field from the latest block header via an Ethereum RPC endpoint like eth_getBlockByNumber. Monitoring tools such as Etherscan's blob tracker or Ultrasound.money provide real-time visualizations of blob gas prices and utilization. For development and testing, you can use a local testnet (e.g., a Hardhat or Foundry node with EIP-4844 support) or a public testnet like Holesky to experiment with blob transactions without spending mainnet ETH.
From a technical perspective, evaluating usage requires understanding how your application serializes data into a blob. Common use cases include Layer 2 rollup proof submission and cheap data storage for decentralized applications. You'll need to calculate the number of blobs required for your payload. For example, if your application needs to post 300 KB of commitment data, you will require ceil(300 KB / 125 KB) = 3 blobs. Each blob in a transaction consumes blob gas, and a single transaction can include up to 6 blobs.
Key tools for analysis include blockchain explorers with blob support, RPC methods for fetching blob data (eth_getBlobSidecars), and libraries like ethers.js v6 or viem which have built-in abstractions for constructing blob transactions. To proactively manage costs, implement logic in your smart contracts or off-chain services to monitor the blob gas price and potentially delay non-urgent data submissions during periods of high congestion, similar to strategies used for regular transaction fee estimation.
Key Concepts: Blobs, Data Availability, and Gas
Ethereum's Dencun upgrade introduced blob-carrying transactions to reduce Layer 2 costs. This guide explains how to measure and evaluate blob space usage for developers and network analysts.
Blob-carrying transactions are a new transaction type introduced by EIP-4844. Instead of storing large data chunks in expensive calldata, they attach blobs—large, temporary data packets stored in the Beacon Chain consensus layer for approximately 18 days. This separation of execution and data availability is the core innovation, dramatically reducing the gas costs for Layer 2 rollups to post data to Ethereum. Each transaction can carry up to 6 blobs, with each blob containing roughly 128 KB of compressed data. The primary metric for network capacity is blobs per slot, with a target of 3 and a maximum of 6.
To evaluate blob space usage, you must monitor both blob count and blob gas. Unlike execution gas, blob gas is priced by a separate, dynamic fee market defined by EIP-4844. The base fee for blobs adjusts per block based on the target of 3 blobs per slot. You can query this data using the eth_getBlockByNumber RPC call with the blobGasUsed and excessBlobGas fields. Key tools for analysis include block explorers like Etherscan (which now shows blob counts), the beaconcha.in explorer for consensus layer data, and custom scripts using libraries like ethers.js or web3.py to parse transaction receipts and block headers.
A practical method for tracking usage is calculating the blob utilization rate. This is the percentage of the available blob space (max 6 blobs per slot) being consumed over a given period. High utilization rates (consistently >80%) indicate high demand, which will increase blob gas fees via the EIP-4844 pricing mechanism. To calculate this, you can use a formula like: (Total Blobs in N Slots / (6 * N)) * 100. Monitoring this rate helps predict fee trends and understand the adoption pressure on the new data availability layer. Real-time dashboards from platforms like Ultrasound.Money provide this visualization.
For developers posting blobs, such as rollup operators, it's critical to estimate costs. The gas cost for a blob transaction has two components: 1) the execution cost for the minimal transaction on-chain, and 2) the blob gas cost for the data. You can estimate blob gas using the formula derived from the EIP: blobGas = BLOB_GAS_PER_BLOB * blob_count. The BLOB_GAS_PER_BLOB constant is 131,072 gas. The total blob gas fee is then blobGas * blobBaseFee. In code, you can fetch the current blobBaseFee from the latest block header or using the eth_blobBaseFee RPC method introduced by EIP-4844.
Understanding the data availability sampling (DAS) mechanism is key to grasping blob security. Unlike calldata, blob data is not fully executed by Ethereum nodes. Instead, it is made available for download, and consensus clients ensure its availability through a KZG commitment scheme and sampling. This allows light clients and Layer 2s to cryptographically verify that the data exists without downloading it entirely. The 18-day storage window is designed to be sufficient for all parties, like fraud provers or validity provers, to challenge or verify rollup state transitions. After this period, only the small commitments are stored long-term.
When analyzing blob economics, compare the cost per byte against the old calldata method. Pre-Dencun, posting 128 KB of data as calldata could cost over 0.1 ETH in mainnet gas fees during high congestion. Post-Dencun, the same data in a blob typically costs a fraction of a cent in ETH terms. This 100x+ reduction is the direct benefit. However, blob gas is volatile and responds to demand. Developers should implement gas estimation logic that checks both execution and blob base fees, and consider strategies like blob batching to post data for multiple rollup blocks in a single transaction to maximize efficiency and cost savings.
Tools for Blob Data Analysis
Analyzing blob space usage is critical for optimizing costs and understanding network activity post-EIP-4844. These tools help developers track, decode, and benchmark blob data.
Node Client RPC Methods
Directly query your execution or consensus client for blob data using standard RPC methods.
eth_getBlobSidecars: Retrieve blob sidecars for a given block.eth_blobGasPrice: Get the current blob gas price.eth_feeHistory: Analyze historical base and blob gas prices.- Beacon Chain API: Use endpoints like
/eth/v1/beacon/blob_sidecars/{block_id}to fetch sidecars. This is essential for developers building applications that programmatically interact with blob data.
Custom Indexing with The Graph
Build a subgraph to index and query blob-related events for your specific application. You can:
- Index the
BlobTransactionevent to track all blob posts from a specific contract. - Create custom metrics like average blob size per user or weekly data volume.
- Serve this indexed data via GraphQL to your frontend or analytics tools. This approach is for teams needing tailored, real-time analytics on their own blob usage.
Key Blob Metrics and How to Calculate Them
Essential calculations for monitoring blob space consumption and costs on Ethereum post-EIP-4844.
| Metric | Description | Formula / Calculation | Data Source |
|---|---|---|---|
Blob Gas Used | Total blob gas consumed in a block. | Blobs per block * BLOB_GAS_PER_BLOB (131,072 gas) | Block header (excessBlobGas field) |
Blob Gas Price | Current price in wei per unit of blob gas. | Calculated by EIP-1559-style fee market. Use |
|
Blob Size Utilization | Percentage of available blob space used. | (Total blob size in block / (6 * 128 KB)) * 100 | Sum blob data from block transactions |
Blob Cost per Transaction | Cost in ETH or USD for blob data in a tx. | Blob gas used by tx * Current blob gas price | Transaction receipt & current gas price |
Average Blobs per Block | Mean number of blobs included over N blocks. | Sum(blobs in block) / N | Block explorer or custom indexer |
Blob Throughput (KB/sec) | Data throughput via blobs on-chain. | (Blobs per block * 128 KB) / Block Time (12s) | Block data and time intervals |
Blob Fee Burn | Amount of ETH burned from blob fees. | Blob gas used in block * Blob base fee | Block header (excessBlobGas, base fee) |
Step-by-Step: Analyzing Blob Usage for a Block
A practical guide to querying and interpreting blob data from Ethereum blocks post-Dencun upgrade.
With the Dencun upgrade and EIP-4844, Ethereum introduced blob-carrying transactions to provide cheap, temporary data availability for Layer 2 rollups. Each block can contain a maximum of 6 blobs, with each blob offering ~128 KB of data space. Analyzing blob usage is crucial for developers and researchers to monitor network adoption, data costs, and Layer 2 activity. This process involves querying an Ethereum execution client's RPC endpoint for specific block data and parsing the new transaction and block fields related to blobs.
To begin, you need access to a node running a post-Dencun client (e.g., Geth, Erigon, Nethermind). The primary method is the eth_getBlockByNumber RPC call. When you request a block with the second parameter set to true (to include full transaction details), the response will contain two new key fields: blobGasUsed and excessBlobGas. blobGasUsed indicates the total blob gas consumed by all transactions in the block, while excessBlobGas is a running counter that influences the blob gas price for the next block via a targeting mechanism similar to EIP-1559.
The individual transactions within the transactions array will also contain new data. Look for a blobVersionedHashes array within a transaction object. This array lists the KZG commitments for each blob attached to that transaction, serving as a reference to the data stored in the consensus layer. The presence of this field confirms a transaction is a type-3 (blob transaction). You can calculate the number of blobs in a block by summing the length of the blobVersionedHashes array for all transactions, or more simply, by dividing the blobGasUsed by the gas cost per blob (currently 131072 gas).
For a concrete example, here is a Python snippet using the Web3.py library to fetch and analyze blob data for a recent block:
pythonfrom web3 import Web3 w3 = Web3(Web3.HTTPProvider('YOUR_RPC_URL')) block = w3.eth.get_block('latest', full_transactions=True) print(f"Block Number: {block['number']}") print(f"Blob Gas Used: {block['blobGasUsed']}") print(f"Excess Blob Gas: {block['excessBlobGas']}") total_blobs = sum(len(tx.get('blobVersionedHashes', [])) for tx in block.transactions) print(f"Total Blobs in Block: {total_blobs}")
Interpreting the results helps gauge network health and Layer 2 economics. A consistently high blobGasUsed (near the per-block limit of 786432 gas) indicates high demand for blob space, which would typically drive up the blob base fee. Monitoring excessBlobGas trends shows how the protocol's fee market is adjusting to this demand. Furthermore, tracking which transactions contain blobs can reveal which Layer 2 networks (like Optimism, Arbitrum, or zkSync) are the most active in posting their data to Ethereum, providing valuable insights into the scaling ecosystem.
For deeper analysis, tools like Etherscan's block explorers now display blob information, and dedicated dashboards like Dune Analytics offer aggregated metrics. However, direct RPC queries remain essential for building custom monitors, alerting systems, or conducting granular research. Understanding this data flow—from the execution layer transaction to the consensus layer blob sidecar—is key to developing and optimizing applications in the post-Dencun Ethereum landscape.
Calculating Blob Gas Costs and Fees
A technical guide to understanding and calculating the costs associated with Ethereum's blob-carrying transactions, introduced in the Dencun upgrade.
Ethereum's Dencun upgrade (EIP-4844) introduced a new transaction type that carries blobs of data. These blobs are large data packets (~128 KB each) intended for Layer 2 rollups, stored temporarily in the Beacon Chain consensus layer. Unlike calldata, blob data is not accessible by the Ethereum Virtual Machine (EVM) and is pruned after ~18 days. The primary goal is to provide a low-cost data availability layer, drastically reducing fees for rollups. To manage network demand for this new resource, a separate blob gas market was created, distinct from the standard execution gas market for EVM operations.
Blob gas costs are determined by a dedicated fee mechanism. The base fee for blob gas adjusts per block based on a target of 3 blobs per block and a maximum of 6 blobs per block, using an EIP-1559-style pricing model. The formula for the blob base fee for block N+1 is: blob_base_fee[n+1] = blob_base_fee[n] * exp((blobs_in_block[n] - TARGET_BLOBS_PER_BLOCK) / BLOBS_BASE_FEE_MAX_CHANGE_DENOMINATOR). In practice, you can fetch the current blob base fee via the eth_getBlockByNumber RPC call, looking at the excessBlobGas field and using client libraries to compute the fee.
The total cost for a blob transaction has two components. First, you pay execution gas for the EVM operations of the transaction itself (e.g., a function call to a bridge contract). Second, you pay blob gas for each data blob attached. As of the initial implementation, each blob consumes a fixed 131,072 gas (blob gas units). The cost in ETH is: blob_fee = blob_base_fee * BLOB_GAS_PER_BLOB. Therefore, a transaction with two blobs pays execution_gas_cost + (2 * blob_base_fee * BLOB_GAS_PER_BLOB). Both the execution gas and blob gas portions are burned (destroyed), similar to EIP-1559.
To evaluate blob space usage and forecast costs, developers should monitor the blob gas market. Key metrics include the current blob base fee and the blob gas used in recent blocks. Tools like the Etherscan Dencun Tracker or Beacon Chain explorers provide this data. When building an application, you must decide how many blobs your transaction requires—each rollup batch may need one or more 128 KB blobs. Submitting transactions during periods of low network demand for blob space, when the blob base fee is at or near its minimum, will result in the lowest possible data availability costs.
Here is a practical example using the ethers.js library to estimate the cost of a blob transaction:
javascriptasync function estimateBlobTxCost(provider, blobCount) { const block = await provider.getBlock('latest'); // blobBaseFee is derived from block.excessBlobGas const blobBaseFee = calculateBlobBaseFee(block.excessBlobGas); const BLOB_GAS_PER_BLOB = 131072n; const blobGasCost = blobBaseFee * BLOB_GAS_PER_BLOB * BigInt(blobCount); // Add estimation for execution gas cost of your specific transaction const executionGasCost = await estimateExecutionGas(); return blobGasCost + executionGasCost; }
Always test blob transactions on a testnet like Holesky before mainnet deployment.
Blob Usage Patterns by Major Rollup
Comparison of how leading rollups utilize EIP-4844 data blobs for transaction data storage, including adoption rates and cost strategies.
| Rollup / Metric | Arbitrum | Optimism | Base | zkSync Era |
|---|---|---|---|---|
Blob Adoption Status | ||||
Avg. Blobs per Block | 3.2 | 2.1 | 4.5 | |
Avg. Data per Blob | 95 KB | 87 KB | 98 KB | |
Primary Data Type | Calldata + L2 Txs | Batch Metadata | Social Txs | |
Blob Cost % of Total | ~65% | ~58% | ~72% | ~0% |
Target Blob Utilization | 75-85% | 60-70% | 80-90% | N/A |
Fallback to Calldata | ||||
Blob Submission Delay | < 2 blocks | < 4 blocks | < 1 block | N/A |
How to Evaluate Blob Space Usage
Track and analyze blob space consumption to understand network demand, forecast capacity needs, and identify usage patterns for Ethereum's data availability layer.
EIP-4844 introduced blob-carrying transactions to provide a dedicated, low-cost data availability layer for Layer 2 rollups. Unlike calldata, blob data is stored temporarily in the Beacon Chain consensus layer for approximately 18 days. Monitoring blob space usage is critical for developers and researchers to gauge network adoption, predict congestion, and understand the long-term scaling trajectory of Ethereum. Key metrics include blobs per block, total blob size, and the blob gas price, which fluctuate based on demand.
To evaluate usage trends, you need to query historical data. Public blockchain explorers like Etherscan and Dune Analytics offer dashboards, but for programmatic analysis, direct RPC calls or subgraphs are more powerful. You can use the eth_getBlockByNumber RPC method with the blobGasUsed and excessBlobGas fields to get per-block data. For aggregate trends, the following GraphQL query against a Beacon Chain node retrieves blob counts over time:
graphqlquery BlobSidecars { blobSidecars(filter: {slot: {number_gte: $startSlot}}) { nodes { slot blob { size } } } }
Long-term capacity planning requires analyzing the target blob count (6 per block) versus actual usage. When demand exceeds this target, a blob gas fee market activates, similar to EIP-1559. By tracking the blob gas base fee over weeks or months, you can identify periods of sustained high demand, which may indicate the need for parameter adjustments like increasing the target per block. Tools like Ultrasound.money provide visualizations of this fee history, helping to correlate usage spikes with specific L2 activity or new protocol launches.
Beyond raw counts, analyze the content of blobs to understand what is consuming space. The majority of blobs contain L2 batch transaction data, but they can also be used for other purposes like data availability sampling proofs or EigenDA commitments. By decoding the blob KZGCommitment, you can often identify the source rollup client (e.g., OP Stack, Arbitrum Nitro). This breakdown is essential for forecasting: if a single L2 ecosystem dominates usage, its growth model directly impacts overall blob demand.
Effective monitoring involves setting up alerts for key thresholds. You should track when the 7-day average blob count approaches the target (6), signaling potential fee market activation. Also, monitor the blob storage period; understanding that data is pruned after ~18 days is crucial for applications relying on long-term availability. For capacity forecasts, model different adoption scenarios for major rollups and compare them against the theoretical maximum of roughly 0.75 MB per block (3 blobs of ~128 KB each under the initial target).
Finally, integrate blob metrics with broader network analysis. Correlate blob usage with L2 transaction volumes and mainnet gas prices. A surge in blob demand that reduces calldata usage demonstrates EIP-4844's success in decoupling data costs from execution. Resources like the Ethereum Protocol Data Dashboard by Labrys and Hildobby's Dune dashboard provide consolidated views. Continuous evaluation of these trends informs protocol upgrades, rollup economics, and infrastructure scaling decisions for the entire ecosystem.
Essential Resources and Documentation
These resources help developers and researchers measure, compare, and reason about blob space usage after EIP-4844. Each card focuses on concrete data sources or methodologies you can use to evaluate demand, cost, and efficiency across rollups and applications.
Frequently Asked Questions on Blob Space
Answers to common technical questions about EIP-4844 blob space, its usage, and troubleshooting for developers and node operators.
Blob space is a dedicated data storage layer introduced by EIP-4844 (Proto-Danksharding) on Ethereum. It provides a cheaper and more scalable way to post data for Layer 2 rollups compared to using regular calldata.
How it works:
- Transactions can include one or more blobs (binary large objects), each ~128 KB.
- Blobs are stored in the Beacon Chain consensus layer for ~18 days (4096 epochs).
- After this period, blob data is pruned, but its commitment (KZG commitment) remains on-chain permanently.
- Execution layer contracts can verify blob data via a precompile (
point_evaluation_precompileat address0x0A). - The supply is managed by a blob gas market, similar to EIP-1559, where fees adjust based on demand for the ~0.375 MB per block target.
Conclusion and Next Steps
This guide has covered the core concepts and tools for analyzing blob space usage on Ethereum. The next step is to integrate these techniques into your own monitoring and optimization workflows.
Effectively evaluating blob space usage requires a multi-layered approach. Start by establishing a baseline using public dashboards like Dune Analytics or Etherscan's blob tracker to understand overall network trends. Then, for application-specific analysis, you must directly query the blob_sidecars table in an archive node's database or use the eth_getBlobSidecars RPC method. Key metrics to track include blob count per block, average blob size, and the blob gas base fee, which directly impacts transaction costs for rollups and other blob-heavy applications.
For developers building on L2s or data-intensive dApps, programmatic monitoring is essential. Implement a script that periodically checks the excessBlobGas and calculates the current blob gas price using the formula defined in EIP-4844. Tools like the ethers.js library (v6+) or web3.py can fetch this data. Setting alerts for when the blob gas price exceeds a certain threshold can help you optimize transaction batching and cost management. Remember, each blob can hold ~128 KB of data, so efficient data compression (brotli, zstd) before submission is a critical optimization.
The blob space market is designed to be elastic. If usage consistently hits the target (3 blobs per block on average), the base fee will rise to dampen demand. Monitoring this fee volatility is crucial for budgeting. Furthermore, keep an eye on the evolution of blob-carrying transactions and new standards like EIP-7623 (which proposes to increase calldata cost for non-blob data) to anticipate how economic incentives for data posting will shift. Your evaluation strategy should be adaptive, not static.
To deepen your understanding, explore the raw data yourself. Run an Erigon or Nethermind archive node with full blob history enabled. Examine real blob transactions from major rollups like Arbitrum, Optimism, or Base to see their data structures. The Ethereum Execution API Specs provide the exact RPC endpoints for blob data. Contributing to or creating public dashboards that visualize blob usage for specific protocols is a valuable next step for the community.
Finally, consider the long-term roadmap. Blob space is a precursor to full danksharding, which will exponentially increase data availability capacity. Start evaluating how your application's data scaling strategy aligns with this future. Proactive monitoring today—tracking usage, costs, and client implementations—will prepare your project to leverage cheaper, more abundant data availability as Ethereum's scaling journey continues.