DCIPs/EIPS/eip-4803.md

52 lines
1.9 KiB
Markdown

---
eip: 4803
title: Limit transaction gas to a maximum of 2^63-1
description: Valid transactions must have a reasonable gas limit
author: Alex Beregszaszi (@axic)
discussions-to: https://ethereum-magicians.org/t/eip-4803-limit-transaction-gas-to-a-maximum-of-2-63-1/8296
status: Stagnant
type: Standards Track
category: Core
created: 2022-02-02
---
## 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](./eip-1559.md) 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
Copyright and related rights waived via [CC0](../LICENSE.md).