Ethereum Call Data - Pricing Analysis
Currently, Ethereum currently processes only roughly ~15 transactions per second. This is slow, but it can be chalked up to the fact that transactions on mainnet today are complex (token swaps, token transfers, etc).
Now, if Ethereum was limited to the simplest of transactions, like one-to-one Eth transfers, then it still could only handle roughly ~65 transactions per second.
To magnify how this is limiting at scale, if we extrapolate on a per byte basis, the cost of Ethereum per byte of data at today’s gas price is roughly 10M times more expensive than AWS*.
As a result, the rollup space has been focused on shipping scalability solutions that target this exact issue. Rollups, in my opinion, are the most exciting and interesting scalability solution because they define and maintain Ethereum’s state transition function and execute transactions securely. It’s obvious that rollups ‘roll up’ and post data to Ethereum, but here’s a better idea into why.
Enter Data Availability
Data availability is a core facet of making blockchains and rollups successful.
In the zero knowledge rollup case, operators must submit validity proofs every time they execute a transaction, which in theory prove that all state transitions in the rollup are valid. If this data was unavailable, other nodes would not have transparency into their account balances as of the new state.
In the optimistic rollup case, operators must submit fraud proofs in the case of a fraudulent transaction. If data is unavailable, other nodes would not be able to challenge the proof and as a result will not be able to recalculate balances of the new state.
To mitigate this problem, rollups make their data available by posting this data to Ethereum, as mentioned in the previous section. This works in the short term, as projects slowly onboard onto rollups and start using them.
However, in a world where rollup usage is extensive (which, hopefully is the case), rollups will also face the scalability issue. As usage grows, the volume of call data posted to Ethereum will also grow. This puts us back to square one - Ethereum is really expensive and end users will feel this cost even if they’re using a rollup.
How Expensive is Expensive
In general, as transaction batch size goes up, the total cost of executing the transaction on Ethereum also goes up (modeled below).
This may initially look like a 1-1 linear relationship, but once you scratch the surface of the mix of rollup solutions in the ecosystem, each rollups’ cost modeling approach, and isolate the most expensive part of operating a rollup, this picture looks a little different.
The Anatomy of an L2 Transaction
If we take a deeper look at the anatomy of an L2 transaction, most rollup transactions break down in the following way:
- Proof costs (in the case for zk rollups) = ranges in gas, typically based on rollup provider
- State write costs = 20,000 gas
- Ethereum base transaction cost = 21,000
- Posting call data to Ethereum in gas per transaction
- =(16 gas per byte of data)(average transaction size in bytes)
- L2 gas fees = usually pretty cheap, in the range of a fraction of a unit of gas. For example, check out Optimism’s fee dashboard
Usually, the fixed costs of the L2 transaction don’t change much on a transaction to transaction basis. What can have a magnitude of an impact on a per transaction basis is the price of posting call data to Ethereum. Cost in the case of call data is always a product of 16 gas per byte and transaction size on the rollup (in bytes).
As a result, no matter how big the transaction batch sizes are on the L2, costs will always be beholden to the fixed ratio of 16 gas per byte. Total cost, as a result, is always calculated via summing up the fixed costs and adding the product of batch size and gas required for the call data (see below).
This means that even in the case of end users leveraging rollups, posting call data to Ethereum will beholden them to the egregious gas costs they face today (see graph below) as a result of this fixed ratio.
As we all know, there is no good way to avoid the 16 gas per byte ratio on Ethereum**. Most blockchains have resource pricing constraints (this happened with Bitcoin as well, check this talk out for more context). Resources are consumed when blockchains do ‘work’. This work can be thought of as:
- Downloading transaction data
- Storing transaction data
- Computation (CPU)
- Memory read/write
- Storage read/write
All this ‘work’ typically requires resources, which need to be metered or priced in a uniform manner. In the case of Ethereum, this ‘metering’ is gas. Most L1s bound the amount of resources a participant in the network has to spend in order to run a full node to keep decentralization high and prevent certain attack vectors.
This is good to preserve the ethos of decentralization, but limits the L1 to pricing based on all the different kinds of ‘work’ it has to do. As a result, gas as a concept can’t just go away.
As long as blockspace is being competed for on an L1 and the L1 is limited with resource pricing constraints, the issue of gas costs will constantly bombard end users especially in the case of rollup technologies. Celestia, on the flip, can grow with the number of nodes, whereas Ethereum is always bound by its number of data shards. Stay tuned for more on how Celestia plans to optimize rollups by acting as an improvement to the current validium model.
*Ethereum is roughly a billion times more expensive than AWS, barring the following assumptions - AWS is denominated on a GB basis per month. Could extrapolate that 10 years of AWS is still 10M times cheaper than Ethereum
** Yes, there are discussions of reducing down the 16 gas per byte fee to 3 gas per byte fee per EIP-4488. It’s unclear whether this will happen and when. Regardless, this would still behold end users to costs that can get expensive based on transaction size.