# Nethermind: Amsterdam builder requests, Engine API, and factory review

Reviewed 2026-10-27. **No retained candidate** in the bounded paths below. This is a public-source, static conformance review, not a proof of correctness. No client was built or executed; no RPC, node, transaction submission, or network experiment was used. 

## Pins and scope

Heads were resolved once before review. “Newest” means that API observation. Nethermind source was read/verified through `raw.githubusercontent.com` at the pin; GitHub links below are citations. Nethermind labels shorten `src/Nethermind/Nethermind.`; link targets retain full paths. Labels give exact rule ranges within shared per-file anchors.

| Repository / branch queried | Pinned commit | Pin source |
|---|---|---|
| NethermindEth/nethermind / `master` | `d48833af88ec4224c86afadd1c596e8f619c406b` | [commit API](https://api.github.com/repos/NethermindEth/nethermind/commits/master) |
| ethereum/execution-specs / `forks/bogota` | `7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b` | [commit API](https://api.github.com/repos/ethereum/execution-specs/commits/forks/bogota) |
| ethereum/execution-apis / `main` | `3284ee80c3da3e516c53782dde75157cccf1ebdc` | [commit API](https://api.github.com/repos/ethereum/execution-apis/commits/main) |
| ethereum/go-ethereum / `master` | `8817f99f92852f8ac53e596de6202dd9e3494065` | [commit API](https://api.github.com/repos/ethereum/go-ethereum/commits/master) |
| ethereum/EIPs / `master` | `d4c575521d99ec881a444ab3af604e684b5f0743` | [commit API](https://api.github.com/repos/ethereum/EIPs/commits/master) |
| ethereum/consensus-specs / `master` | `8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2` | [commit API](https://api.github.com/repos/ethereum/consensus-specs/commits/master) |

The execution-apis `commits/master` endpoint returned HTTP 422. Repository metadata reports default branch `main`; its pinned file is authoritative here. The requested [raw master reference](https://raw.githubusercontent.com/ethereum/execution-apis/master/src/engine/amsterdam.md) was also read through the web tool. Execution-specs was pinned at `forks/bogota`; the comparison uses its Amsterdam implementation.

Scope: Nethermind EIP-8282, the three named Amsterdam Engine methods, EIP-7843/7928 fields, and EIP-7997 activation. Other EIPs are inventoried, not audited. Geth is a control, not normative authority.

## Scheduled EIPs and specification versions

The meta EIP's **Scheduled for Inclusion** section contains the following 18 EIPs. Its networking and informational sections are separate; they are not silently added to that list. Mainnet activation is blank in the meta EIP, so the Amsterdam-specific behavior reviewed here is not reported as live mainnet behavior. Source: [EIPS/eip-7773.md#L22-L82][S1].

Current EIP text is versioned by the EIPs repository pin above, not a semantic version. The table also records the potentially older EIP revisions targeted by EL test metadata or Gloas.

| EIP | Current title / status at EIPs pin | Reference revision recorded by EL tests or Gloas |
|---|---|---|
| [EIP-2780](https://eips.ethereum.org/EIPS/eip-2780) | Resource-Based Intrinsic Transaction Gas; Last Call | EL `7243c92ba812437c64bae9fc6524ee269b29daa9` [metadata][S2] |
| [EIP-7688](https://eips.ethereum.org/EIPS/eip-7688) | Forward Compatible Consensus Data Structures; Review | CL `f2e6d7fb01194d590e16fcdcae8061d06cf1a7f1` [metadata][S3] |
| [EIP-7708](https://eips.ethereum.org/EIPS/eip-7708) | ETH Transfers Emit a Log; Last Call | EL `f7230c46a743313957d8f38a159bda934cc735b2` [metadata][S4] |
| [EIP-7732](https://eips.ethereum.org/EIPS/eip-7732) | Enshrined Proposer-Builder Separation; Last Call | CL `c36a2e58a4496ed21bef6b1c97505b03fd159f0a` [metadata][S3] |
| [EIP-7778](https://eips.ethereum.org/EIPS/eip-7778) | Block Gas Accounting without Refunds; Last Call | EL `4897aec97160c72d2080acf928b132f2efc1a886` [metadata][S6] |
| [EIP-7843](https://eips.ethereum.org/EIPS/eip-7843) | SLOTNUM Opcode; Last Call | EL `c3bfd4ba41cf0fcbfe8c404f33ba89f5174971e0` [metadata][S7] |
| [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928) | Block-Level Access Lists; Last Call | EL `f834f0004aa5110a5f1ac0d6b80e3dc4b842d040` [metadata][S8] |
| [EIP-7954](https://eips.ethereum.org/EIPS/eip-7954) | Increase Maximum Contract Size; Last Call | EL `2e62d6a88aa596e4efbf3592cda7706f8a51dac3` [metadata][S9] |
| [EIP-7976](https://eips.ethereum.org/EIPS/eip-7976) | Increase Calldata Floor Cost; Last Call | EL `c998ef94eb16a6af8a9b8e2084f947b17ea14865` [metadata][S10] |
| [EIP-7981](https://eips.ethereum.org/EIPS/eip-7981) | Increase Access List Cost; Last Call | EL `8da3cf91d4bc688c43cc25f2f03b7c86c7bbc257` [metadata][S11] |
| [EIP-7997](https://eips.ethereum.org/EIPS/eip-7997) | Deterministic Factory Contract; Last Call | EL `192193facea01dfb8b87ad59d67e8385bf9304b1` [metadata][S12] |
| [EIP-8024](https://eips.ethereum.org/EIPS/eip-8024) | Backward Compatible SWAPN, DUPN, EXCHANGE; Last Call | EL `34b49095ca5f7343045da279f04e7ecd1e451393` [metadata][S13] |
| [EIP-8037](https://eips.ethereum.org/EIPS/eip-8037) | State Creation Gas Cost Increase; Last Call | EL `19bdfb4f97064dfbeb3d41d31efac211265b49a6` [metadata][S14] |
| [EIP-8038](https://eips.ethereum.org/EIPS/eip-8038) | State-Access Gas Cost Update; Last Call | EL `f83531466a3862853424a81d000727b3043ef2cc` [metadata][S15] |
| [EIP-8045](https://eips.ethereum.org/EIPS/eip-8045) | Exclude Slashed Validators from Proposing; Last Call | CL `414a8404198c5afaa3cfed10a385a9aae1dfaae3` [metadata][S3] |
| [EIP-8061](https://eips.ethereum.org/EIPS/eip-8061) | Increase Exit and Consolidation Churn; Last Call | CL `01f15c37c64114c478cb1136e0a6966084e4db14` [metadata][S3] |
| [EIP-8246](https://eips.ethereum.org/EIPS/eip-8246) | Remove SELFDESTRUCT Burn; Last Call | EL `8be64cf6a01350938b93332cf0062ab7a3166f23` [metadata][S18] |
| [EIP-8282](https://eips.ethereum.org/EIPS/eip-8282) | Builder Execution Requests; Last Call | EL `45e570a246207d5b1fb095e259e3f98bb0922639` [metadata][S19] |

EL fork membership is corroborated by [amsterdam/__init__.py#L1-L40][S20]. Gloas separately references EIP-8070 and EIP-8261, which the meta EIP places under networking/informational; see [specs/gloas/beacon-chain.md#L163-L186][S3]. Gloas targets EIP-8282 revision `de4c6f02c7bec4686762c55f8ab6abcf97a77d7d`, whereas EL test metadata targets `45e570a246207d5b1fb095e259e3f98bb0922639`. The current builder type allocation and nonempty request ordering agree across the code actually compared: [specs/gloas/beacon-chain.md#L587-L592][S3] and [specs/gloas/beacon-chain.md#L2123-L2141][S3].

## Candidates

**None retained.** No concrete divergent Amsterdam result survived review; the strongest rejected hypotheses are below.

## Rules checked and found consistent

Findings apply to the stated rules, not the entire BAL validator.

| Rule / boundary | Spec source | Nethermind evidence and result |
|---|---|---|
| Builder deposit/exit addresses and type bytes 03/04 | [EIP-8282 constants](https://eips.ethereum.org/EIPS/eip-8282#constants); [amsterdam/fork.py#L116-L126][S24] | [Core/Eip8282Constants.cs#L18-L22][S25]; [Core/ExecutionRequest/ExecutionRequest.cs#L9-L16][S26]. Both addresses and allocation match. |
| Calls occur after ordinary execution, withdrawals, and types 00/01/02 | [EIP-8282 system call](https://eips.ethereum.org/EIPS/eip-8282#system-call); [amsterdam/fork.py#L870-L921][S24] | [Consensus/Processing/BlockProcessor.cs#L295-L302][S28]; [Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L151-L187][S29]. Deposit then exit; no type-order reversal. |
| System origin, empty calldata, zero value | [EIP-8282 system call](https://eips.ethereum.org/EIPS/eip-8282#system-call); [amsterdam/fork.py#L748-L769][S24] | [Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L68-L86][S29]. Both builder templates target the correct contract using SystemUser and empty data. |
| 30,000,000 execution gas, separate state reservoir, outside ordinary block gas charging | [EIP-8282 system call](https://eips.ethereum.org/EIPS/eip-8282#system-call); [amsterdam/fork.py#L750-L766][S24] | [Core/Eip8037Constants.cs#L19-L22][S33]; [Evm/GasPolicy/EthereumGasPolicy.cs#L54-L77][S34]; [Evm/TransactionProcessing/SystemTransactionProcessor.cs#L77-L134][S35]. Combined limit is split before EVM execution; gas buying, nonce increment and fee payment are bypassed for system execution. |
| Empty predeploy code and failed dequeue invalidate a block | [EIP-8282 deployment](https://eips.ethereum.org/EIPS/eip-8282#deployment); [amsterdam/fork.py#L689-L719][S24] | [Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L299-L311][S29]. HasCode is checked and a failed call throws InvalidBlockException; neither is silently treated as no requests. |
| Only nonempty request data included; hash of type-prefixed groups in ascending order | [EIP-7685 requests_hash](https://eips.ethereum.org/EIPS/eip-7685#block-header); [amsterdam/fork.py#L899-L921][S24]; [amsterdam/requests.py#L307-L326][S39] | [Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L313-L321][S29]; [Core/ExecutionRequest/ExecutionRequestExtensions.cs#L33-L49][S41]. Empty output omitted before prefixing; hash helper also skips length ≤1 groups. Empty list yields SHA256 of empty concatenation. |
| Execution recomputes requests commitment; does not trust the CL-supplied list as execution output | [amsterdam/fork.py#L330-L355][S24] | [Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L184-L186][S29]; [Consensus/Validators/BlockValidator.cs#L264-L269][S44]. Processed header commitment compared with suggested header commitment. |
| newPayloadV5 exposes fourth executionRequests parameter and rejects null, empty/type-only, duplicate, descending groups | [src/engine/amsterdam.md#L100-L127][S45] (inherits Prague); [Prague](https://raw.githubusercontent.com/ethereum/execution-apis/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/prague.md) | [Merge.Plugin/EngineRpcModule.Amsterdam.cs#L25-L29][S46]; [Merge.Plugin/Data/IExecutionPayloadParams.cs#L48-L79][S47]. Invalid parameter classification maps to -32602 in [Merge.Plugin/EngineRpcModule.Paris.cs#L119-L125][S48]. Unknown types are not rejected here just by a hardcoded maximum; execution commitment is authoritative. |
| Missing BAL or slotNumber rejected as parameters; malformed BAL rejected as INVALID | [src/engine/amsterdam.md#L45-L67][S45]; [src/engine/amsterdam.md#L107-L129][S45] | [Merge.Plugin/Data/IExecutionPayloadParams.cs#L259-L275][S47]; [Merge.Plugin/Data/IExecutionPayloadParams.cs#L157-L179][S47]; [Merge.Plugin/EngineRpcModule.Paris.cs#L119-L125][S48]. Envelope must be one complete RLP list. Decode error returns Invalid status, with null latestValidHash in this path. |
| BAL header commitment is Keccak of supplied RLP bytes, not SSZ root or reconstructed RLP | [EIP-7928 header commitment](https://eips.ethereum.org/EIPS/eip-7928#block-header-commitment); [amsterdam/blocks.py#L251-L266][S54] | [Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L26-L50][S55]; [Merge.Plugin/Data/ExecutionPayloadV4.cs#L36-L59][S56]. Wire slice is hashed and assigned to header; raw bytes retained on block. |
| newPayloadV5 timestamp gate and -38005 outside the fork window | [src/engine/amsterdam.md#L107-L129][S45] | [Merge.Plugin/Data/ExecutionPayloadV4.cs#L146-L154][S56]; [Merge.Plugin/EngineRpcModule.Paris.cs#L101-L112][S48]. Release spec decides Amsterdam activation; unsupported fork is distinct from structurally unbound fields. Bogota selects the later newPayload version rather than blindly accepting V5 forever. |
| getPayloadV6 output includes V4 executionPayload, blobsBundle, executionRequests, value and builder override | [src/engine/amsterdam.md#L130-L156][S45] | [Merge.Plugin/Handlers/GetPayloadV6Handler.cs#L18-L27][S61]; [Merge.Plugin/Data/GetPayloadV6Result.cs#L9-L13][S62]; [Merge.Plugin/Data/ExecutionPayloadV4.cs#L23-L28][S56]. ExecutionRequests comes from produced block; raw BAL and slot copied. |
| getPayloadV6 pre-Amsterdam built payload rejected, unknown ID remains unknown | [src/engine/amsterdam.md#L139-L156][S45] | [Merge.Plugin/Handlers/GetPayloadV6Handler.cs#L24-L27][S61]; [Merge.Plugin/Handlers/GetPayloadHandlerBase.cs#L29-L54][S66]. Timestamp-specific release spec checked after payload lookup, failure maps to UnsupportedFork. |
| PayloadAttributesV4 requires slotNumber and targetGasLimit; slot is CL-supplied | [src/engine/amsterdam.md#L74-L83][S45]; [EIP-7843 Engine changes](https://eips.ethereum.org/EIPS/eip-7843#engine-api-changes) | [Consensus/Producers/PayloadAttributes.cs#L298-L306][S68]; [Consensus/Producers/PayloadAttributes.cs#L316-L333][S68]; [Consensus/Producers/BlockProducerBase.cs#L209-L224][S70]. Both fields affect attributes version; builder uses supplied slot and passes target gas limit to calculator. |
| forkchoiceUpdatedV4 attributes errors versus fork mismatch errors | [src/engine/amsterdam.md#L203-L228][S45] | [Consensus/Producers/PayloadAttributes.cs#L224-L289][S68]; [Merge.Plugin/Handlers/ForkchoiceUpdatedHandler.cs#L373-L383][S73]. Missing required V4 fields classify InvalidPayloadAttributes; structurally V4 attributes at the preceding timestamp window classify UnsupportedFork. |
| custodyColumns third positional parameter, 16-byte DATA or null; update independent of forkchoice failure | [src/engine/amsterdam.md#L207-L242][S45] | [Merge.Plugin/IEngineRpcModule.Amsterdam.cs#L39-L42][S75]; [Merge.Plugin/EngineRpcModule.Amsterdam.cs#L39-L42][S46]; [Merge.Plugin/EngineRpcModule.cs#L207-L222][S77]. Explicit wire converter, fixed bit length validation, null leaves tracker untouched, update runs before forkchoice and runtime update failures are caught. |
| EIP-7997 no fork-boundary factory state change, existence check or automatic factory BAL read | [EIP-7997 specification](https://eips.ethereum.org/EIPS/eip-7997#specification) | [Consensus/Processing/BlockProcessor.cs#L227-L237][S28]; [Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L24-L64][S79]; [Specs/Forks/25_Amsterdam.cs#L9-L32][S80]. No factory hook in activation/pre-execution path. Source search for Eip7997, canonical factory address and deterministic-factory names found no C# deployment/check implementation. An ordinary transaction touching the factory can of course create a BAL entry; that is distinct from an unconditional activation read. |

## Geth controls and attempts to disprove apparent bugs

- **Addresses, type order and failure handling:** [core/state_processor.go#L457-L510][S81] uses the same builder types, target addresses through params, mandatory nonempty code, error propagation, and omission of empty output. The Nethermind control flow above agrees. This defeats an address/type mix-up or silent-empty-on-failure hypothesis.
- **Raw BAL re-encoding hypothesis:** Nethermind decoder hashes its consumed wire slice before constructing the read-only object, and payload reconstruction uses `WireHash`. A malformed RLP envelope is rejected before header handling. Thus observing a decoded object in the pipeline does not establish a canonicalization/hash bug. The cited decoder and payload code disprove that proposed mechanism.
- **System-call gas hypothesis:** the apparent excess over 30 million is the EIP-8037 state allowance. Subtracting the reservoir in the cited gas policy leaves exactly 30 million execution gas when Amsterdam is active. This is not evidence of incorrect block gas or dequeue failure handling. This review does not exhaustively audit the shared two-dimensional gas implementation.
- **Fork gates:** [eth/catalyst/api.go#L866-L895][S82] checks required fields and allowed timestamp windows for V5; [eth/catalyst/api.go#L510-L543][S82] gates V6 retrieval. Geth explicitly lists later BPO/Bogota windows. Consequently “supports a successor fork” alone is not a demonstrated Amsterdam bug; successor specifications can retain methods. Nethermind V5 rejects Bogota whereas its V6 retrieval continues under BAL-enabled specs; the successor protocol is outside this item.
- **custodyColumns omission hypothesis (the Erigon #22896 comparison cue):** [eth/catalyst/api.go#L221-L243][S82] also accepts and applies custody. Nethermind explicitly exposes the third argument and calls its tracker before forkchoice. Presence in both interface and dispatch disproves an omitted-argument candidate. Sampler scheduling, network announcements and delayed pruning were not independently audited.
- **Factory transition hypothesis:** [Nethermind PR #12714](https://github.com/NethermindEth/nethermind/pull/12714) is **closed**, not evidence of code present at this pin. Its proposed activation hook is absent in the reviewed processing path. The [devnet-8 tracker #3167](https://github.com/ethereum/execution-specs/issues/3167) explicitly strikes out the factory activation/read proposal. Current EIP-7997 prohibits the boundary existence check. No candidate is retained from superseded proposals. The review did not query chain state or certify deployment contents on any network.

EIP-8282 contract fee arithmetic, drain caps and record endianness are enforced by deployed bytecode; the reviewed client forwards dequeue output. Deployed bytecode identity, BLS authorization and CL processing were not audited.

## Known checks and public-test evidence

No retained candidate needs a known/not-found label. This search record is not exhaustive. GitHub issue search includes **both issues and PRs, open and closed**, when no `is:` restriction is supplied. Numeric queries can also match unrelated issue numbers.

Search source: `https://api.github.com/search/issues?q=<URL-encoded query>&per_page=100`. Queries below record the URLs read or attempted via that template.

| Query (GitHub issue search) | Observed result |
|---|---|
| `repo:NethermindEth/nethermind 8282` | 38 hits |
| `repo:NethermindEth/nethermind "builder requests"` | 15 hits |
| `repo:NethermindEth/nethermind "builder deposit"` | 17 hits |
| `repo:NethermindEth/nethermind "builder exit"` | 12 hits |
| `repo:NethermindEth/nethermind 7997` | 4 hits |
| `repo:NethermindEth/nethermind "factory"` | 541 hits; first 100 of 541 only, not exhaustive |
| `repo:NethermindEth/nethermind 7843` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:NethermindEth/nethermind 7928` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:NethermindEth/nethermind "newPayloadV5"` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:NethermindEth/nethermind "getPayloadV6"` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:NethermindEth/nethermind "forkchoiceUpdatedV4"` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:NethermindEth/nethermind "custodyColumns"` | Not completed: HTTP Error 403: rate limit exceeded |
| `repo:ethereum/execution-specs "Test Release Tracker"` | Not completed: HTTP Error 403: rate limit exceeded |

Relevant historical matches read in the search results:

| Record | State observed | Interpretation at this review pin |
|---|---|---|
| [#12478, align EIP-8282 predeploy addresses](https://github.com/NethermindEth/nethermind/pull/12478) | closed | Historical address issue is known; current constants match the EIP, so not a new candidate. |
| [#12714, install factory on activation](https://github.com/NethermindEth/nethermind/pull/12714) | closed, proposal not adopted in reviewed path | Historical proposed spec difference, not a current candidate. |
| [#15223, parallel BAL mismatch instead of transaction error](https://github.com/NethermindEth/nethermind/issues/15223); [#15249, retry sequentially](https://github.com/NethermindEth/nethermind/pull/15249) | both open | Related Amsterdam regression is already publicly tracked. Not independently reproduced or established here; not repackaged as a new builder-request finding. |

Web searches also used `site:github.com/NethermindEth/nethermind` with `7843`, `forkchoiceUpdatedV4`, `custodyColumns`, `"newPayloadV5" "fork"`, `getPayloadV6`, `"custody" "forkchoice"`, and `"7928" "Engine"`. GitHub API search returned **403: rate limit exceeded** after six completed queries. The remaining checks are **incomplete**, not “not found.”

Public test sources read:

- [Test Release Tracker #3147, devnet 7.2.0](https://github.com/ethereum/execution-specs/issues/3147), **closed**: tracks final EIP-8282 contract/address changes and malformed/missing BAL coverage. This establishes historical coverage, not Nethermind's result at this pin.
- [Tracker #3167, devnet 8.0.0](https://github.com/ethereum/execution-specs/issues/3167), **closed**: records withdrawal of the factory activation/BAL proposal and a factory-absent-at-fork test.
- [Tracker #3217, tests@v21.0.0](https://github.com/ethereum/execution-specs/issues/3217): read current tracker text, including builder dequeue/BAL/gas-exhaustion/transition work and factory boundary cases. It links implementation and coverage work; no claim is made here that its checkboxes certify the pinned Nethermind build. Tracker state was not independently extracted reliably in this review.
- [Execution-specs releases](https://github.com/ethereum/execution-specs/releases): v21.0.2 is a follow-up to v21.0.1 and advertises Amsterdam invalid-transaction BAL fixture updates. This was used only as release context, not as a passing-client result.
- [Hive Glamsterdam listing](https://hive.ethpandaops.io/glamsterdam/listing.jsonl): direct public HTTP retrieval returned **403 Forbidden**; web retrieval also failed. No listing content or test result was available. **Hive comparison incomplete. No passing or failing Nethermind suite is invented.**

## URLs read and limits

Code/spec citations below are pinned. Nethermind source reads used equivalent raw URLs: `raw.githubusercontent.com/REPO/SHA/PATH`. Other URLs read, including failures, appear inline. No private sources or node experiments were used.

Required EIP references: [8282](https://eips.ethereum.org/EIPS/eip-8282), [7843](https://eips.ethereum.org/EIPS/eip-7843), [7928](https://eips.ethereum.org/EIPS/eip-7928), [7997](https://eips.ethereum.org/EIPS/eip-7997). No mainnet-active vulnerability is alleged. Unavailable test/issue data limits this conclusion to no strong candidate established.

[S1]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L22-L82
[S2]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip2780_reduce_intrinsic_tx_gas/spec.py#L14-L17
[S3]: https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L163-L2141
[S4]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7708_eth_transfer_logs/spec.py#L14-L18
[S6]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7778_block_gas_accounting_without_refunds/spec.py#L12-L16
[S7]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7843_slotnum/spec.py#L14-L17
[S8]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7928_block_level_access_lists/spec.py#L14-L17
[S9]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7954_increase_max_contract_size/spec.py#L14-L17
[S10]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7976_increase_calldata_floor_cost/spec.py#L12-L16
[S11]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7981_increase_access_list_cost/spec.py#L12-L16
[S12]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7997_deterministic_factory_contract/spec.py#L16-L20
[S13]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8024_dupn_swapn_exchange/spec.py#L15-L19
[S14]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8037_state_creation_gas_cost_increase/spec.py#L23-L27
[S15]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8038_state_access_gas_cost_increase/spec.py#L12-L16
[S18]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8246_selfdestruct_no_burn/spec.py#L14-L17
[S19]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8282_builder_execution_requests/spec.py#L18-L22
[S20]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/__init__.py#L1-L40
[S24]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L116-L921
[S25]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Eip8282Constants.cs#L18-L22
[S26]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/ExecutionRequest/ExecutionRequest.cs#L9-L16
[S28]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockProcessor.cs#L227-L302
[S29]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/ExecutionRequests/ExecutionRequestsProcessor.cs#L68-L323
[S33]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/Eip8037Constants.cs#L19-L22
[S34]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/GasPolicy/EthereumGasPolicy.cs#L54-L77
[S35]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Evm/TransactionProcessing/SystemTransactionProcessor.cs#L77-L134
[S39]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/requests.py#L307-L326
[S41]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/ExecutionRequest/ExecutionRequestExtensions.cs#L33-L49
[S44]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Validators/BlockValidator.cs#L264-L269
[S45]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L45-L242
[S46]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Amsterdam.cs#L25-L42
[S47]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Data/IExecutionPayloadParams.cs#L48-L275
[S48]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Paris.cs#L101-L125
[S54]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/blocks.py#L251-L266
[S55]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Serialization.Rlp/Eip7928/BlockAccessListDecoder.cs#L26-L50
[S56]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Data/ExecutionPayloadV4.cs#L23-L154
[S61]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Handlers/GetPayloadV6Handler.cs#L18-L27
[S62]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Data/GetPayloadV6Result.cs#L9-L13
[S66]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Handlers/GetPayloadHandlerBase.cs#L29-L54
[S68]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Producers/PayloadAttributes.cs#L224-L333
[S70]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Producers/BlockProducerBase.cs#L209-L224
[S73]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/Handlers/ForkchoiceUpdatedHandler.cs#L373-L383
[S75]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/IEngineRpcModule.Amsterdam.cs#L39-L42
[S77]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.cs#L207-L222
[S79]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L24-L64
[S80]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Specs/Forks/25_Amsterdam.cs#L9-L32
[S81]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L457-L510
[S82]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L221-L895
