EIP-4844, or Proto-Danksharding, is a pivotal proposal to enhance Ethereum’s scalability and data availability. It introduces a new transaction type called “blob transactions,” which are designed to significantly reduce gas fees and improve network efficiency. By incorporating these blobs into Ethereum’s infrastructure, EIP-4844 sets the stage for a more scalable and cost-effective ecosystem, ultimately making Ethereum L1 more accessible and competitive.
Despite its popularity and widespread adoption, Ethereum has long struggled with scalability issues. The network’s limited transaction throughput and high gas fees have been persistent bottlenecks. To solve the scalability trilemma, the Ethereum developer community has opted for L2 rollups.
L2 rollups— like Optimism and Arbitrum—execute transactions on their chains, bundle them, and settle them back on Ethereum Mainnet. This method reduces costs while retaining Ethereum’s security properties. EIP-4844 (Proto-Danksharding) makes the rollup implementation even better.
Proto-Danksharding, as proposed in EIP-4844, aims to create a more scalable Ethereum network. The key objectives of Proto-Danksharding are to reduce transaction costs and improve data availability without the full implementation of sharding.
Thanks to compression, transactions on L2 blockchains are already cheaper. However, L2 rollups must send batches back to Ethereum for verification, where they are stored forever, even though the data is no longer needed. EIP-4844 addresses this by enabling Ethereum to delete data after validation, ultimately making L2 networks even cheaper. It achieves this by implementing blob transactions.
EIP-4844 introduces “blob transactions,” a new type of transaction that includes large, fixed-size data chunks called blobs. Each blob consists of 4096 field elements, each 32 bytes in size, totaling 128 KiB per blob. These blobs are temporarily stored in the beacon chain nodes for around 18 days before being pruned, unlike traditional calldata, which is stored permanently.
Note: 4096 epochs is the default blob retention period. Some clients, e.g., Prysm, can be configured to store it for longer.
Blobs are not stored directly within the transactions. Instead, they are represented by a versioned hash of the blob’s KZG commitment hash. This design choice significantly enhances gas efficiency by segregating the blob data from the main execution layer, reducing the high gas costs associated with permanent data storage.
KZG is one of the most popular polynomial commitment schemes, a method of representing large objects. In ZK-rollups, It enables effective verification of off-chain computations, using point-evaluation proofs rather than lengthy polynomials to check computations.
In Proto-Danksharding, data blobs are represented as polynomials, and KZG is used to compute their commitments. The mathematical properties of KZG enable data availability sampling, i.e., verifying that blockchain data is both available and correct without requiring all nodes to download the entire data set. This is critical to scaling Ethereum’s data layer.
See KZG in Practice: Polynomial Commitment Schemes for more technical details.
EIP-4844 works through blobs, which are not part of Ethereum’s main layer (L1) but are instead routed through a separate data layer. This segregation allows for lower transaction fees and efficient data management.
EIP-4844 introduces blobs, which add a new data type to be propagated and processed, potentially increasing the burden on the consensus layer. Implementing EIP-4844 has led to an increase in propagation sizes due to the additional data blobs. This increase has impacted synchronization times, making it longer for nodes to sync new slots. Consequently, the fork rate has risen from 3.097 to 6.707 slots per 2000 slots, indicating a direct impact on network stability.
The problem necessitates adjustments in how data is propagated across the network. To maintain synchronization without overburdening the network, more efficient handling and temporary storage of blobs are needed.
Post-EIP-4844, there has been a marked increase in the total data size posted by rollups on Ethereum, with a notable shift from calldata to blob usage. The average data size per block increased by 116.8%, while the calldata size decreased by 56.8%. The total fees paid by rollups for data availability have significantly decreased, reducing the economic burden on rollups. Specifically, optimistic rollups have seen an 81% reduction in calldata usage, whereas zk rollups experienced a smaller decrease. These changes indicate enhanced efficiency and cost-effectiveness in Ethereum’s role as a data availability layer, encouraging greater network participation and rollup activity.
EIP-4844 has led to a substantial increase in rollup transaction volumes, with all major L2 rollups (Arbitrum One, Optimism, Base, Starknet, zkSync Era, and Line) showing marked increases. For example, the Base rollup experienced a 224% rise in transaction volume. However, user delays for transaction settlement on Ethereum have increased for four out of six rollups, indicating longer wait times for transaction finalization. Arbitrum and zkSync Era, on the other hand, achieved significant reductions in user delay times, demonstrating improved efficiency in these cases. The variability in user delay times has also increased, except for Arbitrum, suggesting a mixed impact on the predictability and efficiency of rollup transactions.
The implementation of EIP-4844 has introduced a distinct fee market for blob gas, a significant aspect of “Multidimensional Gas Pricing.” Historically, computation or storage requests to an ETH node were bundled into a single unit called “gas.” However, EIP-4844 introduces “blob gas” to measure computation involving blobs, with each blob consuming a constant 131,072 (2^17) blob gas units.
The base fee for one unit of blob gas is dynamically adjusted every block in response to network congestion, mirroring the mechanism established by EIP-1559 for regular gas fees. The adjustment uses a formula to maintain an optimal target of three blobs per block, dynamically altering the base fee based on actual usage for balanced and efficient pricing.
Essential for solving the scalability trilemma, sharding is a proposed method of distributing data across multiple machines to process transactions in parallel. EIP-4844 is an interim solution before full data sharding, which would enable support for hundreds of rollups and millions of transactions per second by expanding blobs from 6 to 64 per block. While Danksharding is still years away, Proto-Danksharding (EIP-4844) provides immediate scalability and has been implemented on all testnets and went live on Mainnet with the Cancun-Deneb upgrade in March 2024.
EIP-4844 introduces “blob transactions” and a merged fee market, leading to a significant reduction in transaction fees for rollups, enhancing cost-efficiency and incentivizing Ethereum’s layer 2 adoption.
Proto-Danksharding represents a significant step forward in Ethereum’s journey toward scalability and cost-efficiency. This proposal addresses critical transaction costs and network load challenges by introducing blob transactions and a merged fee market. The expected 100x reduction in rollup transaction fees will make Ethereum more accessible and competitive, enhancing its appeal to developers, users, and businesses.
The improvements brought by EIP-4844 will streamline data management, support a higher volume of transactions, and foster ongoing innovation within the Ethereum ecosystem. As Ethereum continues implementing such forward-thinking upgrades, it sets a benchmark for other blockchains, driving the entire industry toward greater scalability and efficiency.
Follow @hackenclub on 𝕏 (Twitter)
Refer to the official EIP-4844 proposal and related developer resources for more technical insights and code snippets.
Be the first to receive our latest company updates, Web3 security insights, and exclusive content curated for the blockchain enthusiasts.
Table of contents
Tell us about your project
10 min read
Discover
6 min read
Discover
10 min read
Discover