HomeEIPs
EIPsEIP-4803
EIP-4803

Limit transaction gas to a maximum of 2^63-1

Valid transactions must have a reasonable gas limit
StagnantStandards Track: Core
Created: 2022-02-02
Alex Beregszaszi (@axic)
DiscussionsOriginal linkEdit
1 min read

The proposal of EIP-4803 is to limit transaction gas to a maximum of 2^63-1 in Ethereum. It aims to mitigate the harm caused by potential quadratic-complexity DoS attacks that rely on calls by limiting the de-facto maximum call stack depth to ~340 (down from ~1024). Additionally, it recommends a gas limit increase to preserve the de-facto transactions-per-second processing capability of the system for average contracts.

Video
Anyone may contribute to propose contents.
Go propose
Original

Abstract

Limit transaction gas to be between 0 and 2^63-1.

Motivation

The gas limit field in the transaction is specified to be an arbitrary long unsigned integer, but various clients put limits on this value. This EIP brings a reasonable limit into consensus.

Specification

Introduce one new restrictions retroactively from genesis: any transaction is invalid and not includeable in a block, where the gas limit exceeds 2^63-1.

Rationale

2^63-1 vs 2^64-1

2^63-1 is chosen because it allows representing the gas value as a signed integer, and so the out of gas check can be done as a simple "less than zero" check after subtraction.

Current limit

Due to the nature of RLP encoding, there is no fixed upper bound for the value, but most implementations limit it to 256-bits. Furthermore, most client implementations (such as geth) internally handle gas as a 64-bit value.

Backwards Compatibility

While this is a breaking change, no actual effect should be visible.

Before EIP-1559 it was possible to include transactions with gasPrice = 0 and thus the gasLimit * gasPrice <= accountBalance calculation could have allowed for arbitrarily large values of gasLimit. However, the rule that the transaction list cannot exceed the block gas limit, and the strict rules about how the block gas limit can change, prevented arbitrarily large values of gasLimit to be in the historical state.

Security Considerations

None.

Test Cases

TBA

Copyright and related rights waived via CC0.

Further reading
Anyone may contribute to propose contents.
Go propose
Adopted by projects
Anyone may contribute to propose contents.
Go propose

Not miss a beat of EIPs' update?

Subscribe EIPs Fun to receive the latest updates of EIPs Good for Buidlers to follow up.

View all
Serve Ethereum Builders, Scale the Community.
Resources
GitHub
Supported by