# Geth Amsterdam public-source conformance review

Reviewed 2026-10-28. **Two retained differences:** a known Engine-spec/implementation disagreement over omitted `targetGasLimit`, and a known BAL netting defect demonstrable with substituted system-contract code. No new canonical-predeploy consensus bug was established. These are static source-review conclusions, not locally reproduced client failures. No node or RPC was contacted.

## Pins and specification versions

| Source | Branch and pinned revision | Public pin endpoint |
|---|---|---|
| Geth | `master` **`8817f99f92852f8ac53e596de6202dd9e3494065`**, commit time 2026-10-27 03:32:47 UTC | [commits/master](https://api.github.com/repos/ethereum/go-ethereum/commits/master) |
| Execution specification / tests (EELS) | default `forks/bogota` **`7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b`**, 2026-10-27 17:40:55 UTC; review uses its **Amsterdam** directory | [commits/forks/bogota](https://api.github.com/repos/ethereum/execution-specs/commits/forks/bogota) |
| Nethermind | `master` **`d48833af88ec4224c86afadd1c596e8f619c406b`**, 2026-10-27 12:00:20 UTC | [commits/master](https://api.github.com/repos/NethermindEth/nethermind/commits/master) |
| Engine API | default `main` **`3284ee80c3da3e516c53782dde75157cccf1ebdc`** | [commits/main](https://api.github.com/repos/ethereum/execution-apis/commits/main) |
| EIPs | `master` **`d4c575521d99ec881a444ab3af604e684b5f0743`**, 2026-10-27 16:04:29 UTC | [commits/master](https://api.github.com/repos/ethereum/EIPs/commits/master) |
| Consensus specifications | `master` **`8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2`**, 2026-10-27 16:28:12 UTC | [commits/master](https://api.github.com/repos/ethereum/consensus-specs/commits/master) |

The requested [execution-apis master endpoint](https://api.github.com/repos/ethereum/execution-apis/commits/master) returned HTTP 422. Its [raw master Amsterdam document](https://raw.githubusercontent.com/ethereum/execution-apis/master/src/engine/amsterdam.md) was **byte-identical** to pinned main (SHA-256 `43fadd7a8bacab0cc906658599650ee7d14b2cb4717912718a81a8475937fcc7`). Geth code was read as raw files, not GitHub HTML; blob links below cite immutable lines.

[EIP-7773](https://eips.ethereum.org/EIPS/eip-7773), pinned as [EIPS/eip-7773.md#L21-L55][meta], schedules these 18 EIPs: **2780, 7688, 7708, 7732, 7778, 7843, 7928, 7954, 7976, 7981, 7997, 8024, 8037, 8038, 8045, 8061, 8246, 8282**. Each current text version is `EIPS/eip-<number>.md` at the EIPs pin above. The meta EIP separately lists networking EIPs **7975, 8070, 8136, 8159, 8189**, and informational EIPs **7904, 8261**; these are not silently added to its scheduled-core list.

Cross-check: [src/ethereum/forks/amsterdam/__init__.py#L7-L20][amlist] lists the 14 EL proposals, including all four assigned here. [specs/gloas/beacon-chain.md#L165-L182][gloaslist] references the CL proposals and the shared SLOTNUM, sparse-blobpool, gas-schedule and builder-request specifications. Implementation review is limited to this assigned Geth item.

The four scoped published texts are [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), each `EIPS/eip-N.md` at the EIPs pin. Their headers are **Last Call**, deadline **2026-11-01**. EELS tests separately record these historical reference versions:

| EIP | EIPs reference hash recorded in pinned EELS tests | Source |
|---|---|---|
| 8282 | `45e570a246207d5b1fb095e259e3f98bb0922639` | [tests/amsterdam/eip8282_builder_execution_requests/spec.py#L18-L20][ref8282] |
| 7843 | `c3bfd4ba41cf0fcbfe8c404f33ba89f5174971e0` | [tests/amsterdam/eip7843_slotnum/spec.py#L14-L16][ref7843] |
| 7928 | `f834f0004aa5110a5f1ac0d6b80e3dc4b842d040` | [tests/amsterdam/eip7928_block_level_access_lists/spec.py#L14-L16][ref7928] |
| 7997 | `192193facea01dfb8b87ad59d67e8385bf9304b1` | [tests/amsterdam/eip7997_deterministic_factory_contract/spec.py#L16-L18][ref7997] |

The Gloas reference for 8282 is instead `de4c6f02c7bec4686762c55f8ab6abcf97a77d7d` (linked Gloas lines above). These references are provenance, not proof of coverage of later edits. Judgments use current pinned executable Amsterdam and Engine specifications.

**Mainnet applicability gate:** the current meta EIP has no mainnet activation ([EIPS/eip-7773.md#L62-L70][activation]), and [params/chainspecs/mainnet.json#L1-L51][mainnet] contains no Amsterdam activation. Both retained differences depend on Amsterdam features. No detailed finding about logic already active on Ethereum mainnet is included.

## Candidate 1 — missing targetGasLimit accepted by FCU V4

**1. Spec, verbatim.** [src/engine/amsterdam.md#L81-L91][aattrs] defines:

> - `targetGasLimit`: `QUANTITY`, 64 Bits - target value for the `gasLimit` field of the new payload

[src/engine/amsterdam.md#L222-L228][afcu] requires:

> `payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure, return `-38003: Invalid payload attributes` on failure.

**2. Geth, quoted at the pin.** [eth/catalyst/api.go#L223-L243][gfcuv4] checks withdrawals, root and slot, then fork time, but not `TargetGasLimit`:

```go
case params.SlotNumber == nil:
    return engine.STATUS_INVALID, attributesErr("missing slot number")
case !api.checkFork(params.Timestamp, forks.Amsterdam, forks.BPO3, forks.BPO4, forks.BPO5, forks.Bogota):
    return engine.STATUS_INVALID, unsupportedForkErr("fcuV4 must only be called for amsterdam payloads")
```

[beacon/engine/pa_codec.go#L39-L77][padec] permits the absent pointer; [eth/catalyst/api.go#L388-L411][buildargs] passes it to the builder. [miner/worker.go#L290-L300][gasfallback] falls back:

```go
gasCeil := miner.config.GasCeil
if miner.chainConfig.IsAmsterdam(number, timestamp) && genParams.targetGasLimit != nil {
    gasCeil = *genParams.targetGasLimit
}
```

**3. Trigger/result, in words.** A synchronized Geth receives FCU V4 for a valid known head and future Amsterdam timestamp. Attributes contain all other required fields but omit `targetGasLimit`, or set it null. Geth can return a build ID and steer toward its configured ceiling; the pinned spec requires invalid payload attributes. The resulting block need not be consensus-invalid.

**4. Nethermind.** [src/Nethermind/Nethermind.Consensus/Producers/PayloadAttributes.cs#L281-L308][nattrs] contains:

```csharp
>= PayloadAttributesVersions.V4 when TargetGasLimit is null => $"{nameof(TargetGasLimit)} must be provided",
```

The enclosing validator returns `InvalidPayloadAttributes`; [the same file#L316-L333][nversion] identifies slot-bearing attributes as V4 and expects V4 for Amsterdam. **Agrees with the pinned spec.**

**5. Confidence / disproof.** **High** for the source difference, **medium** that Geth rather than the spec should change. Decoder and builder checks do not reject the missing field. However, [#35514](https://github.com/ethereum/go-ethereum/pull/35514), **closed/merged**, deliberately made it optional for devnet 8. [#35353](https://github.com/ethereum/go-ethereum/pull/35353), **closed/unmerged**, earlier proposed requiring it. This is an intentional implementation/spec disagreement. Supplied targets are honored; a target does not bypass the parent gas-limit adjustment.

**6. Severity.** **Cosmetic**, meaning Engine input-validation incompatibility under the prescribed categories, not wrong gas charges/fees or invalid-block acceptance.

**Known-check: known** via #35514 and #35353. EIP/name searches: `7843`, `SLOTNUM`, `7928`, `"block access list"`, plus `"targetGasLimit"` and `"forkchoiceUpdatedV4"`, all scoped to Geth and both issue/PR states. No additional omission report found; Hive unavailable.

## Candidate 2 — final-index BAL merges retain zero-net changes

**1. Spec, verbatim.** [EIP-7928 recording semantics](https://eips.ethereum.org/EIPS/eip-7928#recording-semantics-by-change-type), pinned [EIPS/eip-7928.md#L196-L235][e7928net], compares writes with the value before the index. [src/ethereum/forks/amsterdam/block_access_lists.py#L765-L824][snet] implements:

```python
pre_balance = pre_account.balance if pre_account else U256(0)
post_balance = post_account.balance if post_account else U256(0)
if pre_balance != post_balance:
    add_balance_change(builder, address, idx, post_balance)
else:
    remove_balance_change(builder, address, idx)
```

It similarly calls `remove_storage_write(builder, address, u256_slot, idx)` for restored slots. [The same file#L727-L762][sbaseline] caches index-start values; [fork.py#L830-L844][sfinalindex] assigns withdrawals and request calls the same final index.

**2. Geth, quoted at the pin.** [core/state_processor.go#L194-L229][gpost] merges separate withdrawals/request scopes. The request helper [core/state_processor.go#L469-L510][gcall] starts a fresh scope at the same index:

```go
evm.StateDB.Prepare(evm.GetRules(), common.Address{}, common.Address{}, nil, nil, nil)
evm.StateDB.SetTxContext(common.Hash{}, 0, blockAccessIndex)
```

After the call, `bal := evm.StateDB.Finalise(evm.GetRules())`. [core/state/statedb.go#L825-L854][grecord] compares metadata with this individual scope's journal pre-value. [core/types/bal/bal.go#L158-L195][gmerge] only overwrites collisions:

```go
existing[txIdx] = value
```

```go
for txIdx, balance := range otherAcc.BalanceChanges {
    acc.BalanceChanges[txIdx] = balance
}
```

[core/block_validator.go#L181-L195][gvalidatebal] rejects a different computed BAL commitment.

**3. Trigger/result, in words.** In an Amsterdam **test prestate with substituted request-contract code**, a withdrawal credits a request predeploy whose system call forwards the credit away. The balance returns to its pre-final-index value. Geth retains a balance-change entry; EELS omits it but retains the address. The published balance fixture includes the two builder predeploys. A companion fixture has two request calls change and restore a shared slot: Geth retains a write instead of a read. Identical final state/requests can thus give different BAL hashes and block validity.

The storage fixture [tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_cross_index.py#L536-L650][sbalstoragefixture] explicitly substitutes old request-contract code. [#35894](https://github.com/ethereum/go-ethereum/issues/35894) documents the balance fixture's builder recipients. **No canonical Ethereum-predeploy trigger was established:** the specified queue runtimes do not forward balances or call each other, and users cannot simply replace their code. This is arbitrary-prestate conformance evidence, not a demonstrated canonical-network exploit.

**4. Nethermind.** [src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L72-L91][npost] shares the post-execution world state. [src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L132][nnetbalance] preserves the baseline:

```csharp
UInt256 preTxBalance = accountChanges.PreTxBalance ??= before;
accountChanges.BalanceChange = preTxBalance != after
    ? new BalanceChange(Index, after)
    : null;
```

[The same file#L212-L241][nnetstorage] removes restored storage changes and adds reads. **Agrees with EELS**, unlike Geth; not locally executed.

**5. Confidence / disproof.** **High** for the source/fixture difference; **low** for canonical-state reachability. Withdrawals already precede calls, so the old ordering bug is not this defect. Merge still only overwrites. [tests/block_test.go#L90-L96][gskip] skips both fixtures with `TODO: these require netting the BAL changes over a whole block access index`. [#35843](https://github.com/ethereum/go-ethereum/pull/35843) proposes reconciliation but is **open/unmerged**. The canonical-runtime reachability check defeats an unqualified Ethereum consensus-split claim, not the executable-spec difference.

**6. Severity.** **Valid block rejected**, conditional on the arbitrary-prestate fixture model; building also produces a different BAL encoding. Not an established canonical-network consensus split. This defect depends on Amsterdam BAL processing, not active mainnet behavior.

**Known-check: known.** [#35776](https://github.com/ethereum/go-ethereum/issues/35776), **open**, covers storage; [#35894](https://github.com/ethereum/go-ethereum/issues/35894), **closed**, covers balances and limits reachability; [#35843](https://github.com/ethereum/go-ethereum/pull/35843), **open/unmerged**, proposes the fix. A closed report is not evidence of a merged fix. [#35806](https://github.com/ethereum/go-ethereum/pull/35806), **closed**, reordered withdrawals, which the current code confirms. EELS tracker #3217 lists netting coverage (#3566). Searches covered `7928` / `"block access list"` and `8282` / `"builder requests"`. Hive unavailable.

## Rules checked and found correct

Static matches only; not exhaustive certification. 

| Rule | Specification | Geth evidence |
|---|---|---|
| Builder addresses and types 03/04 | [EIP-8282 constants](https://eips.ethereum.org/EIPS/eip-8282#constants); [fork.py#L121-L126][saddr] | [params/protocol_params.go#L265-L269][gaddr]; [core/state_processor.go#L457-L466][gqueues]. Addresses and type bytes agree. |
| Runtime bytes | EELS pinned builder deposit/exit `.bin` files, URLs below | [params/protocol_params.go#L265-L269][gaddr]. In-memory comparison: deposit **628 bytes equal**, exit **458 bytes equal**. No VM execution. |
| System caller, empty input, zero value; separate 30M execution gas and Amsterdam state budget; failure invalidates block | [EIP-8282 system call](https://eips.ethereum.org/EIPS/eip-8282#system-call); [fork.py#L689-L719][schecked] | [core/state_processor.go#L360-L373][ggasbudget], [core/state_processor.go#L469-L510][gcall]. Direct EVM call does not debit block gas pool; absence of code and call errors propagate through [core/state_processor.go#L220-L227][gpropagate]. |
| Increasing request type; omit empty data; requests_hash | [fork.py#L870-L921][srequestorder], [requests.py#L307-L326][shash] | [core/state_processor.go#L194-L229][gpost], [core/state_processor.go#L469-L510][gcall]; [eth/catalyst/api.go#L1387-L1400][gvalidreq] rejects type-only, duplicate and descending input. [core/types/block.go#L479-L491][ghash] hashes only entries longer than one byte; [core/block_validator.go#L172-L179][gverifyreq] compares executed commitment. EELS' hash helper relies on its producer's nonempty invariant, so its lack of a local filter is not a finding. |
| V5 field presence; raw BAL hashing; malformed RLP -> INVALID | [Engine amsterdam.md#L100-L126][anewfields]; [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928#block-structure-modification) | [eth/catalyst/api.go#L837-L895][gnp4gate] requires slot, BAL, executionRequests. [beacon/engine/types.go#L340-L379][grawbal] hashes original BAL bytes; [beacon/engine/types.go#L271-L288][gdecodeorder] decodes before hash validation; [beacon/engine/types.go#L393-L401][gdecodebal] rejects malformed RLP. [eth/catalyst/api.go#L923-L958][gdecodeinvalid] returns INVALID, not a params error, for decode failure. |
| getPayloadV6 response fields | [Engine amsterdam.md#L128-L152][aget] | [eth/catalyst/api.go#L498-L543][ggates], [beacon/engine/types.go#L422-L465][ggetfields], [beacon/engine/types.go#L138-L145][genvelope]: slot, RLP BAL, executionRequests, blob bundle, value and override flag are populated. |
| Timestamp gating / wrong-version error for structurally valid inputs | [Engine amsterdam.md#L276-L284][aforkupdates] | [eth/catalyst/api.go#L203-L218][gfcu3], [eth/catalyst/api.go#L837-L895][gnp4gate], [eth/catalyst/api.go#L498-L543][ggates] separate old/new methods. [eth/catalyst/api.go#L1228-L1238][gcheckfork] uses timestamp-selected fork; [beacon/engine/errors.go#L77-L84][gerrorcodes] defines **-38005** UnsupportedFork. No claim about competing malformed-input error precedence. |
| Slot attribute -> header; zero distinct from absent | [EIP-7843 RPC changes](https://eips.ethereum.org/EIPS/eip-7843#rpc-changes); [blocks.py#L241-L271][sheader] | [beacon/engine/pa_codec.go#L39-L77][padec] decodes uint64 pointer; [miner/worker.go#L340-L345][gslotbuild] installs it; [consensus/beacon/consensus.go#L272-L287][gheadergate] gates header presence. |
| FCU V4 custodyColumns third parameter, null/16 bytes | [Engine amsterdam.md#L207-L242][acustodyrules]; [Erigon #22896](https://github.com/erigontech/erigon/issues/22896), closed | [eth/catalyst/api.go#L223-L243][gfcuv4] accepts the pointer; [core/types/custody_bitmap.go#L28-L46][gcustody] requires 16 bytes. [eth/fetcher/blob_fetcher.go#L303-L311][gcustodydispatch] dispatches updates with no execution-error result propagated to FCU. Geth does not share Erigon's missing-parameter finding. Sampling/rebroadcast timing untested. |
| Factory: no irregular fork mutation, existence check or incidental BAL read | [EIP-7997 specification](https://eips.ethereum.org/EIPS/eip-7997#specification); [fork.py#L165-L185][sapplyfork] returns old state | [core/state_processor.go#L167-L185][gpre], [core/state_processor.go#L194-L229][gpost] contain no factory operation. [params/protocol_params.go#L271-L273][gfactory] defines constants; [core/genesis.go#L687-L697][ggenfactory] allocates development prestate. [#35458](https://github.com/ethereum/go-ethereum/pull/35458), closed/merged, removed the old transition. Ordinary transactions calling/deploying the factory still produce ordinary BAL entries. |

## Known-check record and limitations

GitHub searches included open/closed issues **and** PRs (no state or kind filter), using `https://api.github.com/search/issues?per_page=100&q=<encoded query>`. Executed queries, all with `repo:ethereum/go-ethereum`:

| EIP | Number and short-name searches |
|---|---|
| 8282 | `8282`; `"builder requests"` |
| 7843 | `7843`; `SLOTNUM` |
| 7928 | `7928`; `"block access list"` |
| 7997 | `7997`; `"deterministic factory"` |
| Engine | `"targetGasLimit"`; `"forkchoiceUpdatedV4"` |

Follow-up `repo:ethereum/go-ethereum "Unsupported fork" "Amsterdam"` and `repo:ethereum/execution-specs "Test Release Tracker"` searches hit HTTP 403 search rate limits. Web search located trackers subsequently read by direct issues API. Searches are not a guarantee of complete indexing; both candidates are marked known from explicit public records, not inferred novelty.

EELS [Test Release Tracker #3167](https://github.com/ethereum/execution-specs/issues/3167), **closed**, explicitly marks the former EIP-7997 fork existence-check/BAL behavior as no longer included. [#3295](https://github.com/ethereum/execution-specs/issues/3295), **closed**, is the devnet-8.1.0 repricing/coverage follow-up. [#3217](https://github.com/ethereum/execution-specs/issues/3217), **open**, lists builder gas/failure/transition coverage and BAL netting coverage (#3566); its final all-client consume-engine sweep remains unchecked in the observed issue body. These trackers do not resolve candidate 1's required/optional mismatch or establish a clean result for candidate 2.

[benchmarkoor PR #353](https://github.com/ethpandaops/benchmarkoor/pull/353), **closed/merged**, reports replay rejection without builder predeploys and some stateful BAL disagreements. Missing-code rejection is now required by EIP-8282, not itself a bug. Its generic BAL failures cannot be attributed to candidate 2 without individual test evidence.

**Hive gap:** [hive.ethpandaops.io/glamsterdam/listing.jsonl](https://hive.ethpandaops.io/glamsterdam/listing.jsonl) returned **HTTP 403 Forbidden** on direct retrieval; web retrieval also failed. No entries, per-test results, image revisions or pass counts were readable. Neither candidate is claimed to pass/fail the public dashboard. This is unavailable evidence, not “not found” or a passing check.

## URLs read

Linked source files were fetched through `https://raw.githubusercontent.com/<owner>/<repo>/<pin>/<path>`, including the requested Amsterdam `requests.py`, `fork.py`, `blocks.py`. Pins and issue/PR records used public `api.github.com` endpoints. EIPs and trackers are linked above. Additional raw files for byte comparison:

- https://raw.githubusercontent.com/ethereum/execution-specs/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/packages/testing/src/execution_testing/forks/forks/eips/amsterdam/contracts/builder_deposit_request.bin
- https://raw.githubusercontent.com/ethereum/execution-specs/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/packages/testing/src/execution_testing/forks/forks/eips/amsterdam/contracts/builder_exit_request.bin


[meta]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L21-L55
[amlist]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/__init__.py#L7-L20
[gloaslist]: https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L165-L182
[ref8282]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip8282_builder_execution_requests/spec.py#L18-L20
[ref7843]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7843_slotnum/spec.py#L14-L16
[ref7928]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7928_block_level_access_lists/spec.py#L14-L16
[ref7997]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7997_deterministic_factory_contract/spec.py#L16-L18
[activation]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L62-L70
[mainnet]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/params/chainspecs/mainnet.json#L1-L51
[aattrs]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L81-L91
[afcu]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L222-L228
[gfcuv4]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L223-L243
[padec]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/pa_codec.go#L39-L77
[buildargs]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L388-L411
[gasfallback]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/miner/worker.go#L290-L300
[nattrs]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Producers/PayloadAttributes.cs#L281-L308
[nversion]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Producers/PayloadAttributes.cs#L316-L333
[e7928net]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7928.md#L196-L235
[snet]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L765-L824
[sbaseline]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/block_access_lists.py#L727-L762
[sfinalindex]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L830-L844
[gpost]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L194-L229
[gmerge]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/bal/bal.go#L158-L195
[grecord]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state/statedb.go#L825-L854
[gvalidatebal]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/block_validator.go#L181-L195
[sbalstoragefixture]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_cross_index.py#L536-L650
[npost]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Consensus/Processing/BlockAccessListManager.SystemContracts.cs#L72-L91
[nnetbalance]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L107-L132
[nnetstorage]: https://github.com/NethermindEth/nethermind/blob/d48833af88ec4224c86afadd1c596e8f619c406b/src/Nethermind/Nethermind.Core/BlockAccessLists/BlockAccessListAtIndex.cs#L212-L241
[gskip]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/tests/block_test.go#L90-L96
[saddr]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L121-L126
[gaddr]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/params/protocol_params.go#L265-L269
[gqueues]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L457-L466
[ggasbudget]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L360-L373
[gcall]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L469-L510
[schecked]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L689-L719
[gpropagate]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L220-L227
[srequestorder]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L870-L921
[gvalidreq]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L1387-L1400
[shash]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/requests.py#L307-L326
[ghash]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/block.go#L479-L491
[gverifyreq]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/block_validator.go#L172-L179
[anewfields]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L100-L126
[grawbal]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/types.go#L340-L379
[gdecodebal]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/types.go#L393-L401
[gdecodeorder]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/types.go#L271-L288
[gdecodeinvalid]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L923-L958
[aget]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L128-L152
[ggetfields]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/types.go#L422-L465
[genvelope]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/types.go#L138-L145
[aforkupdates]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L276-L284
[gfcu3]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L203-L218
[gnp4gate]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L837-L895
[ggates]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L498-L543
[gcheckfork]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/catalyst/api.go#L1228-L1238
[gerrorcodes]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/beacon/engine/errors.go#L77-L84
[sheader]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/blocks.py#L241-L271
[gslotbuild]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/miner/worker.go#L340-L345
[gheadergate]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/consensus/beacon/consensus.go#L272-L287
[acustodyrules]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L207-L242
[gcustody]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/types/custody_bitmap.go#L28-L46
[gcustodydispatch]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/eth/fetcher/blob_fetcher.go#L303-L311
[sapplyfork]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L165-L185
[gpre]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/state_processor.go#L167-L185
[gfactory]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/params/protocol_params.go#L271-L273
[ggenfactory]: https://github.com/ethereum/go-ethereum/blob/8817f99f92852f8ac53e596de6202dd9e3494065/core/genesis.go#L687-L697
