Part III · Chapter 16 of 43 · Istanbul

EIP-2028: the price cut that made rollups possible

A rollup's whole security rests on posting its transaction data to L1, and that data was priced at 68 gas a byte — so expensive it was the dominant cost of every L2 and kept rollups from adding up. EIP-2028 cut it to 16. That one repricing, in 2019, is what opened the door to the rollup era — the door that blobs later widened.

Updated Jun 24, 2026 · 8 min
Assumed
  • gas & calldata
  • rollups (the idea)

Istanbul, December 2019. Some upgrades change what Ethereum can do; this one changed what became economically possible — and in doing so it quietly started the rollup era. A rollup scales Ethereum by executing transactions off-chain but publishing their data on-chain, so anyone can reconstruct and check the L2. That published data is the rollup’s security, and it lives in calldata. The catch: calldata was priced at 68 gas per byte, which made posting data the single biggest cost of running an L2 — expensive enough that rollups barely penciled out. EIP-2028 is a one-line price change with outsized consequences. Let’s derive it.

1 step Data is the cost

The problem: publishing data dominated rollup fees

A rollup’s guarantee is data availability The property that a rollup's transaction data is published somewhere anyone can retrieve, so they can independently reconstruct and verify L2 state. Rollups get it by posting compressed batch data to Ethereum L1 as calldata. : it posts its compressed batch of L2 transactions to L1 so that anyone can rebuild the L2’s state and check it. On L1, that batch rides in calldata The input data of a transaction — read-only bytes the EVM can access. It's where rollups put their batch data. Its gas cost is per-byte: originally 68 gas for a non-zero byte, 4 for a zero byte. , and calldata was billed 68 gas for every non-zero byte. Since a rollup’s whole job is to publish lots of bytes, that per-byte cost dominated everything else — it, not execution, set L2 fees. Rollups were the community’s scaling plan, but at 68 gas a byte the numbers barely worked.

a rollup must post its data on L1 so anyone can verify rollup · L2 1000s of txns post L1 calldata 68 gas / non-zero byte posting the data was the dominant cost — L2 fees stayed high rollups were the scaling plan, but data costs made them barely viable
A rollup posts its batch of thousands of L2 transactions to L1 as calldata so anyone can verify it — and at 68 gas per non-zero byte, that data was the dominant cost, keeping L2 fees high. Rollups were the scaling plan, but the price of data made them barely viable.

→ Step 2: reprice it to reality.

2 step Cut 68 to 16

EIP-2028: a non-zero calldata byte drops to 16 gas

Analysis of the real bandwidth and worst-case block-size impact showed 68 was far higher than necessary. EIP-2028 lowered the cost of a non-zero calldata byte from 68 to 16 gas — roughly a 4× reduction — leaving zero bytes at 4 gas. The reason it’s a balance and not “make it free”: cheaper calldata means a transaction can pack in more bytes for the same gas, so a maliciously data-heavy block could be larger and take longer to propagate. 16 was chosen as the point where the worst-case block still propagates safely, while data gets dramatically cheaper for everyone who uses it honestly.

reprice calldata down — analysis showed 68 was too high before 68 gas/byte after 16 gas/byte ~4× cheaper data (zero bytes stay 4 gas) the tradeoff: cheaper data means bigger blocks — 16 was the safe balance
EIP-2028 cuts a non-zero calldata byte from 68 to 16 gas — about 4× cheaper (zero bytes stay 4). It's a balance, not free: cheaper data lets blocks carry more bytes, so 16 was picked as the point where the worst-case block still propagates safely.

→ Step 3: it opened a scaling era.

3 step The rollup era

The payoff: rollups start to add up

With the dominant cost cut roughly fourfold, the rollup math finally worked. Optimistic rollups (Arbitrum, Optimism) — which post batch data and rely on fraud proofs — and zk rollups (zkSync, Starknet) — which post data plus a validity proof — became genuinely cheaper than doing the same transactions on L1, and the L2 ecosystem took off. EIP-2028 didn’t invent rollups, but it’s the repricing that made them economical, kicking off Ethereum’s rollup-centric scaling roadmap.

4× cheaper data → rollups finally add up optimistic rollups post data + fraud proofs Arbitrum · Optimism zk rollups post data + validity proofs zkSync · Starknet the 2019 step that opened the L2 era — data was still the bottleneck which EIP-4844 blobs later cut much further
With data ~4× cheaper, optimistic rollups (post data + fraud proofs) and zk rollups (post data + validity proofs) became economical, opening the L2 era. Data was still the bottleneck — which EIP-4844's blobs would later cut much further.
04 Go Deeper Where to take it from here