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.
- 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.
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.
→ Step 2: reprice it to reality.
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.
→ Step 3: it opened a scaling 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.