# Erigon / Amsterdam public-source conformance review

Reviewed 2026-10-27: EIP-8282, Amsterdam newPayloadV5/getPayloadV6/forkchoiceUpdatedV4, EIP-7997 and EIP-7843/7928 fields, compared with pinned Reth. Public-source inspection only; no client code or transaction executed and no node contacted.

**Result:** two **cosmetic API-conformance candidates** and one **known, conditional custody-update gap**. No substantiated new consensus-split candidate in the scoped paths. “Not found” is a search outcome, not proof of novelty. Hive results were unavailable.

## Pins and specification baseline

| Source | Branch / exact commit | Pin endpoint |
|---|---|---|
| Erigon | `main` — `f32a39d1e5f87a9ec3a9ce2858171c74acc3c242` | [commits/main](https://api.github.com/repos/erigontech/erigon/commits/main) |
| Reth | `main` — `e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c` | [commits/main](https://api.github.com/repos/paradigmxyz/reth/commits/main) |
| Execution specs (EELS) | `forks/bogota` — `7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b`; reviewed **amsterdam/**, not Bogota rules | [commits/forks/bogota](https://api.github.com/repos/ethereum/execution-specs/commits/forks/bogota) |
| Engine API | `main` — `3284ee80c3da3e516c53782dde75157cccf1ebdc` | [commits/main](https://api.github.com/repos/ethereum/execution-apis/commits/main) |
| EIPs | default HEAD — `d4c575521d99ec881a444ab3af604e684b5f0743` | [commits/HEAD](https://api.github.com/repos/ethereum/EIPs/commits/HEAD) |
| Consensus specs | `master` — `8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2` | [commits/master](https://api.github.com/repos/ethereum/consensus-specs/commits/master) |

[Engine API master URL](https://raw.githubusercontent.com/ethereum/execution-apis/master/src/engine/amsterdam.md) was readable. Its bytes equaled the document at the Engine API pin above (SHA-256 `43fadd7a8bacab0cc906658599650ee7d14b2cb4717912718a81a8475937fcc7`). Default branch is `main`; [commits/master](https://api.github.com/repos/ethereum/execution-apis/commits/master) returned HTTP 422. All client file references below resolve to the pinned commits; cited client code was fetched through raw.githubusercontent.com, not GitHub HTML code views.

### Exact scheduled list and versions

[EIP-7773#L21-L68][meta] lists these **18 scheduled core EIPs**. The text version for **each scheduled EIP** is `ethereum/EIPs@d4c575521d99ec881a444ab3af604e684b5f0743`, file `EIPS/eip-<number>.md` ([pinned EIPS directory](https://github.com/ethereum/EIPs/tree/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS)). Source versions are commit-based.

The exact scheduled list is **2780, 7688, 7708, 7732, 7778, 7843, 7928, 7954, 7976, 7981, 7997, 8024, 8037, 8038, 8045, 8061, 8246, 8282**. Each number maps to its `EIPS/eip-N.md` at the EIPs pin above; metadata was read for all eighteen. EIP-7688 is Review; the others are Last Call, with deadline 2026-11-01 except 8246 (2026-11-04).

[EELS amsterdam/__init__.py#L1-L38][s-list] lists all except the CL-only 7688, 7732, 8045 and 8061. [CL gloas/beacon-chain.md#L165-L186][c-list] covers those four plus 7843 and 8282; it also references networking 8070 and informational 8261. The meta EIP separately lists networking **7975, 8070, 8136, 8159, 8189** and informational **7904, 8261** as Other EIPs, not additional scheduled-core rows.

For this item's four reference EIPs, the current rendered pages read were [8282](https://eips.ethereum.org/EIPS/eip-8282), [7843](https://eips.ethereum.org/EIPS/eip-7843), [7928](https://eips.ethereum.org/EIPS/eip-7928), and [7997](https://eips.ethereum.org/EIPS/eip-7997). Normative execution comparisons use the pinned EELS `requests.py`, `fork.py`, `blocks.py` and Engine API above. CL explicitly targets older EIP revisions: 7843 at `c3bfd4ba41cf0fcbfe8c404f33ba89f5174971e0`, 8282 at `de4c6f02c7bec4686762c55f8ab6abcf97a77d7d`; its own warning says those links can differ from published EIPs. 

The pinned meta EIP leaves Mainnet activation blank; Sepolia and Hoodi are populated. Findings concern the new Amsterdam interface.

## Candidates

### C1 — Non-DATA custody encoding is accepted

1. **Spec.** [common.md#L134-L138][a-common] requires DATA to match `^0x(?:[a-fA-F0-9]{2})*$` (verbatim). [amsterdam.md#L230-L234][a-fcu] requires a “16-byte `DATA` value”, otherwise `-32602`.

2. **Erigon.** [execution/engineapi/engine_types/custody_columns.go#L37-L52][e-custody], at the pin:

   ```go
   s = strings.TrimPrefix(s, "0x")
   s = strings.TrimPrefix(s, "0X")
   b, err := hex.DecodeString(s)
   ```

   Prefix removal is optional; subsequent checks enforce decoding and length only. [engine_api_methods.go#L178-L182][e-fcu] uses this type for V4's third argument.

3. **Condition.** On an Amsterdam-configured EL, send otherwise acceptable FCU V4 for a valid head, null attributes, and thirty-two hexadecimal digits **without a prefix** as custody columns. Erigon proceeds instead of returning invalid params. An uppercase prefix also passes. This is an encoding/response difference, not malformed-block acceptance.

4. **Reth.** [crates/rpc/rpc-api/src/engine.rs#L159-L165][r-custody] declares `custody_columns: Option<B128>`; [engine_api.rs#L423-L434][r-fcu] accepts it. [Cargo.lock#L440-L443][r-lock1] and [#L2608-L2611][r-lock2] pin alloy-primitives 1.7.3 and const-hex 1.19.3. Their exact public sources, `src/bits/serde.rs#L55-L63` and `src/lib.rs#L658-L667,#L702-L706`, delegate to FromHex and optionally strip the prefix. **Reth agrees with Erigon for this V4 input**, not the DATA grammar. Sources read: [alloy-primitives package](https://static.crates.io/crates/alloy-primitives/alloy-primitives-1.7.3.crate), [const-hex package](https://static.crates.io/crates/const-hex/const-hex-1.19.3.crate).

5. **Confidence/disproof.** **High**, static. Checked the decoder and typed call boundary, then Reth's actual dependency rather than assuming fixed-size types enforce DATA. Wrong decoded lengths are rejected; that does not enforce a prefix. No runtime reproduction.

6. **Severity / known-check.** **Cosmetic**; no established block/state-root/gas/fee effect. **Not found** for this precise defect. Queries: `repo:erigontech/erigon 8070`, `repo:erigontech/erigon custodyColumns`, `repo:erigontech/erigon "custodyColumns" "prefix" in:title,body` (0), and `repo:erigontech/erigon "custodyColumns" "hex" in:title,body` (only closed/merged [#22897](https://github.com/erigontech/erigon/pull/22897), which describes parameter/length support). Tracker/Hive limitations below apply.

### C2 — FCU V4 validates fork window before completing structure checks

1. **Spec.** [amsterdam.md#L222-L226][a-fcu] prescribes a sequence starting with “`payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure”: failure returns `-38003`, before the timestamp/window check. [PayloadAttributesV4][a-fields] requires slotNumber and targetGasLimit. This finding relies on that sequence, not the awkward negation in the timestamp sentence.

2. **Erigon.** [execution/engineapi/engine_server.go#L252-L259][e-attrs] executes these lines before checking missing slot/target:

   ```go
   if !e.config.IsAmsterdam(timestamp) && version >= clparams.GloasVersion {
       return &rpc.UnsupportedForkError{Message: "Unsupported fork"}
   }
   ```

   Missing targetGasLimit survives decoding as a nil pointer, [jsonrpc.go#L67-L77][e-attrstype]. Error mappings are `-38005` in [rpc/errors.go#L122-L127][e-unsupported] and `-38003` in [engine_helpers/constants.go#L23-L28][e-errors].

3. **Condition.** With a configured future Amsterdam activation and valid Osaka head, call FCU V4 with a later-than-head, still-pre-Amsterdam timestamp. Supply the older required fields, withdrawals, parent beacon root and slot number, but omit target gas limit. Spec: malformed V4 structure gives `-38003`. Erigon: earlier window check gives `-38005`. Both reject building.

4. **Reth.** [crates/ethereum/node/src/engine.rs#L72-L84][r-validator] calls [payload/primitives/src/lib.rs#L552-L594][r-validation-order], checking slot before timestamp. For this input, [lib.rs#L312-L321][r-attrs] takes `if !is_amsterdam_active && has_slot_number {`; [rpc-engine-api/src/error.rs#L120-L140][r-errors] maps it to `-38003`. Reth agrees with the required error **for this input**, through a pre-fork-slot check rather than missing-target validation. [engine_api.rs#L1071-L1099][r-fcu-errors] preserves INVALID/SYNCING head results; the condition deliberately uses a VALID head. This is not endorsement of all Reth V4 validation.

5. **Confidence/disproof.** **High**, static. [engine_server.go#L221-L235][e-oldfcu] does not catch missing target; [#L892-L911][e-fcu-flow] reaches the failing check for a VALID head. Excluded null attributes, missing beacon root, and pre-Cancun timestamps, which take other branches. The explicit spec order supports the finding despite two invalid input properties. No execution attempted.

6. **Severity / known-check.** **Cosmetic**, wrong error only. **Not found** for this V4 ordering. Queries: `repo:erigontech/erigon 7843`, `repo:erigontech/erigon "slotnum"`, `repo:erigontech/erigon "forkchoiceUpdatedV4" in:title,body`, `repo:erigontech/erigon "slotNumber" "38005" in:title,body`, `repo:erigontech/erigon "targetGasLimit" "38003" in:title,body` (0). Related closed [#20891](https://github.com/erigontech/erigon/pull/20891) concerns V3 checks and valid-head ordering, accounted for here. Tracker/Hive limits below apply.

### K1 — Known custody-update gap (conditional, not a block-validity finding)

1. **Spec.** [amsterdam.md#L230-L242][a-fcu] says “**MUST** adopt the provided custody set” when acting as a type-3 transaction sampler, independently of fork choice.

2. **Erigon.** [execution/engineapi/engine_api_methods.go#L180-L181][e-fcu] accepts the third argument but only executes:

   ```go
   return e.forkchoiceUpdated(ctx, forkChoiceState, payloadAttributes, clparams.GloasVersion)
   ```

   It never reads or forwards custodyColumns. [engine_api_custody_columns_test.go#L59-L86][e-custodytest] documents this and checks FCU acceptance, not custody adoption.

3. **Condition.** A CL supplies a changed non-null bitmap, possibly with null attributes. No custody update occurs. A sampling consequence requires an active sparse sampler; this review did not establish that Erigon path or demonstrate missing cells or block rejection.

4. **Reth.** [engine_api.rs#L429-L433][r-fcu] executes `self.inner.cell_custody.set_from_engine_api(custody_columns);` before fork choice. [network-api/src/custody.rs#L24-L58][r-set] stores the bitmap with little-endian API interpretation. It agrees with the update rule.

5. **Confidence/disproof.** **High** for the ignored argument, **medium/conditional** for sampling impact. Checked the decoder for side effects (it only fills bytes), the regression test and historical fix. Three-argument acceptance does not establish custody adoption.

6. **Severity / known-check.** **Cosmetic** within the supplied categories; no demonstrated block/gas/fee effect. **Known** under open [#22808](https://github.com/erigontech/erigon/issues/22808), the sparse-blobpool implementation tracker; the exact ignored-update symptom is not separately described there. [#22896](https://github.com/erigontech/erigon/issues/22896) is closed and concerned rejecting the third argument. [#22897](https://github.com/erigontech/erigon/pull/22897) is closed/merged; [#22918](https://github.com/erigontech/erigon/pull/22918) is a closed revert proposal. Current code establishes current behavior. Queries: repository-scoped `8070`, `custodyColumns`, `forkchoiceUpdatedV4`, without state filters.

## Rules checked and found consistent

Static checks of the reviewed path, not exhaustive certification. All file references are at the pins above.

| Rule | Spec | Erigon evidence / outcome |
|---|---|---|
| Final builder addresses and type bytes | [EIP-8282#L37-L78][p-builder]; [fork.py#L121-L126][s-addr] | [params/protocol.go#L267-L299][e-addr], [eip7685_requests.go#L25-L38][e-hash]: deposit `0x03`, `0x0000BFF46984E3725691FA540A8C7589300D8282`; exit `0x04`, `0x000064D678505AD48F8CCB093BC65613800E8282`. [chain_config.go#L539-L554][e-addr-config] uses these unless explicitly overridden. |
| Order / fork gate | [fork.py#L855-L921][s-dequeue] | [merge.go#L199-L279][e-final]: types 0–4 in ascending order; builder calls only at Amsterdam. Reth likewise gates and orders them, [execution.rs#L390-L418][r-builder]. |
| System call budget and failure | [EIP-8282][p-builder]; [fork.py#L688-L721][s-checked], [#L748-L778][s-system] | [eip8282.go#L45-L85][e-dequeue] passes empty calldata, rejects empty code and propagates errors through [merge.go][e-final]. [block_exec.go#L49-L52][e-systemgas], [#L201-L265][e-system] supplies SYSTEM_ADDRESS and separate 30M execution budget; [params/protocol.go#L225-L231][e-statebudget] supplies Amsterdam's separate state reservoir. Reth propagates request-call failures, [execution.rs#L421-L448][r-sysfail]. No certification of every opcode-visible environment field. |
| Nonempty requests only / hash | [fork.py#L855-L921][s-dequeue], [requests.py#L307-L326][s-request] | [eip7685_requests.go#L60-L76][e-hash] skips empty data and hashes typed records with SHA-256. EELS filters before hashing. Zero-length output is nil via [instructions.go#L1371-L1377][e-output] and [memory.go#L134-L142][e-memory], then omitted by [eip8282.go][e-dequeue]. This disproves the suspected type-only builder-request emission. |
| Incoming request framing and order | [Prague inherited rules][a-prague] | [engine_server.go#L342-L358][e-newreq] rejects length ≤1 and non-increasing types, and commits the hash to the header; no three-list ceiling. |
| getPayloadV6 fields | [amsterdam.md#L132-L156][a-get] | [jsonrpc.go#L175-L181][e-responsetype] includes all five envelope fields. [engine_server.go#L1182-L1211][e-getresponse] emits all generated requests. [payload_conversion.go#L55-L73][e-convert] carries slot and BAL bytes. |
| Slot / payload attributes | [EIP-7843][p-slot], [blocks.py#L241-L269][s-header] | [jsonrpc.go#L36-L58][e-payloadtype], [#L67-L77][e-attrstype] use uint64 quantities. [engine_server.go#L393-L430][e-newbal] requires V5 slot; [#L936-L954][e-assemble] forwards V4 attributes. [create_block.go#L201-L209][e-buildslot] installs the slot; [block.go#L336-L350][e-header] encodes it after BAL hash. Zero differs from missing. |
| BAL hash uses raw bytes | [EIP-7928][p-bal], [blocks.py][s-header] | [engine_server.go#L393-L415][e-newbal]; [block_access_list.go#L73-L80][e-balraw] preserves supplied bytes and [#L109-L129][e-balhash] hashes them. No silent reorder/re-encoding before hash. |
| Missing / malformed BAL | [amsterdam.md#L106-L130][a-new] | [engine_server.go#L393-L405][e-newbal]: missing gives invalid params; undecodable RLP gives INVALID with no latestValidHash. [block_access_list.go#L817-L834][e-baldecode] checks a single complete RLP item. Semantic BAL validation is not exhaustively audited here. |
| Timestamp boundary, well-formed inputs | [Amsterdam prior-method rules][a-old] | [chain_config.go#L401-L404][e-time], [#L974-L980][e-timecmp]: activation at equality; unset means inactive. [engine_server.go#L424-L430][e-newbal], [#L797-L810][e-getgate], [#L221-L235][e-oldfcu] gate newPayloadV5, getPayloadV6 and FCU V3/V4 respectively. C2 covers the malformed-attributes ordering exception. |
| Target gas limit | [V4 attributes and FCU][a-fcu] | [engine_server.go#L255-L265][e-attrs] requires slot and target at Amsterdam; [#L936-L954][e-assemble] forwards them. [create_block.go#L169-L177][e-buildgas] selects the supplied target subject to header gas-limit bounds. |
| No factory action at fork | [EIP-7997#L34-L46][p-factory]; [fork.py#L165-L185][s-fork] | [merge.go#L438-L491][e-fork] has no Amsterdam factory deployment/existence check; [#L199-L279][e-final] has none in finalization. No mandatory factory BAL read is inserted by this PoS path. Actual transaction accesses may legitimately produce factory BAL entries. |

## Known checks and public test evidence

Searches covered open/closed issues and PRs, without state/type filters. Candidate queries are above. Additional Erigon queries: `8282`, `"builder requests"`, `"builder execution"`, `7997`, `"deterministic factory"`, `7843`, `"slotnum"`, `7928`, `"Block-Level Access Lists"`. Broad 7928/builder-execution results exceeded one page and served only as triage. A transient search HTTP 403 rate limit occurred; later focused queries succeeded. Direct API reads established these states.

| Public record | State observed / relevance |
|---|---|
| [Erigon #22008](https://github.com/erigontech/erigon/issues/22008) | **Closed** (the supplied index said open). Historical three-list layout issue; five types exist at this pin. |
| [#22093](https://github.com/erigontech/erigon/pull/22093), [#22526](https://github.com/erigontech/erigon/pull/22526) | Closed/merged, respectively 2026-07-10 and 2026-07-27. Builder request implementation and devnet-7 contract update; old devnet addresses are not current code evidence. |
| [#22896](https://github.com/erigontech/erigon/issues/22896), [#22897](https://github.com/erigontech/erigon/pull/22897) | Closed; third-argument rejection fixed in the reviewed signature. Does not establish custody adoption or strict DATA encoding. |
| [#22808](https://github.com/erigontech/erigon/issues/22808) | Open sparse-blobpool support tracker; known umbrella for K1, not proof of a reproduced sampling failure. |
| [#22028](https://github.com/erigontech/erigon/issues/22028) | Closed EIP-7997 implementation tracker. No current boundary mutation identified. |
| [EELS #2915](https://github.com/ethereum/execution-specs/issues/2915) | Closed devnet-6 tracker; historical builder/factory changes. |
| [EELS #3034](https://github.com/ethereum/execution-specs/issues/3034) | Closed devnet-7 tracker; lists the final builder addresses and contract changes used in the current comparison. |
| [EELS #3167](https://github.com/ethereum/execution-specs/issues/3167) | Closed devnet-8 tracker. Explicitly strikes out the proposed factory-at-fork deployment/BAL-read change. Includes sparse-blobpool tests; named passing branches are not this pinned Erigon head. |
| [EELS #3217](https://github.com/ethereum/execution-specs/issues/3217) | Open `tests@v21.0.0` release tracker. Lists slot/fork-transition coverage, invalid BAL decoding, builder dequeue BAL coverage, factory-absent-at-fork tests, and custody tests; final all-client sweep is not checked off. No exact C1/C2 failure result found in the tracker body. |
| [Hive Glamsterdam listing](https://hive.ethpandaops.io/glamsterdam/listing.jsonl) | Direct fetch returned **HTTP 403 Forbidden**; web-tool attempt also failed. No rows or per-client results were obtained; neither Hive confirmation nor a clean run is claimed. |

Tracker coverage does **not** prove this Erigon pin passes. No remote tests or issue/PR submissions.

## Disproof outcome, limits and URLs read

Five-type requests, omission of empty output, raw BAL hashing and absence of factory boundary mutation disprove the apparent consensus leads (sources above). C1/C2 remain exact API encoding/error differences. K1 is known and conditional, not evidence of block rejection. No client code was executed, no remote test was run and no issue/PR was filed. This does not audit all predeploy bytecode instructions, every BAL semantic invariant, CL transitions, other clients or other EIPs.

URLs read: pinned files, pin endpoints, four EIP pages, Engine API master, crate packages and issue/PR/tracker/Hive links above. Code was fetched as `https://raw.githubusercontent.com/<repository>/<pin>/<path>`; public recursive tree APIs located files. Issue/PR bodies used GitHub API `/repos/<owner>/<repo>/issues/<number>` or `/pulls/<number>`. [Search API](https://api.github.com/search/issues): `per_page=100`, exact queries above. Also read: [execution-apis metadata](https://api.github.com/repos/ethereum/execution-apis), [EELS releases](https://github.com/ethereum/execution-specs/releases), [#3147](https://github.com/ethereum/execution-specs/issues/3147), [#3001](https://github.com/ethereum/execution-specs/issues/3001). 

[meta]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7773.md#L21-L68
[s-list]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/__init__.py#L1-L38
[c-list]: https://github.com/ethereum/consensus-specs/blob/8a80ffa82bd49aac0dd6db17f9e8150aa257fbc2/specs/gloas/beacon-chain.md#L165-L186
[e-attrs]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L244-L266
[e-attrstype]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_types/jsonrpc.go#L67-L77
[e-fcu-flow]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L892-L911
[e-errors]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_helpers/constants.go#L23-L28
[e-unsupported]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/rpc/errors.go#L122-L127
[a-fcu]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L203-L242
[a-fields]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L49-L99
[a-new]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L106-L130
[a-get]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L132-L156
[a-old]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/amsterdam.md#L272-L284
[a-common]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/common.md#L134-L140
[a-prague]: https://github.com/ethereum/execution-apis/blob/3284ee80c3da3e516c53782dde75157cccf1ebdc/src/engine/prague.md#L76-L82
[e-custody]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_types/custody_columns.go#L26-L52
[e-fcu]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_api_methods.go#L178-L182
[e-custodytest]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_api_custody_columns_test.go#L59-L86
[r-custody]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/rpc/rpc-api/src/engine.rs#L149-L165
[r-fcu]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/rpc/rpc-engine-api/src/engine_api.rs#L423-L434
[r-set]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/net/network-api/src/custody.rs#L24-L58
[r-lock1]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/Cargo.lock#L440-L443
[r-lock2]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/Cargo.lock#L2608-L2611
[r-attrs]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/payload/primitives/src/lib.rs#L312-L321
[r-validator]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/ethereum/node/src/engine.rs#L72-L84
[r-validation-order]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/payload/primitives/src/lib.rs#L552-L594
[r-errors]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/rpc/rpc-engine-api/src/error.rs#L120-L140
[r-fcu-errors]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/rpc/rpc-engine-api/src/engine_api.rs#L1071-L1099
[e-addr]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/params/protocol.go#L267-L299
[e-addr-config]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/chain/chain_config.go#L539-L554
[e-dequeue]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/misc/eip8282.go#L45-L85
[e-final]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/rules/merge/merge.go#L199-L279
[e-hash]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/types/eip7685_requests.go#L25-L76
[e-system]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/block_exec.go#L201-L265
[e-systemgas]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/block_exec.go#L49-L52
[e-statebudget]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/params/protocol.go#L225-L231
[s-request]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/requests.py#L307-L326
[s-dequeue]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L855-L921
[s-checked]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L688-L721
[s-addr]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L121-L126
[s-header]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/blocks.py#L241-L269
[s-fork]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L165-L185
[e-newreq]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L342-L358
[e-newbal]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L381-L430
[e-getgate]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L797-L810
[e-oldfcu]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L221-L235
[e-getresponse]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L1182-L1211
[e-responsetype]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_types/jsonrpc.go#L175-L181
[e-payloadtype]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_types/jsonrpc.go#L36-L58
[e-convert]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_types/payload_conversion.go#L55-L73
[e-assemble]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/engineapi/engine_server.go#L936-L954
[e-buildslot]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/builder/create_block.go#L201-L209
[e-buildgas]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/builder/create_block.go#L169-L177
[e-balraw]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/types/block_access_list.go#L73-L80
[e-balhash]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/types/block_access_list.go#L109-L129
[e-baldecode]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/types/block_access_list.go#L817-L834
[e-header]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/types/block.go#L336-L350
[e-fork]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/protocol/rules/merge/merge.go#L438-L491
[e-time]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/chain/chain_config.go#L401-L404
[e-timecmp]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/chain/chain_config.go#L974-L980
[e-output]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/vm/instructions.go#L1371-L1377
[e-memory]: https://github.com/erigontech/erigon/blob/f32a39d1e5f87a9ec3a9ce2858171c74acc3c242/execution/vm/memory.go#L134-L142
[r-builder]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/ethereum/evm/src/execution.rs#L390-L418
[r-sysfail]: https://github.com/paradigmxyz/reth/blob/e0378eb691aa2770bb96fd4ecec2f4445a2a3e7c/crates/ethereum/evm/src/execution.rs#L421-L448
[p-factory]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7997.md#L34-L46
[p-builder]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-8282.md#L37-L78
[p-slot]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7843.md#L30-L54
[p-bal]: https://github.com/ethereum/EIPs/blob/d4c575521d99ec881a444ab3af604e684b5f0743/EIPS/eip-7928.md#L34-L85
[s-system]: https://github.com/ethereum/execution-specs/blob/7f2f4c9bf6d73b09ecb8b24eb14d08bf0cf0247b/src/ethereum/forks/amsterdam/fork.py#L748-L778
