Cointime

Download App
iOS & Android

On Increasing the Block Gas Limit

by Toni and Vitalik.special thanks to the Starkware team for feedback and data!

The TL;DR

  • By increasing the block gas limit and the price for nonzero calldata bytes, a smaller and less variable block size can be achieved, making space to add more blobs in the future.
  • Increasing the price for nonzero calldata reduces the maximum possible block size. At the same time, the block gas limit could be raised to make more space for regular transactions.
  • This further incentivizes the transition to using blobs for data availability, strengthening the multidimensional fee market by reducing competition between calldata and blobs.
  • It slows down state growth, which might be preferable in preparing for the Verkle upgrades.

Rollup-Centric Block Size

Ethereum’s block size hasn’t been changed since EIP-1559.With a focus on the rollup-centric roadmap in the medium, or possible long term future one might argue that the way block space is used hasn’t been optimized for rollups yet. With the introduction of EIP-4844, we’re taking a big step towards making Ethereum more rollup-friendly. However, the capacity of Beacon blocks and the size of their individual parts have remained mostly unchanged.

Over the past 12 months, the effective block size measured in bytes essentially doubled. This might be a result of more and more rollups starting to use Ethereum for DA and trends like Inscriptions.See Appendix 1 for the numbers.

By reducing the maximum size of the EL parts of Beacon blocks, one can make room for more blobs while maintaining the current security levels:

storage_distribution776×207 9.84 KB

The Goals

  • Better separate data from execution. Blobs are designated to serve one specific thing - data. On the other hand, calldata is used for execution and data. Cheap calldata was important to accelerate the adoption of rollups, but its price must be reconsidered under EIP-4844.
  • Reduce Beacon block variance and size. The size of Beacon blocks is heavily dependent on the EL payload, which can be maximized in size using calldata. For large Beacon blocks, the EL payload accounts for 99% of their size (see Appendix 2). It’s important to note that it’s not the average block size that is problematic. With 125 KB the median block size is 14.5 times smaller than maximally possible. The aim is to decrease this gap and reduce the avg/max ratio in block sizes.
  • Make sure not to harm a specific set of users/applications disproportionally. While data-availability oriented apps can start using blobs, apps that handle big on-chain proofs, which are not just simply data, might be affected more.
  • Reduce number of reorged blocks.

boxplot1200×400 23.2 KB

Notable, there were significantly less data points for reorged blocks (368 vs ~129k).

The chart shows the size of reorged vs not-reorged blocks of the last ~16 days (19 Jan - 4 Feb 2024).

  • In the last 16 days, blocks that were eventually reorged were ~93% larger (median) than blocks that were eventually finalized.
  • The avg. block size of the reorged blocks was 0.155 MB while blocks making it into the canonical chain had around 0.08 MB.

Design Considerations

As of today, we have been focusing on 5 different designs and want to quickly outline the pros and cons of each of them.

(1) Increase Calldata to 42

By simply increasing calldata costs to 42.0 gas, we can reduce the maximum possible block size from ~1.78 MB to ~0.68 MB. This makes room to increase the block gas limit, for example to 45 million, giving us a max block size of ~1.02 MB.

gas_limit_increase1200×400 47.8 KB

The area inside the green circle might potentially represent a sweet spot.

Pros

  • Reduces the maximum block size and its variance and makes room for more blobs in the future.
  • Increases costs of using calldata for data availability, thus strengthens the multidimensional fee market.
  • It’s simple.

Cons

  • Affects apps that are dependent on much calldata, not just for data availability. On-chain STARK proof verification, which is super important to have, could become substantially more expensive for large proofs.

(2) Increase Calldata to 42 and Decrease Other Costs

Like in the previous example (1), we could make it more expensive to use calldata but cheaper to perform certain arithmetic operations that are common in calldata-heavy proof verification, and that are not on the frontier of “causes of worst-case block time”. This approach is designed to balance out the higher expenses for applications that use a lot of calldata and are unable to switch to using blobs.

Taking Starknet as an example, the main cost drivers are the opcodes JUMPIPUSH1ADD, followed by DUP2PUSH2 and JUMP.

drawing600×700 37.7 KB

This leads to a question for client developers: “Which opcode’s cost could be lowered to save on gas for calldata heavy proof verification?”

It is very likely that one will not be able to fully “compensate” affected applications through lowering the costs of specific operations. For example, even if we set ADDSUBMULMULMOD, which are all part of a STARK proof verification, to 1 gas, we’d only save around 322,624 of a total ~2,596,128 gas spent on EVM operations.

Pros

  • Increases costs of using calldata for data availability which leads to a lower block size variance.
  • Reduces the maximum block size.
  • Still simple to implement.

Cons

  • Slightly more complex and requires further analysis on potential side-effects.
  • Might not fully offset the increase in calldata costs.

(3) Simple 2D Pricing for Calldata

As proposed in EIP-4488, we could introduce a 2D price mechanism by capping the calldata per block. This reduces the supply of calldata per block, making it a more scarce resource.EIP-4488 introduces a BASE_MAX_CALLDATA_PER_BLOCK and a CALLDATA_PER_TX_STIPEND.

  • The BASE_MAX_CALLDATA_PER_BLOCK determines the maximum calldata that can be used (in an empty block). For each transaction, the available calldata increases. A transaction’s maximum calldata is the full BASE_MAX_CALLDATA_PER_BLOCK plus its stipend.
  • The CALLDATA_PER_TX_STIPEND acts as an additional calldata-usage-bonus per transaction.

Using the values proposed in the EIP, except keeping the calldata costs at 16 gas, the maximum block size would be ~1.332 MB.

Pros

  • Disincentivizes calldata usage for data availability.
  • Doesn’t affect standard transactions or token transfers.
  • Reduces the maximum block size.

Cons

  • Affects apps that are dependent on much calldata, not just for data availability.
  • Increased complexity in analysis and implementation.
  • Multi-dimensional resource limit rules for block building.

(4) Full 2D Pricing for Calldata

By creating a market similar to EIP-1559 but specifically for calldata, we could completely separate it from other operations, much like we do with blobs. We could set an initial target for calldata usage, for example 125 KB, and then allow it to have up to 1 MB if needed. The price for using calldata would automatically adjust based on how much demand there is. In addition to data used for data availability (blobs), we would introduce a new type of ‘container’ specifically for calldata required for execution.

Pros

  • Disincentivices calldata usage for data availability.
  • Clean separation of calldata used for execution and data.

Cons

  • Increased complexity in analysis and implementation.
  • Multi-dimensional resource limit rules for block building.

(5) Increase Calldata With ‘EVM Loyalty Bonus’

Imagine we could provide those that are still requiring large calldata for on-chain computation (e.g. proof verification) with a bonus that compensates them for increased calldata costs.

By introducing a formula like the following, we can reduce block sizes while not disproportionally hurting calldata dependent apps.

tx.gasused = max(21000 + 42 * calldata, 21000 + 16 * calldata + evm_gas_used)

  • The calldata is high (42 gas) for those that rely more on data availability.
  • The calldata is low (16 gas) for those that additionally spend gas on evm computation.
  • Spending 26 gas per calldata byte on evm_gas_used enables access to 16 gas calldata.

This can be visualized as follows:

transaction_dist800×400 93.7 KB

  • The chart shows all transactions from 01.01.2024 to 31.01.2024.
  • The colored areas indicate the minimum evm gas (y-axis) a transaction must spend for every calldata byte (x-axis) to reach the 16 calldata price for different ‘high’ calldata prices of 32, 42 and 68 gas.
  • We can see some colored points forming bars at the bottom. These apps are using much calldata but pay relatively low amounts of gas. This can be attributed to DA leveraged through calldata.
  • For example, an application that uses 146 KB transactions spending 7 million gas in evm_gas_used will profit from the formula, 21000 + 16 * calldata + evm_gas_used and eventually pay 16 gas per calldata.
  • An application that has 200 KB calldata transactions costing 9 million evm gas will pay 21_000 + (16*200*1024) + 9_000_000 = 12_297_800 instead of 21_000 + (42*200*1024) + 9_000_000 = 17_622_600.
  • The pure DA consumers would not reach the green area and therefore pay 42 gas per calldata byte.

For the ‘16 vs 42 gas’ variant, the maximum EL block size decreases by 62% to ~0.68 MB.

The area in which the evm gas used “compensates” for the calldata price increase requires to use at least 26 gas for evm operations per calldata byte.

The interplay between the evm gas usage and its impact on the calldata price and be visualized as follows:

gasmap_legacy1721×700 237 KB

Current Situation:

  • There is no special interaction between the evm gas used and a transaction’s gas usage.

Loyalty Bonus:

  • Constant Before Threshold: The observed constant total gas usage for lower EVM gas usages in the plot indicates transactions where the EVM operations do not yet contribute sufficiently to reach the cheaper calldata rate. In this phase, the total gas cost is primarily determined by the calldata size, priced at the higher rate.
  • Increase Beyond Threshold: The increase in total gas usage at higher EVM gas usages reflects transactions crossing the threshold where their EVM operations’ gas cost is sufficient to leverage the cheaper calldata rate. However, because this now includes significant EVM gas usage in the total cost, the overall gas expense rises proportionally to the additional EVM operations conducted.

This means, we reach the 16 gas calldata price by using 26 gas per calldata byte on evm operation. For large calldata users this settles at a ~61% ratio of exec/data. The chart shows this threshold over a range of calldata sizes.

calldatapercentage1200×500 35.2 KB

As long as evm_gas_used>26×calldata_size, one profits from the loyalty bonus formula.

Pros

  • Disincentivices calldata usage for data availability.
  • Reduces blocksize to 0.68 MB, making space for gas limit increases and/or raising the number of blobs.
  • Reduces block variance.
  • Token transfers or approvals would qualify for the 16 gas calldata. So no effects on regular users.

Cons

  • Slightly increases complexity.
  • Introduces some interplay (and potentially side-effects) between calldata size and gas spent on evm gas.

Summarizing

It makes sense to think about ways to decrease the maximum possible size of Beacon blocks to make room for 4844 blobs, prepare for Verkle and reduce the variance in block size. Increasing the calldata price will act as a disincentive to continue using calldata for data availability. Scaling through increasing the blob count comes with less variance in max. size data to handle.

Simply raising the calldata cost to 42 might be too blunt an approach, while creating separate fee markets could add too much complexity. A balanced solution could be to increase the cost of calldata while reducing the cost of some operations, or perhaps moving towards a model that offers incentives for using calldata inside the EVM.

Ultimately, these changes would reduce competition in the traditional fee market and strengthen the multidimensional fee market.

Appendix

Current Situation

The use of calldata has rapidly increased in the past year - it essentially doubled - which might be attributable to rollups using Ethereum for DA and Inscriptions.

calldatasize_over_time1100×400 90.2 KB

The above chart shows the maximum block size observed every 1,000 blocks (to reduce the number of datapoints). We can clearly see a continuous increase with a rising number of positive outliers since April 2023.

The maximum share in size of the EL payload is currently at 69.3% of the total Beacon block + the blobs. By increasing the calldata costs to 42 gas while increasing the block gas limit to ~45 million would effectively reduce the blocksize by 58% while decreasing the share of the maximum possible EL payload to 56 of the total Beacon block incl. blobs.

pies1364×400 47.7 KB

  • Reducing the EL payload size opens up the potential to add more blobs without surpassing the current maximum block size (30m limit / 16 gas calldata).
  • 6 blobs have a size of 0.75 MB.
  • The proposed change would reduce the max. possible block size by 0.76 MB (1.78−1.02).

As of today, we see block sizes of up to ~1 MB on a daily basis, with a potential maximum of ~1.78 MB per block.

Max Block Size per Day

block_size_over_time1200×400 55.6 KB

EL Payload Share - Average block

  • On average, the EL payload accounts for ~20% of the total size of the Beacon block.

elpayload_share_avg1200×400 46.4 KB

EL Payload Share - Large blocks

  • For larger blocks, this share increases to ~99%. Thus, the EL payload is the main contributor to large blocks.
  • This chart shows the share of the EL payload compared to the complete Beacon block for big (0.99% quantile) blocks.

elpayload_share_991200×400 44.3 KB

Related links

Comments

All Comments

Recommended for you

  • Ethereum Foundation Stakes $46.2 Million in ETH

    On March 30, Arkham monitoring reported that the Ethereum Foundation has just staked $46.2 million worth of ETH, marking the largest amount of ETH staked in the foundation's history.

  • US Special Forces May Participate in Island Seizure or Iran Nuclear Tasks

    On March 30, according to a report by the New York Times on March 29, two U.S. military officials revealed that hundreds of U.S. special operations personnel have arrived in the Middle East, including Army Rangers and Navy SEALs, to provide 'more options' for U.S. military actions against Iran. The report states that these special operations forces have not yet been assigned specific tasks, but as professional ground combat units, they may be involved in operations related to the Strait of Hormuz, Hark Island, or Iran's nuclear facilities. (CCTV International News)

  • FTSE China A50 Index Futures Turn Positive

    On March 30, FTSE China A50 Index futures turned positive after previously dropping more than 1%. (Jin Shi)

  • Trump Claims Iran Has Agreed to Most of the '15-Point Plan'

    On March 30, CNN reported that U.S. President Trump stated that Iran has agreed to most of the content in the ceasefire '15-point plan'. (Xinhua News Agency)

  • BTC Surpasses $67,000

    Market data shows that BTC has surpassed $67,000, currently priced at $67,017.45, with a 24-hour increase of 0.44%. The market is experiencing significant fluctuations, so please ensure proper risk management.

  • Trump: US Will Act Swiftly if Iran Charges Fees in Strait of Hormuz

    On March 30, when asked about Iran's plans to charge fees in the Strait of Hormuz, US President Trump stated that he needed to confirm the validity of this information, but that the US could terminate such actions very quickly. "We can complete this task in two minutes. We can do it so swiftly that you would feel dizzy," he said. He noted that Saudi Arabia, Qatar, the UAE, and Bahrain are retaliating against Iran. "I was very surprised by their attack. But once attacked, they retaliated effectively. We have very strong communication, but people from all these countries say they have been fighting all along," he added. (Jinshi)

  • A-shares Trading Volume Exceeds 500 Billion Yuan

    On March 30, the trading volume of the Shanghai and Shenzhen stock exchanges exceeded 500 billion yuan, an increase of 86.4 billion yuan compared to the same time the previous day. (Jin Shi)

  • Trump: Iran Has Allowed 20 Tankers to Pass Through the Strait of Hormuz

    On March 30, U.S. President Trump stated on the 29th that Iran allowed 10 tankers flying the Pakistani flag to pass through the Strait of Hormuz last week, and the number has now increased to 20. He told the Financial Times, 'These tankers have set sail and are heading straight through the center of the strait.' The decision was approved by Iran's Islamic Parliament Speaker Ghalibaf. (Xinhua)

  • China's AI Model Usage Surges Nearly 34% Month-on-Month, Outpacing the U.S. for Four Consecutive Weeks

    On March 30, according to the latest data from institutions, the total global usage of AI large models reached 22.7 trillion tokens last week, reflecting an 11.2% month-on-month increase. Among the listed AI models, the weekly usage of Chinese AI models rose to 9.857 trillion tokens, marking a 33.94% increase from the previous week; the weekly usage of U.S. AI models was 3.007 trillion tokens, with a month-on-month growth of 1.79%. The weekly usage of Chinese AI models has increased for four consecutive weeks, consistently surpassing that of the U.S. In the past week, the top four global usage rankings were all occupied by Chinese AI models. Xiaomi's MiMo-V2-Pro maintained its top position with a weekly usage of 3.96 trillion tokens; Step 3.5 Flash (free) ranked second with a weekly usage of 1.49 trillion tokens; MiniMax M2.7 entered the rankings at third place with a weekly usage of 1.29 trillion tokens; and DeepSeek V3.2 ranked fourth with a weekly usage of 1.24 trillion tokens, reflecting an 8.7% increase. Meanwhile, MiniMax M2.5, which ranked third the previous week, fell to ninth place, nearly dropping out of the rankings, with a weekly usage of 0.909 trillion tokens, down 30% month-on-month. (Dongxin News Agency)

  • Over $313 Million Liquidated in the Past 24 Hours

    According to Coinglass data, over the past 24 hours, a total of $313 million has been liquidated across the network, with long positions accounting for $238 million and short positions for $74.7256 million. Among these, Bitcoin long positions saw liquidations of $89.9706 million, while Bitcoin short positions were liquidated for $30.4691 million. Ethereum long positions faced liquidations of $69.7201 million, and Ethereum short positions were liquidated for $21.9023 million. Additionally, in the last 24 hours, a total of 89,935 individuals were liquidated globally, with the largest single liquidation occurring on Bybit-BTCUSD valued at $9.8018 million.