Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EIP: Increase Gas Utilization Target #9354

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

sslivkoff
Copy link

This proposal changes the gas utilization target from 50% to 75%. This will increase mean network throughput without increasing the worst case resource utilization for Denial of Service (DoS) attacks.

@sslivkoff sslivkoff requested a review from eth-bot as a code owner February 10, 2025 16:33
@github-actions github-actions bot added c-new Creates a brand new proposal s-draft This EIP is a Draft t-core labels Feb 10, 2025
@eth-bot
Copy link
Collaborator

eth-bot commented Feb 10, 2025

File EIPS/eip-7881.md

Requires 1 more reviewers from @g11tech, @lightclient, @SamWilsn

@eth-bot eth-bot added e-consensus Waiting on editor consensus e-review Waiting on editor to review labels Feb 10, 2025
@github-actions github-actions bot added the w-ci Waiting on CI to pass label Feb 10, 2025
Copy link

The commit 4b1fc7f (as a parent of 561750b) contains errors.
Please inspect the Run Summary for details.

title: Increase Gas Utilization Target
description: Increase the gas utilization target from 50% to 75%
author: Storm Slivkoff (@sslivkoff), Toni Wahrstätter (@nerolation)
discussions-to: <URL>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link to ethmagicians

type: Standards Track
category: Core
created: 2025-02-10
requires: <1559>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
requires: <1559>
requires: 1559


The current parameterization of [EIP-1559](./eip-1559.md) creates a large separation between Ethereum’s average computational load and its worst case computational load. The gas utilization target is defined as 50% of the gas limit, currently 18M gas and 36M gas respectively. This relationship amplifies the worst case load to always be at least twice as large as the average load. This forces the network to accommodate burstier loads and overprovision by an extra factor of two.

Closing the gap between the average case and worst case will improve the efficiency, scalability, safety of the network.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Closing the gap between the average case and worst case will improve the efficiency, scalability, safety of the network.
Closing the gap between the average case and worst case will improve the efficiency, scalability, and safety of the network.

The base fee update rule is:
`b_new = b_old * (1 + f(gas_used_old))`

[EIP-1559](./eip-1559.md) currently specifies:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add empty line before lists


Change these functions to:
- `gas_target = 0.75 * gas_limit`
- `f(gas_used_old) = slope * (gas_used_old - gas_target) / gas_target`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `f(gas_used_old) = slope * (gas_used_old - gas_target) / gas_target`
- `f(gas_used_old) = slope * (gas_used_old - gas_target) / gas_target` where

Change these functions to:
- `gas_target = 0.75 * gas_limit`
- `f(gas_used_old) = slope * (gas_used_old - gas_target) / gas_target`
- if `gas_used_old <= gas_target`: `slope = 1 / 8`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- if `gas_used_old <= gas_target`: `slope = 1 / 8`
- `slope = 1 / 8` when `gas_used_old <= gas_target`

Minor nitpick, I think this reads a bit better though

- `gas_target = 0.75 * gas_limit`
- `f(gas_used_old) = slope * (gas_used_old - gas_target) / gas_target`
- if `gas_used_old <= gas_target`: `slope = 1 / 8`
- if `gas_used_old >= gas_target`: `slope = 3 / 8`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- if `gas_used_old >= gas_target`: `slope = 3 / 8`
- `slope = 3 / 8` when `gas_used_old > gas_target`

Two definitions for slope when gas_used_old = gas_target


Increasing the gas target from 50% to 75% would have the same effect on mean throughput as raising the gas limit from 36M to 54M. However, the gas target approach is much safer against DoS attacks because it does not increase the size of the worst case computational load.

It would be desirable to target an even higher level of utilization than 75%. However, [EIP-1559](./eip-1559.md) requires that utilization must be able to freely move above and below the gas target, in order for utilization to be a useful indicator of demand. Putting the target near 100% makes it difficult to use utilization as an indicator of demand.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It would be desirable to target an even higher level of utilization than 75%. However, [EIP-1559](./eip-1559.md) requires that utilization must be able to freely move above and below the gas target, in order for utilization to be a useful indicator of demand. Putting the target near 100% makes it difficult to use utilization as an indicator of demand.
It would be desirable to target an even higher level of utilization than 75%. However, [EIP-1559](./eip-1559.md) requires that utilization must be able to freely move above and below the gas target in order for utilization to be a useful indicator of demand. Putting the target near 100% makes it difficult to use utilization as an indicator of demand.

Could you quantify what 'near' is, is 75% not near?


## Security Considerations

This proposal does not increase the worst case load for node clients. This allows the network to scale more safely against the threat of DoS attacks.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No mention of state and history growth? Could reference state and history expiry as possible solutions. I think more should be added to this section as it is really the main concern of this EIP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c-new Creates a brand new proposal e-consensus Waiting on editor consensus e-review Waiting on editor to review s-draft This EIP is a Draft t-core w-ci Waiting on CI to pass
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants