Last month, at one of our Tuesday Code & Coffee sessions in Yaba, a developer named Tunde opened a dashboard on his laptop and asked me a question I could not answer quickly. Ethereum's blob base fee had climbed from 1 wei โ the floor, effectively free โ into double-digit gwei territory inside a single hour, and three rollups were visibly bidding against one another for the same scarce space. His question was simple: if L2 fees are supposed to be near-zero forever, why did his user's swap cost spike fourfold that evening? I have spent most of my career telling people that decentralization is worth the friction. That night I had to tell him the friction had moved rather than disappeared.
The mechanics first. EIP-4844, shipped in March 2024 as part of Dencun, introduced blobs โ a separate, short-lived data channel that rollups use to post transaction batches to Ethereum. Before Dencun, L2s wrote calldata into the same blockspace as ordinary users and paid the same gas price. Afterwards, they got their own fee market, with a base fee starting at 1 wei and adjusting based on consumption. Three blobs per block as the target, six as the ceiling.
The effect was immediate. Average L2 transaction costs fell by an order of magnitude, in some cases more. I remember the mood. In 2020, when I built the Sankofa Yield pilot linking stablecoins to local mobile-money rails, every basis point of transaction cost was the difference between a viable remittance and an absurd one. When Dencun landed, I genuinely believed the cost problem had been solved.
But there is an arithmetic that the celebration glossed over, and it is worth doing out loud. A blob holds 128 kilobytes. Three of them per twelve-second slot gives you roughly 384 KB per block, about 32 KB per second of dedicated data availability, close to 2.7 gigabytes per day across the entire network. Set that against the aggregate demand from every optimistic rollup, every validium that still settles to Ethereum, every zk-rollup posting state diffs.
Blob space is a fixed physical resource, and every rollup that scales is drawing from the same three slots. The L2 fee war did not end โ it moved one layer down, out of sight of most users.
The mechanism matters more than the headline. The blob base fee follows an EIP-1559-style adjustment, with a floor of 1 wei and a deliberately slow response curve. When demand sits at or above target for a sustained period, the price ratchets upward and stays there, because it falls slowly and only when blocks come in under target.
There is also a coordination failure. Sequencers do not bid in real time the way a searcher does. They post on a schedule or a size threshold. So a single large batch from a busy rollup can consume an entire slot's capacity and leave everyone else either waiting or overpaying. I have watched this happen in production.
When I reviewed sequencer posting logic for a client's rollup last year, the most common defect I found was not in the bridge, not in the fault-proof game, and not in the upgrade proxy. It was in the batch poster's fee strategy. Teams set a maximum blob fee, and when the market exceeded that ceiling, their batches simply queued. Users experienced it as the L2 being down. It was not down. It was priced out, silently, with no error message anywhere in the UI.
This is the part of the story that educational content usually skips. Rollups sold users a promise of cheap settlement and abstracted away the messy reality that this promise depends on a resource they do not control. And the demand curve is not static. Rollup growth compounds. Every new chain that launches, every app that migrates, every airdrop farmer running thousands of wallets adds batches to the same queue.
Fusaka and PeerDAS are supposed to help by raising the blob target. That work is genuinely important. It is not a nicety, it is a prerequisite. Raising blob count without data availability sampling raises the bandwidth and storage burden on every node, and pushing node requirements upward is how you get a network that runs in three data centers. PeerDAS makes a higher blob count survivable. It does not make it infinite.
Meanwhile, the alternative DA market โ Celestia, EigenDA, Avail and the rest โ gives rollups somewhere else to go. That competition is healthy, and it also means the rollups left on Ethereum's blob market are increasingly those with the strongest reason to be there. Neither is a stable equilibrium.
Here is the counter-intuitive part, and it is the one I would want a builder to sit with. Cheap blob space may have made rollups worse rather than better. When data availability costs almost nothing, there is no economic pressure to compress calldata carefully, to batch aggressively, or to design a sequencer that behaves well under contention. I have seen rollups posting batches so small that per-transaction DA overhead dominated their entire cost structure. At 1 wei that is invisible. At 30 gwei it is fatal. Free data does not produce good engineering. It postpones the bill and hides who owes it.

The second blind spot is that the industry keeps framing saturation as a supply problem with a supply solution. If a small number of sequencers are responsible for the majority of blob consumption, adding blobs buys months rather than years, and it buys them at the cost of raising the bar for running a node. That trade is worth making, but it should be made with open eyes rather than as a reflexive answer to a fee chart.

So if you are building a rollup in this cycle, the honest question is not whether Dencun made your fees cheap. It is what your batch poster does on the morning the blob base fee hits a number your configuration never anticipated, and whether your users will learn about it from a dashboard or from a failed transaction. Trust the process, but verify the code โ and then verify the fee strategy that code depends on. Because the cheap data was never a promise. It was a subsidy, and subsidies end without announcement.