Blobsplaining Part 2: Lessons From The First EIP-4844 Congestion Event

Blocknative Ethereum Web3

We recently witnessed the first network congestion event post-Dencun with the blobscription craze, giving us some insights into how the network may operate during crisis events. 

If you aren’t familiar with the topic, it's worth revisiting our primers on EIP-4844, blobs and blob gas fees to ensure you understand the details we will explore. But to quickly recap, we have:

Type-2 Transactions:

  • Execution Base Fee = baseFeePerGas (“base fee per gas”) * gas used
  • Execution Priority Fee = maxPriorityFeePerGas (“priority fee per gas”) * gas used
  • Total Fee = execution base fee + execution priority Fee

Type-3 Transactions:

  • Execution Base Fee and Execution Priority Fee (same as type-2)
  • Blob Fee = blobBaseFeePerGas (“blob base fee per gas”) * blob gas used
  • Total Fee = Blob Fee + Execution Base Fee + Execution Priority Fee

Let’s start by reviewing the state of the blob market leading up to blobscriptions event to understand how the network operated in congestion mode. In the beginning, there was very little blob contention as only a few L2s, such as zkSync, Starknet, Optimism, Base and Arbitrum, supported blobs out of the gate. This meant that the blob base fee per gas started and stayed at the minimum price of 1 wei. Early adopters’ gas fees were extremely cheap, on the order of 50-500 or more times cheaper than using type-2 transactions and calldata.

In this example, we see that the blob base fee per gas was at 1 wei, so the blob fee was a tiny percentage of the total cost structure for this L2 batch and therefore, blobs were almost 600x cheaper (!!) than calldata.

As time went on, more L2’s joined the game with no increase in the blob base fee per gas. However, on March 27th, 2024 there was a massive spike in blob base fee per gas. Why? The real big increase in blob contention (at least temporarily) was blobscriptions. Since then, there has been a proliferation of “non-L2 usage” of type-3 transactions and blob data, creating significant competition for blobs to get onchain.

Type-3 Transaction Count by User

Because of blobscriptions, the blob base fee per gas increased from 1 wei to as high as ~650,000,000,000 wei (or 650 Gwei) over a period of about 600 blocks or ~10 minutes! 

Blob Base Fee vs. Base Fee (gwei)

You can see that the blob base fee per gas continued to be highly volatile as blobscriptions were being used. However, as of April 4th, 2024, the blobscriptions have paused/slowed considerably, and the blob base fee per gas fell all the way back to 1 wei. Because a block can only contain a maximum of 6 blobs, there will be more variance in the blob space used from block to block vs. its target (3 blobs/block or 50%). Blobs can only fill up the following amount of space (16.6%, 33.3%, 50%, 66.6%, 83.3% or 100%). There are no other values that it can take on. Compared that to transactions which can theoretically be any number of gas between 21k and 30 million. So there are many values that it can take on relative to the target, making it far less volatile than the blob base fee per gas.

Given this volatility, there were times in the peak blobscription launch where the blob base fee per gas was many times larger than the execution base fee with the largest being 13.3x at block 19527314. Looking at the L2s using blobs (since they typically use ~100% of the blob data available), we can see that even with a blob base fee per gas that is 13.3x higher than the base fee per gas, blobs remained cheaper than calldata. The closest blob to the “flippening” was this blob by Optimism that was only 19% cheaper than calldata. Looking at the graph below we can see that while the discount is no longer always 99.9% cheaper than calldata, it still remains far cheaper the majority of the time.

Blob Discount

Wasting Blob Space

Importantly, there have been a few cases where calldata was cheaper than blobs for non rollup type-3 transactions, but this was mostly due to the inefficiency in blob space used. These blobs used less than 1% of data available to them, but they still had to pay for the entire blob. Essentially, they wasted a considerable amount of blob gas that they wouldn’t have had to do with calldata. 

In this example, they only used 0.6 KiB of the available 128 KiB (0.46%). This user ended up paying for a lot of blob gas that they didn’t actually use. Because of this inefficiency, it was actually cheaper to use calldata than blob data for this transaction.

Although blobs still remain cheaper, the cost structure for L2s dramatically flipped during the blobscription event. As we discussed in blobsplaining, an L2’s gas fees are now three-fold: blob fee, execution priority fee, and execution base fee. Without blobscriptions, the blob fee is less than 0.01% of the cost to an L2, but with blobscriptions, the blob fee flipped to 95+%. 

Costs for Different L2s

Interestingly, there are some slight differences between optimistic rollups vs. zk-rollups. 

Optimistic rollups do not use any calldata and therefore use the minimum amount of gas: 21K. Therefore, the base fee per gas minimally impacts the overall cost structure for an optimistic rollup, making the blob base fee per gas the most important component of an L2 type-3 transaction.

Type-3 Transaction Fee Cost Structure - Optimism

Zk-rollups on the other hand, do have significant gas from calldata (200K+) - example. Because of this calldata, the execution base fee can be a significant portion of the cost structure for a zk-rollup type-3 transaction.

Type-3 Transaction Fee Cost Structure - zkSync

Linea is an interesting case since they started using blobs on the same day that the blobscription event happened. Because they are also a zk-rollup that uses some calldata, the execution base fee and execution priority fee are a meaningful or significant part of their cost structure. Interestingly, Linea did not use a high priority fee per gas in the beginning (0.02 Gwei in this example), but after the blobscription event, the execution priority fee became a more meaningful part of the cost structure (4.10 Gwei in this example), which may be tied to the challenges of landing their batches onchain in a consistent and expedient manner (blocks pending graphs in next section!).

Type-3 Transaction Fee Cost Structure - Linea

 

With Blobscriptions, we saw type-3 transaction fees increase, the cost structure flip to blob fees vs. execution fees, and blob fee volatility increase. In some cases, it appears this led to a decrease in inclusion speed and increase in time pending in the mempool. Looking at some of the top L2s, we can see that some L2’s showed more difficulty in getting onchain than others. 

zkSync

 

Linea

(Note: removed batches that took > 1000 blocks)

Optimism

Base

Arbitrum

After the launch of blobscriptions, optimistic batches’ inclusion speed decreased and showed more volatility, whereas zkSync remained relatively steady with fast inclusion time and low volatility. Spikes in inclusion speed reached as high as 70 blocks, showing the need to pay careful attention to the volatility in the blob base fee per gas and setting an intelligent blob max fee.

As for Linea, they had several batches that took more than 1,000 blocks to land on-chain (ie. they were stuck in the mempool for greater than 1,000 blocks). The blobscription event appears to have caused volatility in blocks pending and forced Linea to pause their batch posting strategy. Once the blobscription event ended and Linea increased their priority fee per gas, the number of blocks pending per batch dramatically decreased.

While outside the scope of this post, we at Blocknative continue to keep an eye on blob inclusion speed and blob fee dynamics. The main things we are looking at are:

  1. Optimistic vs. zk-rollups
    1. Execution base fee and execution priority fee are more impactful on zk-rollup type-3 transactions that use calldata vs. optimistic transactions that don’t
    2. High volume optimistic rollups tend to use all 6 blobs in one type-3 transaction vs. zkSync which only uses 1 or 2 blobs per type-3 transaction
  2. We have discussed the blob base fee per gas as it relates to type-3 transaction cost structure, but very little about the priority fee per gas. L2’s have not experimented much with the priority fee per gas, but this may change as inclusion speed dynamics change. 
  3. Related to the above will be the dynamics at play at the MEV-Boost level with block-builders and relays. As Robert Miller articulated here, block-builders may require users of type-3 transactions to pay a higher priority fee per gas to compensate for the latency penalty of blobs depending on the inclusion speed goals of the user and the current blob contention. Taking this a step further, will this lead to private blobs or off-chain deals to ensure better inclusion speeds for L2 batches?
  4. Blobscriptions might just be the first ‘new’ use case to create disruptions in the blob gas market but other applications are certainly being contemplated… if/when these launch, how might they add demand and hence contention/volatility?

Blobscriptions changed the game for type-3 transactions and rollups. While this appears to be a temporary event for now, we should learn from the first congestion event post-dencun. Rollups saw competition to get on-chain, and had to navigate increased volatility around inclusion speeds. 

We expect the market to continue to become more competitive and congested, meaning L2s will need to implement and refine intelligent algorithms that help them choose between calldata and blobs based on the current mempool congestion and blob contention dynamics. As the market continues to play out and more data becomes available, we will share our research into all things blobs!

Looking to get started with best-in-class gas prediction for blobs? Check out the Blocknative gas platform!

Observe Ethereum

Blocknative's proven & powerful enterprise-grade infrastructure makes it easy for builders and traders to work with mempool data.

Visit ethernow.xyz

Want to keep reading?

Good choice! We have more articles.

cut-through-the-noise:-how-to-quickly-leverage-filters-to-find-real-time-insights-on-ethereum
Ethernow

Cut Through the Noise: How to Quickly Leverage Filters to Find Real-time Insights on Ethereum

With Ethernow, you get a real-time stream of what is happening right NOW on Ethereum. That means..

blocknative-supports-the-polygon-amoy-testnet
Polygon

Blocknative Supports the Polygon Amoy Testnet

The Polygon ecosystem is thriving, and Blocknative is excited to announce its support for the new..

announcing-the-blocknative-blob-archive-api:-preserving-the-ephemeral-data-layer
Blob

Announcing the Blocknative Blob Archive API: Preserving the Ephemeral Data Layer

Did you miss a blob? Do you want to know what was in a blob that went on-chain a month ago? We are..

Connect with us. Build with us.

We love to connect with teams who are building with Blocknative. Tell us about your team and what you would like to learn.

"After first building our own infrastructure, we appreciate that mempool management is a difficult, expensive problem to solve at scale. That's why we partner with Blocknative to power the transaction notifications in our next-generation wallet."

Schedule a demo