Update EIP-7928: Clarify edge cases#10493
Conversation
File
|
|
@Marchhill the changes made here 6c14bb5 is incorrect.
If authorization fails due to an invalid chain id, the account should not be read. |
Ah ok I wasn't too sure here, I think we could make this more explicit. There are a few cases where the delegation could fail: invalid chain id, signature, nonce, code already deployed. Is invalid nonce the only case we should record an account read? Also does this include the case where nonce == 2^64 - 1? |
| **Zero‑value transfers:** **MUST NOT** be recorded in `balance_changes`, but the corresponding addresses **MUST** still be included with empty `AccountChanges`. | ||
| #### Unaltered account balance | ||
|
|
||
| If an account’s balance changes during a transaction, but its post-transaction balance is equal to its pre-transaction balance, then the change **MUST NOT** be recorded in `balance_changes`. However all sender and recipient addresses (including the coinbase) **MUST** be included in `AccountChanges`. |
There was a problem hiding this comment.
What do you think about adding the coinbase case to the "special cases" section below so we differentiate it from this "post-transaction" context in this first sentence? Below, we could have something like:
This includes the following special cases where the `address` must be included with empty changes if no other state changes were made
- A zero-value transfer to an `address`
- Calling a same-transaction SELFDESTRUCT on an `address` that had a zero pre-transaction balance
- The `address` being awarded a block fee of zero as the coinbase in a block
Clarify edge cases:
accessed_addresses