--- 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).