feat(spec-specs,tooling): run EELS under hive consume engine for all post-merge forks - #3363
Draft
spencer-tb wants to merge 12 commits into
Draft
feat(spec-specs,tooling): run EELS under hive consume engine for all post-merge forks#3363spencer-tb wants to merge 12 commits into
spencer-tb wants to merge 12 commits into
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## forks/amsterdam #3363 +/- ##
===================================================
- Coverage 93.53% 91.18% -2.36%
===================================================
Files 624 661 +37
Lines 37074 38033 +959
Branches 3394 3480 +86
===================================================
+ Hits 34679 34680 +1
- Misses 1645 2603 +958
Partials 750 750
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This was referenced Aug 12, 2026
spencer-tb
force-pushed
the
amsterdam-execution-engine
branch
from
August 13, 2026 08:39
8168f60 to
05afe6d
Compare
spencer-tb
force-pushed
the
amsterdam-execution-engine
branch
from
August 13, 2026 09:41
3f4705c to
3396335
Compare
danceratopz
self-requested a review
August 13, 2026 13:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
EELS side of running the spec as a client under hive's
consume engineand
consume enginex, for every post-merge fork (Paris throughAmsterdam, including the BPO forks and fork transitions).
Three layers:
src/ethereum/forks/<fork>/execution_engine/for every post-mergefork: the Engine API as readable spec, structured like the
execution-apis documents and geth's
catalystAPI. Versionedstructures (
ExecutionPayloadV1…V4,PayloadAttributesV1…V4,BlobsBundleV1/V2,GetPayloadResponseV2…V6,PayloadStatusV1) are additive from Paris; versioned methods(
new_payload_v1…v5,forkchoice_updated_v1…v4,get_payload_v1…v6) are thin wrappers carrying each version'srules — superseded versions answer
UnsupportedForkError, therequests and block-access-list structural rules raise
InvalidEngineParamsError— over shared cores that returnPayloadStatusV1. A new payload validates on the branch of itsparent without moving the canonical head; only a forkchoice update
adopts a head, and the engine remembers every validated block with
the state it produced, so nothing is re-executed. Payload building
is specified by signature and response type but not implemented.
Verified directly: 2,883 release fixtures across all forks and
transitions through the versioned methods, including the expected
unsupported-fork and invalid-params exceptions.
src/ethereum_spec_tools/engine_server/:ethereum-spec-engine, aJSON-RPC server wrapping the spec. A
ForkSpecregistry maps eachfork to its wire family (
engine_newPayloadV1…V5,forkchoiceUpdatedV1…V4, payload field sets); the fork schedulecomes from the hive
HIVE_<FORK>_TIMESTAMPvariables and payloadsresolve their fork by timestamp (
-38005on version mismatch).Amsterdam executes via
execute_blockdiffs; earlier forks viastate_transitionwith reorg-by-replay from a genesis snapshot(
state_mpt.copy_state). Structural param violations map to theEngine API error codes, including the requests-list rules and the
empty-
blockAccessListleniency the transition fixtures encode.calculate_excess_blob_gasreset blob accounting whenever theparent header was the previous fork's type; Prague through
Amsterdam now accept the previous fork's header (
PreviousHeaderunion), carrying excess across fork boundaries as mainnet did at
Prague and as the fixtures expect. Pre-blob parents still reset.
bpo3/bpo4/bpo5blob schedules were stale BPO2 placeholders,disagreeing with the framework schedule in this repo
(
execution_testing.forks); constants aligned (BPO3 21/32,update fractions 20609697 / 13739630).
Verified against the
glamsterdam-devnet@v8.1.0release: all 79,564collectable engine tests and all 79,564 enginex tests — every fork and
all nine transition forks — pass through the exact consume simulator
sequences (real
EngineRPC/EthRPCclients, JWT, rewind probe,per-test reorgs): 159,128 executions, zero failures. In real hive:
consume-engine 136/136, consume-enginex 1030/1030, and a multi-fork
Cancun/Prague/transition smoke (2,462 tests, zero failures), plus ~49k
further clean executions across interrupted full runs.
Follow-up (hive repo): ethereum/hive#1596 adds the
clients/eelsdefinition; ethpandaops/hive-tests#78 wires it into the devnet-8
workflows with the same limits as every other client.
Related Issues or PRs
N/A.
Checklist
just static<type>(<area>): <title>, where<type>and<area>come from an appropriateC-<type>, respectivelyA-<area>, label. The title should match the target squash commit message.Cute Animal Picture