MrDeFi
Ethereum2026-05-263 min read

What Is Calldata on Ethereum? Why It Matters for Costs

What is calldata on Ethereum? How transaction input data works and why it historically dominated rollup fees before blobs.

Calldata is the input data included in an Ethereum transaction that gets passed to a smart contract when it's called — everything from a simple token transfer's recipient and amount to the complex encoded instructions and data batches that rollups historically posted back to the base layer. Unlike a contract's internal storage, calldata isn't kept in Ethereum's persistent state, but it is stored permanently as part of the historical transaction record.

What Calldata Actually Contains

When you interact with a smart contract — swapping a token, minting an NFT, calling any function — your transaction includes calldata specifying which function to call and what arguments to pass. For a simple ETH transfer with no contract interaction, calldata is typically empty or minimal; for a complex DeFi interaction, it can be substantial, since it needs to precisely encode the function signature and every parameter being passed.

Why Calldata Costs Gas

Every byte of calldata included in a transaction costs gas, priced per byte (historically with a cheaper rate for zero-value bytes versus non-zero bytes, since zero bytes compress and process slightly more efficiently). This means larger, more complex transactions — or transactions carrying large batches of data — cost proportionally more in gas fees.

This byte-level pricing became especially relevant for rollups. Before Ethereum introduced dedicated "blob" data space, rollups posted their batched transaction data as ordinary transaction calldata on the base layer, meaning rollup users were effectively paying Ethereum's calldata gas price, spread across however many user transactions fit in that batch. During periods of high mainnet congestion, this calldata cost could become the dominant expense for rollup transactions, even though the rollup's own execution was cheap.

Why This Changed With Proto-Danksharding

Proto-danksharding (EIP-4844) introduced a new transaction type carrying "blobs" — large chunks of data priced and processed separately from regular calldata, with their own independent fee market, and critically, deleted from node storage after a set retention period rather than being kept forever the way calldata effectively is.

Because blobs aren't required to be stored permanently and have their own fee market decoupled from regular transaction demand, rollups posting data as blobs instead of calldata saw a substantial reduction in the cost of posting their batches, which flowed through to lower fees for rollup users. Our explainer on danksharding covers how this data availability approach is being expanded further.

Calldata vs. Storage vs. Blobs

Data Type Persistence Typical Use Relative Cost
Calldata Stored permanently in transaction history Function inputs, historically rollup batch data Moderate, priced per byte
Contract storage Stored permanently and updatable in state Balances, ongoing contract state High — most expensive per byte
Blobs (post-EIP-4844) Deleted after a retention window (originally ~18 days) Rollup data availability Lower, separate fee market

Why the Distinction Matters for Everyday Users

If you're using a rollup or layer 2 network, you're not directly paying for calldata or blobs yourself in most cases — the rollup operator bundles many users' transactions into a single batch and absorbs (then redistributes) that base-layer cost across all of them. But understanding this mechanism explains why rollup fees fluctuate with Ethereum mainnet congestion at all, and why the proto-danksharding upgrade specifically was such a meaningful fee reduction event for layer 2 users, even though it changed nothing about the rollup's own execution logic.

A Note on Historical Data Growth

Because calldata (unlike blobs) is retained permanently as part of Ethereum's transaction history, ever-growing calldata usage contributes to the long-term growth of data nodes need to store or access to fully reconstruct history. This is part of the motivation behind "the Purge" phase of Ethereum's roadmap, which aims to reduce the burden of storing old historical data by default — see our overview of Ethereum's roadmap for the full picture.

Bottom Line

Calldata is the gas-priced input data attached to Ethereum transactions, historically the main way rollups posted their batched data back to the base layer — and, because it's stored permanently and priced per byte, historically a major driver of rollup transaction costs. The introduction of temporary, separately priced "blob" data through proto-danksharding significantly reduced this cost for rollup users, without changing calldata's role for ordinary smart contract calls. Track current gas and fee trends across chains on MrDeFi's chains page.

Related articles

This article is for educational purposes only and is not financial advice. DeFi involves significant risk, including total loss of funds. Always do your own research.