# Nethermind / EIP-7928 — public-source conformance review

Review date: 2026-10-27. Scope: Amsterdam block-level access lists (BALs), including sequential construction, parallel validation, encoding, header commitments and activation. **One retained candidate, already known; no new demonstrated consensus bug.** C1 is a latent decoder limit that rejects otherwise valid high-gas-limit blocks. This is a static source review, not an execution result.

Only public source files, public GitHub issue/PR metadata and public specifications were consulted. Client code was downloaded from `raw.githubusercontent.com` at immutable hashes; repository trees and heads came from `api.github.com`. No client binary, EVM, node, RPC request, network probe against a node, or fixture suite was run. Local checks cover report size, links to downloaded source ranges, and the output path only.

## 1. Pins and fork/spec baseline

Heads resolved through the requested commit APIs, then held fixed for the review:

| Repository / branch | Pinned head | Commit API |
|---|---|---|
| NethermindEth/nethermind / `master` | `d48833af88ec4224c86afadd1c596e8f619c406b` (2026-10-27T12:00:20Z) | [head lookup](https://api.github.com/repos/NethermindEth/nethermind/commits/master) |
| ethereum/execution-specs / `forks/bogota` | `7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b` (2026-10-27T17:40:55Z) | [head lookup](https://api.github.com/repos/ethereum/execution-specs/commits/forks/bogota) |
| ethereum/go-ethereum / `master` | `8817f99f92852f8ac53e596de6202dd9e3494065` (2026-10-27T03:32:47Z) | [head lookup](https://api.github.com/repos/ethereum/go-ethereum/commits/master) |
| ethereum/EIPs / `master` | `d4c575521d99ec881a444ab3af604e684b5f0743` (2026-10-27T16:04:29Z) | [head lookup](https://api.github.com/repos/ethereum/EIPs/commits/master) |
| ethereum/consensus-specs / `master` | `8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2` (2026-10-27T16:28:12Z) | [head lookup](https://api.github.com/repos/ethereum/consensus-specs/commits/master) |

The EELS reference is **`forks/bogota`**, using its Amsterdam directory, not a nonexistent execution-specs `master`. The actual Amsterdam implementation reviewed is [src/ethereum/forks/amsterdam/block_access_lists.py#L1-L29](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L1-L29), [src/ethereum/forks/amsterdam/fork.py#L267-L315](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L267-L315) and [src/ethereum/forks/amsterdam/blocks.py#L247-L251](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/blocks.py#L247-L251). Gloas is the consensus half; its feature list and explicit targeted EIP revisions are in [specs/gloas/beacon-chain.md#L163-L186](https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L163-L186).

The schedule below is the **18-entry “Scheduled for Inclusion” list**, from [EIPS/eip-7773.md#L21-L40](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L21-L40) ([published meta EIP](https://eips.ethereum.org/EIPS/eip-7773#eips-scheduled-for-inclusion)). Networking and informational entries appear separately in the meta EIP and are not silently added to that list: [EIPS/eip-7773.md#L42-L55](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L42-L55). The meta's mainnet activation row remains unfilled: [EIPS/eip-7773.md#L62-L70](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L62-L70). Nethermind explicitly enables EIP-7928 for Amsterdam in [src/Nethermind/Nethermind.Specs/Forks/25_Amsterdam.cs#L9-L32](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Specs/Forks/25_Amsterdam.cs#L9-L32).

**Version convention:** “current published text” means the immutable EIP file at EIPs head `d4c575521d99ec881a444ab3af604e684b5f0743`; it is an exact version, not an invented semantic version. The next column records the separately pinned EIP revision named by EELS tests or the Gloas specification. These revisions need not equal the latest published text. The current reference implementation version is the EELS or consensus-specs head above; a test's `ref_spec` alone is not a guarantee that it includes every later prose edit.

| Scheduled EIP | Current text at the EIPs pin / status | Spec's explicit EIP target revision and source |
|---|---|---|
| 2780 | [EIPS/eip-2780.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-2780.md#L1-L12); Last Call | `7243c92ba812437c64bae9fc6524ee269b29daa9`; [tests/amsterdam/eip2780_reduce_intrinsic_tx_gas/spec.py#L14-L17](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip2780_reduce_intrinsic_tx_gas/spec.py#L14-L17) |
| 7688 | [EIPS/eip-7688.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7688.md#L1-L12); Review | `f2e6d7fb01194d590e16fcdcae8061d06cf1a7f1`; [specs/gloas/beacon-chain.md#L167-L168](https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L167-L168) |
| 7708 | [EIPS/eip-7708.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7708.md#L1-L12); Last Call | `f7230c46a743313957d8f38a159bda934cc735b2`; [tests/amsterdam/eip7708_eth_transfer_logs/spec.py#L15-L18](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7708_eth_transfer_logs/spec.py#L15-L18) |
| 7732 | [EIPS/eip-7732.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7732.md#L1-L12); Last Call | `c36a2e58a4496ed21bef6b1c97505b03fd159f0a`; [specs/gloas/beacon-chain.md#L169-L170](https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L169-L170) |
| 7778 | [EIPS/eip-7778.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7778.md#L1-L12); Last Call | `4897aec97160c72d2080acf928b132f2efc1a886`; [tests/amsterdam/eip7778_block_gas_accounting_without_refunds/spec.py#L13-L16](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7778_block_gas_accounting_without_refunds/spec.py#L13-L16) |
| 7843 | [EIPS/eip-7843.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7843.md#L1-L12); Last Call | `c3bfd4ba41cf0fcbfe8c404f33ba89f5174971e0`; [tests/amsterdam/eip7843_slotnum/spec.py#L14-L17](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7843_slotnum/spec.py#L14-L17) |
| 7928 | [EIPS/eip-7928.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7928.md#L1-L12); Last Call | `f834f0004aa5110a5f1ac0d6b80e3dc4b842d040`; [tests/amsterdam/eip7928_block_level_access_lists/spec.py#L14-L17](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7928_block_level_access_lists/spec.py#L14-L17) |
| 7954 | [EIPS/eip-7954.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7954.md#L1-L12); Last Call | `2e62d6a88aa596e4efbf3592cda7706f8a51dac3`; [tests/amsterdam/eip7954_increase_max_contract_size/spec.py#L14-L17](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7954_increase_max_contract_size/spec.py#L14-L17) |
| 7976 | [EIPS/eip-7976.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7976.md#L1-L12); Last Call | `c998ef94eb16a6af8a9b8e2084f947b17ea14865`; [tests/amsterdam/eip7976_increase_calldata_floor_cost/spec.py#L13-L16](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7976_increase_calldata_floor_cost/spec.py#L13-L16) |
| 7981 | [EIPS/eip-7981.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7981.md#L1-L12); Last Call | `8da3cf91d4bc688c43cc25f2f03b7c86c7bbc257`; [tests/amsterdam/eip7981_increase_access_list_cost/spec.py#L13-L16](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7981_increase_access_list_cost/spec.py#L13-L16) |
| 7997 | [EIPS/eip-7997.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7997.md#L1-L12); Last Call | `192193facea01dfb8b87ad59d67e8385bf9304b1`; [tests/amsterdam/eip7997_deterministic_factory_contract/spec.py#L16-L19](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7997_deterministic_factory_contract/spec.py#L16-L19) |
| 8024 | [EIPS/eip-8024.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8024.md#L1-L12); Last Call | `34b49095ca5f7343045da279f04e7ecd1e451393`; [tests/amsterdam/eip8024_dupn_swapn_exchange/spec.py#L15-L18](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8024_dupn_swapn_exchange/spec.py#L15-L18) |
| 8037 | [EIPS/eip-8037.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8037.md#L1-L12); Last Call | `19bdfb4f97064dfbeb3d41d31efac211265b49a6`; [tests/amsterdam/eip8037_state_creation_gas_cost_increase/spec.py#L24-L27](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8037_state_creation_gas_cost_increase/spec.py#L24-L27) |
| 8038 | [EIPS/eip-8038.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8038.md#L1-L12); Last Call | `f83531466a3862853424a81d000727b3043ef2cc`; [tests/amsterdam/eip8038_state_access_gas_cost_increase/spec.py#L13-L16](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8038_state_access_gas_cost_increase/spec.py#L13-L16) |
| 8045 | [EIPS/eip-8045.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8045.md#L1-L12); Last Call | `414a8404198c5afaa3cfed10a385a9aae1dfaae3`; [specs/gloas/beacon-chain.md#L175-L176](https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L175-L176) |
| 8061 | [EIPS/eip-8061.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8061.md#L1-L12); Last Call | `01f15c37c64114c478cb1136e0a6966084e4db14`; [specs/gloas/beacon-chain.md#L177-L178](https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L177-L178) |
| 8246 | [EIPS/eip-8246.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8246.md#L1-L12); Last Call | `8be64cf6a01350938b93332cf0062ab7a3166f23`; [tests/amsterdam/eip8246_selfdestruct_no_burn/spec.py#L14-L17](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8246_selfdestruct_no_burn/spec.py#L14-L17) |
| 8282 | [EIPS/eip-8282.md#L1-L12](https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8282.md#L1-L12); Last Call | `45e570a246207d5b1fb095e259e3f98bb0922639`; [tests/amsterdam/eip8282_builder_execution_requests/spec.py#L18-L21](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8282_builder_execution_requests/spec.py#L18-L21) |

For this item, the normative published source is [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928). Its EELS test metadata names `f834f0004aa5110a5f1ac0d6b80e3dc4b842d040`, while this review also reads the current EIP text and the actual pinned Amsterdam implementation. The EELS builder records index-start state and removes same-index changes that net to zero; see [src/ethereum/forks/amsterdam/block_access_lists.py#L305-L334](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L305-L334) and [src/ethereum/forks/amsterdam/block_access_lists.py#L755-L824](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L755-L824). It is therefore inappropriate to use an older per-system-call diff as the reference.

## 2. Retained candidate

### C1 — BAL decoder imposes a 65,535-change ceiling absent from EIP-7928

**Disposition: known, open fix PR; high confidence; valid block rejected.** This is a gas-limit-dependent conformance difference, not evidence of a currently failing canonical-chain block.

**(1) Specification, verbatim and reference implementation.**

> “The block access list is constrained by the block gas limit rather than a fixed maximum number of items.”

Source: [EIP-7928, Block Access List Size Constraint](https://eips.ethereum.org/EIPS/eip-7928#block-access-list-size-constraint). Repeated modifications of the same account do not consume an additional address item. The reference counts addresses and unique storage keys, not a fixed number of change events, in [src/ethereum/forks/amsterdam/block_access_lists.py#L859-L892](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L859-L892). Change indices cover pre-execution, every transaction and post-execution; [src/ethereum/forks/amsterdam/fork.py#L827-L849](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L827-L849) and [EIP-7928 index assignment](https://eips.ethereum.org/EIPS/eip-7928#blockaccessindex-assignment). The index type is uint32, not uint16: [EIP-7928 RLP encoding](https://eips.ethereum.org/EIPS/eip-7928#rlp-encoding).

**(2) Nethermind code at `d48833af88ec4224c86afadd1c596e8f619c406b`.**

[src/Nethermind/Nethermind.Core/Eip7928Constants.cs#L7-L17](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Eip7928Constants.cs#L7-L17):

```csharp
public const int MaxTxs = ushort.MaxValue;
```

[src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L33-L35](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L33-L35):

```csharp
private static readonly RlpLimit _txLimit = new(Eip7928Constants.MaxTxs, "", ReadOnlyMemory<char>.Empty);
```

That limit is passed to balance, nonce and code change-list decoding in [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L73-L80](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L73-L80). The same cap applies to a single slot's change history in [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/SlotChangesDecoder.cs#L18-L26](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/SlotChangesDecoder.cs#L18-L26). This is an enforced decode failure, not just allocation guidance: array decoding counts up to limit+1 and calls `GuardLimit` before allocation in [src/Nethermind/Nethermind.Serialization.Rlp/RlpDecoder.cs#L94-L115](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/RlpDecoder.cs#L94-L115); [src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs#L865-L879](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs#L865-L879).

**(3) Trigger condition, in words.** A valid Amsterdam block has at least 65,536 successful transactions from the same funded ordinary sender, with successive nonces, all otherwise valid and fitting both block gas dimensions and the block's RLP size. For example, zero-value transfers repeatedly using the same recipient avoid growing the BAL's distinct-account count. The sender has one nonce change per transaction, so its canonical nonce-change list has 65,536 entries. All indices fit uint32 and the address/slot item count can remain very small. Deliver the complete canonical BAL through the engine payload path: Nethermind's decoder rejects it before execution although the reference has no such history-length cap. A balance-change history or single-slot history can encounter the same ceiling.

This requires a sufficiently high, legally established block gas limit; it is **not** a claim that a 65,536-transaction block fits today's testnet limits. The reference's parent-relative gas-limit check does not establish a 65,535-transaction ceiling: [src/ethereum/forks/amsterdam/fork.py#L1118-L1155](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L1118-L1155). Block RLP size is a separate condition and must still hold: [src/ethereum/forks/amsterdam/fork.py#L128-L132](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L128-L132), [src/ethereum/forks/amsterdam/fork.py#L292-L296](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L292-L296). No malformed or duplicate-index BAL is needed.

**(4) Geth comparison at `8817f99f92852f8ac53e596de6202dd9e3494065` — agrees with the specification on this rule.**

[core/types/bal/bal_encoding_rlp_generated.go#L199-L231](https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/bal/bal_encoding_rlp_generated.go#L199-L231) decodes nonce changes until the RLP list ends:

```go
for dec.MoreDataInList() {
```

The index is read with `Uint32`, nonce with `Uint64`, and entries are appended with no uint16-count ceiling. Balance histories use the same list-driven approach in [core/types/bal/bal_encoding_rlp_generated.go#L166-L198](https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/bal/bal_encoding_rlp_generated.go#L166-L198). Geth's validation checks index bounds, ordering and the gas-derived distinct-item limit: [core/types/bal/bal_encoding.go#L79-L119](https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/bal/bal_encoding.go#L79-L119), [core/types/bal/bal_encoding.go#L177-L194](https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/bal/bal_encoding.go#L177-L194). This comparison is confined to the Amsterdam BAL format, not generic transaction decoding.

**(5) Confidence and attempted disproof.** **High** for the static decoder discrepancy; no execution reproduction claimed. I checked whether the cap was merely a uint16 index restriction, whether item counting included every change event, whether the use was dead code, and whether another protocol rule imposed the same count. The sources above rule out the first three. Transaction gas, block gas and block-byte limits constrain feasibility, so current-limit exploitability is not asserted. Reusing a sender/recipient minimizes distinct items; changing a legal chain's gas limit is a prerequisite, not a bypass of the parent-relative check. The existing public fix independently describes the same failure and calls it latent at current gas limits: [Nethermind PR #15276](https://github.com/NethermindEth/nethermind/pull/15276), **open** when read. Its reported round-trip test is a maintainer/PR claim, not a test run performed here.

**(6) Severity.** **Valid block rejected** on BAL-carrying import; potential cross-client validity disagreement under the stated higher-gas-limit conditions. No wrong-state, wrong-fee or present-day-mainnet exploit claim. The source shows BAL machinery is gated by EIP-7928: [src/Nethermind/Nethermind.Core/Specs/IReleaseSpecExtensions.cs#L69-L85](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Specs/IReleaseSpecExtensions.cs#L69-L85) and [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.cs#L127-L150](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.cs#L127-L150).

**Known-check for C1.** **Known:** [#15276](https://github.com/NethermindEth/nethermind/pull/15276), open; the pinned constant still has the old value. Searches across both issues and PRs, with no state exclusion: [repo:NethermindEth/nethermind 7928](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%207928) (202 results, all three pages fetched), [repo:NethermindEth/nethermind "block access list"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22block%20access%20list%22) (234, all three pages fetched), [repo:NethermindEth/nethermind "7928" "MaxTxs"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%227928%22%20%22MaxTxs%22) (6), and [repo:NethermindEth/nethermind "65535"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%2265535%22) (18). General keyword searches can include issue-number coincidences; relevance was checked from titles and relevant bodies.

No C1-specific test-release-tracker entry found with [repo:ethereum/execution-specs "Test Release Tracker" "65535"](https://github.com/search?type=issues&q=repo%3Aethereum/execution-specs%20%22Test%20Release%20Tracker%22%20%2265535%22) or [repo:ethereum/execution-specs "Test Release Tracker" "65,535"](https://github.com/search?type=issues&q=repo%3Aethereum/execution-specs%20%22Test%20Release%20Tracker%22%20%2265%2C535%22) (both zero). This does not mean no regression test exists anywhere. The Hive listing could not be obtained; no Hive pass/failure is attributed to C1.

## 3. Rules checked and found correct at the pin

“Correct” below means the cited source implements the stated rule on the reviewed path, **not** exhaustive testing or a guarantee about every possible state. Limits/deferred cases are separated below.

| Rule / reference | Nethermind evidence | Static result / disproof of suspected divergence |
|---|---|---|
| Shared index 0 / n+1 storage netting. [src/ethereum/forks/amsterdam/block_access_lists.py#L755-L824](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L755-L824) | [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L212-L241](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L212-L241); [src/Nethermind/Nethermind.Core/BlockAccessLists/AccountChangesAtIndex.cs#L79-L88](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/AccountChangesAtIndex.cs#L79-L88) | First write captures index-start storage. A later restoration removes this index’s change and leaves a read. Earlier-index history remains in the block aggregate. |
| Withdrawals and later system-call balance netting at n+1. [src/ethereum/forks/amsterdam/fork.py#L830-L840](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L830-L840) | [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L72-L91](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L72-L91); [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L132](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L132) | Both operations acquire the same post-execution slot; balance baseline survives between calls. Crediting then forwarding the credit back to the index-start balance leaves no balance change. |
| Shared post-execution lifetime, including parallel mode. [src/ethereum/forks/amsterdam/fork.py#L830-L849](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L830-L849) | [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.TxProcessorPool.cs#L154-L186](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.TxProcessorPool.cs#L154-L186); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L29-L38](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L29-L38) | Re-entrant acquisition at the same index returns the existing processor; post state is detached/merged only at finalization. It is not independently finalized per system call as in the Geth issue. |
| No-op storage writes must not remove prior-index writes. [EIP storage semantics](https://eips.ethereum.org/EIPS/eip-7928#storage) | [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L212-L241](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L212-L241); [src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L197-L225](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L197-L225) | Per-index removal is local. Aggregation retains prior changes and excludes a read if that key already has a write in the block. |
| Created-and-destroyed storage accesses become reads; no nonce/code change. [EIP normative edge cases](https://eips.ethereum.org/EIPS/eip-7928#edge-cases-normative) | [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L251-L295](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L251-L295); [src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L212-L225](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L212-L225) | Deletion demotes writes to reads, clears nonce/code changes and nets balance to zero. Reads from repeated ordinary create/destroy/recreate transactions union across slices. This conclusion excludes the deferred legacy storage-only prestate below. |
| Destroyed then recreated account, ordinary empty parent storage. [src/ethereum/forks/amsterdam/block_access_lists.py#L708-L727](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L708-L727) | [src/Nethermind/Nethermind.State/BlockAccessListBasedWorldState.cs#L144-L166](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/BlockAccessListBasedWorldState.cs#L144-L166); [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L251-L295](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L251-L295) | A same-transaction deleted account contributes no surviving storage writes; later recreation therefore falls back to the empty parent storage or an earlier surviving declared write. No counterexample with an ordinary initially absent account survived review. Legacy storage-only parents are not certified here. |
| Maximum nonce and index widths. [EIP RLP types](https://eips.ethereum.org/EIPS/eip-7928#rlp-encoding) | [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/NonceChangeDecoder.cs#L12-L19](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/NonceChangeDecoder.cs#L12-L19); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.LaneStore.cs#L57-L62](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.LaneStore.cs#L57-L62); [src/Nethermind/Nethermind.Evm/TransactionProcessing/TransactionProcessor.cs#L929-L939](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/TransactionProcessing/TransactionProcessor.cs#L929-L939) | BAL nonce is decoded/stored as unsigned ulong, including 2^64−1; the change lane has separate presence bookkeeping. An authorization whose input nonce is already the maximum is rejected before authority loading. History-count cap is C1, not an integer-value overflow. |
| Zero-value recipient / unchanged balance. [EIP scope](https://eips.ethereum.org/EIPS/eip-7928#scope-and-inclusion) | [src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L66-L85](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L66-L85); [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L131](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L131) | Recording creates an account entry before a no-change balance returns; the address is retained and balance_changes is empty. |
| Self-transfer / balance returns to starting value. [EIP balance semantics](https://eips.ethereum.org/EIPS/eip-7928#balance-balance_changes) | [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L131](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L131); [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L288-L309](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L288-L309) | The BAL recorder nets against the initial balance. The empty-call fast path skips cancelling self-balance writes while prior target/code access retains presence. Sender gas fees still count as real balance changes. |
| Coinbase accessed with zero priority fee; empty blocks do not invent a beneficiary access. [EIP coinbase rule](https://eips.ethereum.org/EIPS/eip-7928#edge-cases-normative) | [src/Nethermind/Nethermind.Evm/TransactionProcessing/TransactionProcessor.cs#L1886-L1896](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/TransactionProcessing/TransactionProcessor.cs#L1886-L1896); [src/Nethermind/Nethermind.Evm/State/WorldStateExtensions.cs#L39-L45](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/State/WorldStateExtensions.cs#L39-L45); [src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L396-L402](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L396-L402) | Zero-fee transaction accounting still checks AccountExists through the traced state, recording beneficiary presence. The balance recorder omits a zero change. This transaction-fee path does not execute merely because a block is empty. |
| Zero withdrawal still includes recipient. [EIP inclusion](https://eips.ethereum.org/EIPS/eip-7928#scope-and-inclusion) | [src/Nethermind/Nethermind.Consensus/Withdrawals/WithdrawalProcessor.cs#L33-L43](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Withdrawals/WithdrawalProcessor.cs#L33-L43); [src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L66-L85](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L66-L85) | Withdrawals use the unconditional recipient operation, not the zero-amount-skipping block-reward path. |
| Canonical RLP unsigned scalars; zero, leading-zero, over-width encodings. [EIP encoding](https://eips.ethereum.org/EIPS/eip-7928#rlp-encoding) | [src/Nethermind/Nethermind.Serialization.Rlp/RlpHelpers.Cursor.cs#L248-L324](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/RlpHelpers.Cursor.cs#L248-L324); [src/Nethermind/Nethermind.Serialization.Rlp/RlpHelpers.Cursor.cs#L412-L450](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/RlpHelpers.Cursor.cs#L412-L450) | UInt32/UInt64 reject raw zero, overlong payloads, leading zeros and redundant single-byte forms. UInt256 uses canonical byte-array decoding, max 32 bytes and no padding. BAL decoders call these helpers rather than decoding opaque 32-byte keys. |
| Sorted, unique accounts/slots/indices; no overlap and no empty SlotChanges. [EIP ordering](https://eips.ethereum.org/EIPS/eip-7928#ordering-uniqueness-and-determinism) | [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L32-L50](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L32-L50); [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L44-L84](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/AccountChangesDecoder.cs#L44-L84); [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/SlotChangesDecoder.cs#L24-L54](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/SlotChangesDecoder.cs#L24-L54) | Strictly increasing checks reject duplicates as well as disorder; account decoder rejects a read that overlaps a changed slot. Empty per-slot histories are rejected. |
| Header presence and first Amsterdam block. [src/ethereum/forks/amsterdam/blocks.py#L247-L251](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/blocks.py#L247-L251) | [src/Nethermind/Nethermind.Consensus/Validators/HeaderValidator.cs#L456-L476](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/HeaderValidator.cs#L456-L476); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.cs#L127-L150](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.cs#L127-L150) | Header is required from the current block’s EIP-7928 spec and forbidden before it. BAL activation is current-spec based, not dependent on the parent already carrying a BAL. Genesis is separately handled. |
| Empty-BAL commitment is Keccak(RLP empty list), not zero or empty-string hash. [EIP block structure](https://eips.ethereum.org/EIPS/eip-7928#block-structure-modification) | [src/Nethermind/Nethermind.Core/Crypto/Keccak.cs#L25-L25](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Crypto/Keccak.cs#L25-L25); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L23-L26](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L23-L26); [src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L56-L64](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L56-L64) | The constant is 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347. Non-genesis uses actual collection/encoding; an empty transaction list is not assumed to mean an empty BAL because system calls still execute. |
| Commit received bytes and compare execution result. [src/ethereum/forks/amsterdam/fork.py#L331-L356](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L331-L356) | [src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L620-L632](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L620-L632); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L32-L58](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.StateChanges.cs#L32-L58); [src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L232-L238](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L232-L238) | WireHash represents the canonical decoded RLP slice. Sequential generation hashes canonical bytes; reuse of the wire hash is guarded by row equality and final structural checks. |
| BAL item-limit boundary uses block gas limit / 2000. [src/ethereum/forks/amsterdam/block_access_lists.py#L859-L892](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L859-L892) | [src/Nethermind/Nethermind.Core/Eip7928Constants.cs#L22-L31](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Eip7928Constants.cs#L22-L31); [src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L177-L205](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L177-L205); [src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L533-L542](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L533-L542) | Strict greater-than rejects limit+1 while equality is allowed. Validation includes generated BALs on RLP import and attached BALs on replay; it is not limited to the initial engine precheck. Independent history cap remains C1. |
| All change indices ≤ n+1. [EIP completeness](https://eips.ethereum.org/EIPS/eip-7928#state-transition-function) | [src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L548-L581](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L548-L581) | Bounds apply to balance/nonce/code and every storage history; uint32 decoding alone is not treated as sufficient validation. |
| Parallel execution must verify account/read sets, not only written values. [EIP completeness](https://eips.ethereum.org/EIPS/eip-7928#state-transition-function) | [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.Validation.cs#L523-L546](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.Validation.cs#L523-L546); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.cs#L278-L306](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.cs#L278-L306); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.cs#L323-L340](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListValidationIndex.cs#L323-L340) | Final structure verification checks account sets and exact read coverage, with overflow detection. Early surplus-read budgeting is not the final completeness check. This defeats a suspected acceptance of unused read-only entries. |
| Parallel ordering / deterministic aggregation. [EIP ordering](https://eips.ethereum.org/EIPS/eip-7928#ordering-uniqueness-and-determinism) | [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.Validation.cs#L39-L81](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.Validation.cs#L39-L81); [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.TxProcessorPool.cs#L219-L246](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.TxProcessorPool.cs#L219-L246); [src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L48-L64](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/GeneratedAccountChanges.cs#L48-L64) | Worker results are gathered in transaction order, slices are merged once, and slot/read output is sorted. Scheduling order alone did not yield a differing BAL in the reviewed logic; no concurrency stress test was run. |
| SSTORE and SLOAD gas gates precede storage access. [EIP pre-state checks](https://eips.ethereum.org/EIPS/eip-7928#gas-validation-before-state-access) | [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Storage.cs#L550-L591](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Storage.cs#L550-L591); [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Storage.cs#L847-L878](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Storage.cs#L847-L878) | SSTORE checks both stipend and the applicable slot-access gas before Get; SLOAD checks the access charge before loading. OOG before the read cannot enter the storage recorder. |
| CALL delegation target accessed after its charge and before depth/balance failure. [EIP delegation](https://eips.ethereum.org/EIPS/eip-7928#eip-7702-delegation) | [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L175-L238](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L175-L238); [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L257-L285](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.Call.cs#L257-L285) | Value, memory and target-access gates precede code loading. Delegated target is explicitly recorded only after its own access charge; it is recorded before sender-balance/depth checks. A historical PR title suggesting otherwise is not the current source behavior. |
| EXTCODECOPY memory/copy/access charges before target load. [EIP pre-state table](https://eips.ethereum.org/EIPS/eip-7928#gas-validation-before-state-access) | [src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.CodeCopy.cs#L248-L285](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/Instructions/EvmInstructions.CodeCopy.cs#L248-L285) | Copy cost, account access and memory expansion must pass before GetCachedCodeInfo reads the address. |
| SYSTEM_ADDRESS synthetic sender suppression must not suppress reads by bytecode. [EIP scope](https://eips.ethereum.org/EIPS/eip-7928#scope-and-inclusion) | [src/Nethermind/Nethermind.Evm/TransactionProcessing/SystemTransactionProcessor.cs#L123-L140](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/TransactionProcessing/SystemTransactionProcessor.cs#L123-L140); [src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L319-L349](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L319-L349) | Suppression scopes wrap processor sender handling. The executing contract can still explicitly access and record the system account; the entire EVM invocation is not suppressed. |
| Revert drops changes but preserves accesses. [EIP exceptional halts](https://eips.ethereum.org/EIPS/eip-7928#edge-cases-normative) | [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L303-L365](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L303-L365); [src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L379-L394](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.State/TracedAccessWorldState.cs#L379-L394) | Journal restoration reverts balance/nonce/code/write entries. Accessed accounts stay present and reverted writes surface as storage reads; cached last-read state is invalidated. |

## 4. Strongest rejected leads and limits of the review

**Geth #35776 does not establish a Nethermind bug.** [Geth issue #35776](https://github.com/ethereum/go-ethereum/issues/35776) was open when read. Its report describes separate per-call BALs retaining a restored slot as a write at n+1. I traced Nethermind's shared processor lifetime and its preserved index-start storage/balance baselines, including the withdrawal-then-forwarded-credit shape. The corresponding Nethermind code is in the first three table rows. It removes the restored change before the single final merge. Public EELS [PR #3566](https://github.com/ethereum/execution-specs/pull/3566), closed, specifically documents same-index netting coverage and the earlier reference-spec correction. No new Nethermind candidate is inferred from Geth's issue.

**Storage-only legacy accounts are an explicit unresolved spec domain.** [Execution-specs issue #3635](https://github.com/ethereum/execution-specs/issues/3635), **open**, says the client teams left those semantics undefined until EIP-8253, with relevant tests skip-marked and producing no fixtures. [EELS #3508](https://github.com/ethereum/execution-specs/pull/3508), closed, changes reference behavior; [#3588](https://github.com/ethereum/execution-specs/pull/3588), closed, records a proposed BAL-specific extension and the deferred client-survey discussion. The pinned Amsterdam reference retains explicit clear-aware storage lookup ([src/ethereum/forks/amsterdam/state_tracker.py#L274-L314](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/state_tracker.py#L274-L314)) and creation clearing ([src/ethereum/forks/amsterdam/vm/interpreter.py#L339-L356](https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/vm/interpreter.py#L339-L356)). Those source rules and the public deferment must both be acknowledged. I do not certify parallel behavior for that deferred prestate, or promote it to an undisputed Amsterdam consensus candidate. The destroyed/recreated rule in the table is confined to ordinary initially empty parent storage. No undisclosed live-mainnet candidate details are supplied.

**239 Hive failures are not 239 consensus splits.** [Nethermind issue #15223](https://github.com/NethermindEth/nethermind/issues/15223), **open**, reports BAL-related error-reason mismatches: blocks remain INVALID. [PR #15249](https://github.com/NethermindEth/nethermind/pull/15249), **open/draft**, proposes a restricted sequential retry to recover the original transaction/system-contract error. At the review pin, [src/Nethermind/Nethermind.Consensus/Processing/BlockProcessor.cs#L96-L109](https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockProcessor.cs#L96-L109) only triggers its special retry for frame transactions; this is consistent with the still-open diagnostic report. EIP-7928 requires invalidity for malformed/mismatching BALs but does not itself require identical error text. I therefore classify the indexed report as a known diagnostic difference, not a new invalid-block acceptance or valid-block rejection candidate. I did not run the linked failures.

**Simulation is a separate API-spec question.** [execution-apis #868](https://github.com/ethereum/execution-apis/issues/868), closed when read, concerns Amsterdam simulation/header/log semantics, and explicitly distinguishes real-block agreement from underspecified simulated blocks. It is not evidence that canonical Nethermind BALs disagree with EIP-7928. Simulation behavior was not turned into a consensus candidate here.

**C1 disproof outcome.** The enforced old constant is still present at the requested head, with a directly matching open fix. Its present-gas-limit qualification substantially limits practical severity. The report retains it because it is an actual format/spec difference; it does not label it novel or currently exploitable.

## 5. Known-check and public test-results record

- Nethermind searches used the EIP number and both common names (BAL / block access list), without open/closed restrictions. Both broad number and long-name searches were fully paginated. Targeted storage, nonce, netting and limit searches were also inspected. C1's exact queries and disposition are above.
- [Execution-specs Test Release Tracker #3217](https://github.com/ethereum/execution-specs/issues/3217), **open**, tracks `tests@v21.0.0` and still has unchecked final cross-client sweep/ref-spec-pin items. [Tracker #3518](https://github.com/ethereum/execution-specs/issues/3518), **closed**, tracks `glamsterdam-devnet@v8.1.4`. These are release/coverage records, not proof every client passes the pinned current spec.
- [EELS releases](https://github.com/ethereum/execution-specs/releases) describes `tests@v21.0.1` as an Amsterdam coverage follow-up, including additional BAL parallel-execution, system-address and same-index tests. Nethermind's [#14596](https://github.com/NethermindEth/nethermind/pull/14596) and [#14602](https://github.com/NethermindEth/nethermind/pull/14602), both **closed**, describe regression coverage for malformed/canonical RLP and transaction-discard handling. [#14641](https://github.com/NethermindEth/nethermind/pull/14641), **closed**, describes the fixed system-address suppression issue. [#14646](https://github.com/NethermindEth/nethermind/pull/14646), **closed**, covers item-limit enforcement on replay/import paths. These are attributed public reports; none is presented as locally rerun validation.
- Requested source [hive.ethpandaops.io/glamsterdam/listing.jsonl](https://hive.ethpandaops.io/glamsterdam/listing.jsonl): direct public fetch answered **HTTP 403 Forbidden**; the web fetch also could not access it. No JSONL entries or current counters could be inspected. Consequently **Hive known-check is incomplete**, rather than “not found.”
- The already-indexed 239-case regression is corroborated by issue #15223 and PR #15249, including their linked [failing run](https://hive.ethpandaops.io/#/test/generic/1792405528-e4e4fb58da33adabed19ba33a85cb2f4). The assignment dates that indexed observation to 2026-10-26; I cannot independently date or certify that run from the inaccessible listing. PR #15249 also reports its own later comparative run; that remains a PR-author claim.

## 6. URLs and source access record

All linked file citations above refer to immutable source snapshots. The code **read** was the corresponding raw URL: replace `https://github.com/OWNER/REPO/blob/SHA/` with `https://raw.githubusercontent.com/OWNER/REPO/SHA/` and remove the line fragment. GitHub HTML was used only for issue/PR/release text, never as the client-code source.

Repository discovery used these public recursive trees:

- [NethermindEth/nethermind tree at d48833af88ec4224c86afadd1c596e8f619c406b](https://api.github.com/repos/NethermindEth/nethermind/git/trees/d48833af88ec4224c86afadd1c596e8f619c406b?recursive=1).
- [ethereum/execution-specs tree at 7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b](https://api.github.com/repos/ethereum/execution-specs/git/trees/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b?recursive=1).
- [ethereum/go-ethereum tree at 8817f99f92852f8ac53e596de6202dd9e3494065](https://api.github.com/repos/ethereum/go-ethereum/git/trees/8817f99f92852f8ac53e596de6202dd9e3494065?recursive=1).

The commit APIs in section 1, the source citations in sections 1–4, and the issue/PR/release/Hive URLs in sections 2, 4 and 5 form the read record. For reproducible search access, the machine-readable endpoints were `https://api.github.com/search/issues?q=<URL-encoded query>&per_page=100&sort=updated&page=<n>` and the issue bodies were read at `https://api.github.com/repos/OWNER/REPO/issues/NUMBER` (comments fetched for the main diagnostic/fix and release-tracker discussions). Search states describe the time of reading and may change later.

Additional targeted query strings inspected (no state restrictions):

- [repo:NethermindEth/nethermind BAL](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20BAL).
- [repo:NethermindEth/nethermind "same index"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22same%20index%22).
- [repo:NethermindEth/nethermind recreated](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20recreated).
- [repo:NethermindEth/nethermind "BAL" "storage" "clear"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22BAL%22%20%22storage%22%20%22clear%22).
- [repo:NethermindEth/nethermind "storage-only"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22storage-only%22).
- [repo:NethermindEth/nethermind "ClearStorage"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22ClearStorage%22).
- [repo:NethermindEth/nethermind "BAL" "nonce"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22BAL%22%20%22nonce%22).
- [repo:NethermindEth/nethermind "BAL" "netting"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22BAL%22%20%22netting%22).
- [repo:NethermindEth/nethermind "block access list" "limit"](https://github.com/search?type=issues&q=repo%3ANethermindEth/nethermind%20%22block%20access%20list%22%20%22limit%22).
- [repo:ethereum/execution-specs "Test Release Tracker"](https://github.com/search?type=issues&q=repo%3Aethereum/execution-specs%20%22Test%20Release%20Tracker%22).
- [repo:ethereum/execution-specs "3508"](https://github.com/search?type=issues&q=repo%3Aethereum/execution-specs%20%223508%22).

Review limitations: static reasoning only; no node access, no executable reproduction, no exhaustive race analysis, no test-result coverage inference from source test names, and no claim of a complete cross-client or cross-EIP audit beyond this assigned Nethermind/EIP-7928 item. The schedule/version baseline is supplied to make this item usable in the wider batch.
