Repository navigation
feat: add EIP-8198 quick slots params - #1491
Merged
Merged
Conversation
barnabasbusa
marked this pull request as ready for review
September 28, 2026 13:16
ethereum-genesis-generator #322 renders SLOT_DURATION_SCHEDULE as given and expects it to start at genesis, so prepend the genesis entry ({epoch: 0, slot_duration_ms}) to the user's later changes. Egg 6.2.2 rejects an epoch-0 entry, so pin the default egg image to the #322 build (fix-slot-schedule-passthrough) until it is released. Claude-Session: https://claude.ai/code/session_01FHGmKoch9p52UXRqqUd8mq
There was a problem hiding this comment.
Summary
The PR adds EIP-8198 quick-slot support (eip8198_fork_epoch + slot_duration_schedule) and now sends the full schedule (epoch-0 entry from slot_duration_ms plus user entries) to ethereum-genesis-generator 6.2.3, whose entrypoint.sh expects exactly that contract — the bump to the released v6.2.3 tag resolves the earlier unreleased-image finding. Two previously reported validation issues remain: only the first schedule entry is tied to a network upgrade, and the Heze-dependency error message is misleading when Heze is disabled.
Issues
- 🟡
src/package_io/input_parser.star:145— Only the first slot_duration_schedule entry is checked against a network upgrade — see the thread on that line - 🟢
src/package_io/input_parser.star:109— Misleading error when Heze is not enabled — see the thread on that line
Reviewed @ ecdcd67c
"Everything fails, all the time." — Werner Vogels
qu0b
approved these changes
Oct 5, 2026
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.
Summary
Adds support for EIP-8198 (quick slots, ethereum/consensus-specs#5592) as a standalone feature fork on top of Heze.
The default
ethereum-genesis-generatorimage is bumped to6.2.3, which includes ethpandaops/ethereum-genesis-generator#321 and #322. Egg rendersSLOT_DURATION_SCHEDULEexactly as given, starting at genesis, and computes the EL fork times from it.New
network_paramseip8198_fork_epoch18446744073709551615EIP8198_FORK_EPOCH. The fork version isEIP8198_FORK_VERSION: 0xa3000038, following the package's0x?0000038pattern.slot_duration_schedule[]SLOT_DURATION_SCHEDULE. List only the changes after genesis; the package prepends the genesis entry{epoch: 0, slot_duration_ms: <slot_duration_ms>}.renders as
MIN_BLOB_DATA_RETENTION_MSis deliberately not a package param. Egg sets it from the preset, matching the spec:1572864000(~18 days) for mainnet and196608000(~2.3 days) for minimal. It can still be overridden throughextra_env.Sanity checks
Egg only renders what it's given, so
validate_slot_duration_schedulein this package checks:epochandslot_duration_mskeys, both integers.slot_duration_msis a positive multiple of1000, as EIP-8198 requires.> 0and strictly increasing. The genesis entry always comes fromslot_duration_ms.eip8198_fork_epoch. Slot duration may only change at a network upgrade, and a schedule without EIP-8198 enabled also fails this check.eip8198_fork_epoch >= heze_fork_epoch, since EIP-8198 is built on Heze.eip8198_fork_epochcan't be combined withframes_enabled, because that disables the Heze fork on the CL side.Other changes
constants.star,network_params.yamlandREADME.md..github/check-consensus-spec-values.pynow excludesEIP8198_FORK_VERSION/EIP8198_FORK_EPOCH, like the other testnet fork values.Testing
kurtosis lintis clean.kurtosis run --dry-runpasses for the valid configs, and each invalid case fails with its message.main) and a FOCIL EL (focil-devnet-0):amsterdamTime/bogotaTimematch the fork epochs.dora_params.image: ethpandaops/dora:bbusa-eip8198-slot-schedule) to follow the chain past the EIP-8198 fork.Known limitations
seconds_per_slot/slot_duration_msstill assumes the genesis slot duration after the EIP-8198 fork. That includes the mev-relaySEC_PER_SLOT, Nethermind's--Blocks.SecondsPerSlotand forky.https://claude.ai/code/session_01FHGmKoch9p52UXRqqUd8mq