Illuminating the blob market


Last week, we saw the blob market enter price discovery mode after a surge of activity on L2s. To meet the demand, rollups posted a lot of blobs, which drove up blob fees and tested the market’s ability clear demand for blobs on L1.

As a result, rollups like Arbitrum and Base saw it take strangely long for their blobs to land. And what’s more confusing is that blobs weren’t always included in the order you’d expect. Blobs with lower prices often got included faster.

Possible factors

A number of parties are involved in propagating blobs today — from rollups, to L1 clients, to block builders and relays.

  1. Latency: Blobs are slow. The flashbots rust builder often takes 30% longer to seal blocks when the blob market spikes. Serialization can be especially bad for blocks with blobs (in the 10s of milliseconds). This compounds when you add networking latency and overhead at relays.
  2. Mempool: Most blobs are submitted to the public mempool. This means they need to be propagated by L1 clients before they reach block builders. We’ve seen it take CL clients over half a slot (7 seconds!) to propagate blocks, and EL clients often have other restrictions on top of this.
  3. Strategy: Rollups control important factors in blob inclusion: price and timing. We’ve already seen cases where they could cut their costs by updating their submission strategies, eg. to switch to calldata when it’s cheaper.

Calls to action

We’d like to bring more visibility into how the choices at each layer could impact blob propagation. If you have data or input, please share!

  • Builders: How would you calculate a “fair” price for blobs given the latency they introduce?
  • Relays: Should we consider updating the spec to better accommodate blobs? (Eg. to allow asynchronous blob submission after the payload?)
  • Execution client teams: Are there mempool policies that make it hard for blobs to propagate? How often do blobs get ejected under conditions like we saw last week?
  • L2s: How are you pricing blobs (do you consider congestion or the added cost to builders)? How late in a slot do you submit them?

Hey there. We at primev have done a significant amount of research into the blob market.

Notably all of our research is open source and freely available thus far. We have a nice rolling 7 day rollup blob dataset that is feature rich which can be found at the bottom of this dashboard here.

Execution Client Geth Notes: There are some interesting notes for the blob mempool in Geth. Here are some that stood out to me:


Appreciate the public data!

Geth does some nifty math to reduce the problem into a single dimension for ordering

Has anyone studied how effective the blob mempool rules are in practice? It certainly seems like there has been a lot of thought devoted to designing these rules, but we came up short when trying to actually measure the efficacy. Eg. how often do blobs get evicted from mempool, does this correlate with when we see worse blob inclusion or not. I don’t think I saw this in the dashboard you shared, was there a section I missed or anyone else looking into this?

Somewhat relatedly would love to see data on EL blob propagation latency. We got some references for CL (thank you reth team + ethpandaops) but would be great to see similar measures for EL.

Regarding eviction, I understand that to be the same as “replacement”, but not everyone might see it the same. In this context, the dashboard does count the number of times a blob transaction is “replaced” with a new tx hash, but same blobs under the submission_count data column. The only rollups that resubmit blobs are base and optimism. It is automated to every 2 minutes. if the blob is still in the mempool, then double all of the bidding parameters.

For example here is a priority fee bidding chart for base. There are specific straight lines which indicate the level that base doubles the priority bid over time.

Regarding the scenario of eviction without replacement, it’s not clear to me that this occurs in practice. For example I’ve seen blobscriptions linger in the mempool for many days before being confirmed. If a blob can stay in the mempool for days, then I think it’s a fair guess that no one is forcefully evicting blobs.

1 Like