By Stanley He
Blockchains are networks where independent nodes make commitments and provide resources bound by a consensus mechanism. Resources provided on a blockchain are heterogeneous - computation, storage and bandwidth. Right now, most blockchains price heterogeneous resources indifferently with one fungible unit of account, like gas on Ethereum, which essentially imposes an arbitrarily fixed relative price on resources.
The problem of this setting is obvious: resources can be easily mispriced. For example, surging demand on computation (maybe a complex on-chain router) can make it prohibitively expensive for your simple transfer which mostly consumes bandwidth. In an ideal world where computation and bandwidth are priced separately, more transfers would be included at a lower price. And this is usually called scalability.
Switching from per-resource to per-contract basis gives us local fee market, where each smart contract (or on an even more granular level like account for Solana and object for Sui), has its own fee market based on utilization. Local fee market puts a limit on the impact from any contracts on the global market, i.e., when a memecoin goes viral, the cost of interacting with Uniswap should increase much faster than the cost of transferring an NFT, making the network more usable for the general public instead of a handful of searchers.
If blockchains want to reach internet scale, local fee market will become essential in order to allocate resources efficiently and maximize total utility. Just like your credit card payments will go through regardless of how busy NYSE is, a blockchain as a global financial infrastructure must be able to provide reliable and stable services in certain sectors immune from a volatile outside world.
Interestingly, we have some kind of local fee market on Ethereum already. EIP-4844 and the blobspace can be seen as a per-resource fee market, while rollups are effectively per-contract fee markets.
Rollups had been using calldata to store compressed transaction batches on the execution layer of Ethereum L1. Although this is solely for the purpose of data availability thus only requires storage, due to Ethereum’s global fee market, it was still priced together with normal execution layer transactions that required computation, which made DA cost a huge burden on Ethereum rollups.
Post EIP-4844, a separate market for data blobs was created outside of the execution layer with its own fee mechanism, drastically reducing DA cost for rollups.
Dashboard h/t [<https://x.com/0xKofi>](<https://x.com/0xKofi>)
If we shelve the “Are rollups Ethereum” debate for now and treat ETH L1 and rollups as one system, it’s easy to see that rollups are themselves “per-contract (to be specific, per-contract-group”) markets inside the system. Each rollup is a group of smart contracts that have their own fee market separated from Ethereum L1, but still connects to the L1 via settlement transactions.
Using rollups is generally much cheaper than using Ethereum mainnet. Rollups achieve this by decoupling rollups state from Ethereum state - the former is cheap because a centralized sequencer can provide ample new blockspace at low marginal cost, while the latter is more expensive since it’s much harder to scale a network which has more than 1 million nodes. A user’s low cost ultimately comes from the fact that he doesn’t need to touch Ethereum state when a rollup.
Note that if a rollup doesn’t decouple itself from Ethereum state enough, it could be as expensive as the L1, if not more. Taiko in the early days was a good example. As a vanilla based rollup, it settles on Ethereum every block, resulting in the highest L1 cost among all rollups. When there weren’t enough L2 transactions to amortize the cost, it made Taiko very expensive. Meanwhile other rollups have a much infrequent settlement schedule, meaning much less reliance on the L1 state, thus lower cost.
Taiko keeps generating the highest L1 cost