forked from DecentralizedClimateFoundation/DCIPs
49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
---
|
|
eip: 6188
|
|
title: Nonce Cap
|
|
description: Caps the nonce at 2^64-2
|
|
author: Gavin John (@Pandapip1)
|
|
discussions-to: https://ethereum-magicians.org/t/eip-6190-functional-selfdestruct/12232
|
|
status: Review
|
|
type: Standards Track
|
|
category: Core
|
|
created: 2022-12-20
|
|
requires: 2929
|
|
---
|
|
|
|
## Abstract
|
|
|
|
This EIP caps the nonce at `2^64-2`, reserving it for contracts with unusual behavior, as defined in other EIPs.
|
|
|
|
## Motivation
|
|
|
|
This EIP is not terribly useful on its own, as it adds additional computation without any useful side effects. However, it can be used by other EIPs.
|
|
|
|
## Specification
|
|
|
|
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119 and RFC 8174.
|
|
|
|
### EOA Transactions
|
|
|
|
The nonce of a transaction originating from an EOA MUST be less than `2^64-2`. If the nonce is either `2^64-1` or `2^64-2`, the transaction MUST be invalid.
|
|
|
|
### `CREATE` and `CREATE2`
|
|
|
|
If a nonce would be incremented to `2^64-1` by `CREATE` or `CREATE2`, it is instead set to `2^64-2`. `2^64-1` is reserved for alias or other special contracts.
|
|
|
|
## Rationale
|
|
|
|
Capping a nonce allows for contracts with special properties to be created, with their functionality based on their contract code. As such, only one nonce needs to be reserved.
|
|
|
|
## Backwards Compatibility
|
|
|
|
This EIP requires a protocol upgrade, since it modifies consensus rules. The further restriction of nonce should not have an effect on accounts, as reaching a nonce of `2^64-2` is unfeasible.
|
|
|
|
## Security Considerations
|
|
|
|
As it is not feasible for contract accounts to get to the nonce limit, any potential problems with opcodes that depend on the value of an account's nonce can be safely ignored.
|
|
|
|
## Copyright
|
|
|
|
Copyright and related rights waived via [CC0](../LICENSE.md).
|