fix: add Prysm v7 config keys to the mainnet chain config - #26
Open
inf-1oop wants to merge 1 commit into
Open
Conversation
networks/mainnet/config.yml sets PRESET_BASE: mainnet, so every key it does not define is inherited from Ethereum mainnet. Prysm v7 added three settings that Vana's config never overrides, and each inherited default breaks a Vana node in a different way: - FULU/GLOAS fork versions inherit 0x06000000/0x07000000, which collide with Ethereum's own registered config, so the node refuses to start. - SLOT_DURATION_MS inherits 12000 and takes precedence over SECONDS_PER_SLOT, so the node does 12s/slot arithmetic on a 6s chain and dies with "invalid payload timestamp". - BLOB_SCHEDULE inherits Ethereum's BPO forks at epochs 412672/419072, which reuse the preceding fork's digest because Fulu is disabled. That halts Prysm's allTopics() fork-schedule walk, leaving Capella/Deneb out of the gossip allowlist so every gossip topic is refused. Verified on a live mainnet node running Prysm v7.1.8: sync distance 0, fork 0x20000093 (Deneb), no gossip rejections. genesis_validators_root and the Deneb fork digest are unchanged. Also verified backward compatible with Prysm v5.1.0, which logs the new keys as unknown fields and continues. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Problem
networks/mainnet/config.ymldeclaresPRESET_BASE: mainnet, so every key it does not define is inherited from Ethereum mainnet. Prysm v7 added three settings this config never overrides, and each inherited default breaks a Vana node in a different way — two of them silently.FULU_FORK_VERSION/GLOAS_FORK_VERSION0x06000000/0x07000000version 0x06000000 for fork fulu in config vana conflicts with existing config named=mainnetSLOT_DURATION_MS12000SECONDS_PER_SLOTfor all slot timing → 12s/slot arithmetic on a 6s chain → FATALinvalid payload timestampBLOB_SCHEDULEOn
BLOB_SCHEDULEspecificallyA BPO entry only receives a distinct fork digest when its epoch is at or after
FULU_FORK_EPOCH. Fulu is disabled here, so Ethereum's BPO entries instead reuse the preceding fork's digest — and since 412672/419072 fall between Bellatrix (epoch 2) and Capella/Deneb (503609), they carry Bellatrix's digest.Prysm's
allTopics()walks the fork schedule terminating onnext.ForkDigest != last.ForkDigest, so the repeated digest halts the walk before Capella/Deneb. The allowlist ends up with 221 topics and no78ba1733(the live Deneb digest), sopubsubrefuses everything withtopic is not allowed by the subscription filter.This one is the nastiest to diagnose: the node still starts and follows the chain by range sync, so it looks alive. It just participates in nothing — no gossip, and a sync distance that drifts instead of sitting at 0.
Verification
Tested on a live Vana mainnet node running Prysm v7.1.8:
invalid payload timestamp, then (afterSLOT_DURATION_MS) a running-but-gossip-dead node with sync distance drifting 2→17 and block arrival at 7–13s.Consensus-safety checks:
genesis_validators_rootunchanged:0x7a2ee1f3a4332b8a3229efd4cba0903049bc8b1e7cd1fe46052e320cf3f6d184current_version 0x20000093, head block versiondeneb0x78ba1733MaxBlobsPerBlockAtEpoch()at the current epoch is 6 both before and after — the inherited BPO entries were superseded by Deneb, so emptying the schedule changes no blob limitBackward compatible with Prysm v5.1.0: it logs the six new lines as unknown fields (
field FULU_FORK_VERSION not found in type params.BeaconChainConfig, etc.) and continues normally. Operators who have not upgraded are unaffected apart from that one log line.Not included:
networks/moksha/config.ymlMoksha is missing all four keys too and will hit the same class of problem on v7. I have deliberately left it out because I could not test it, and it is not a copy-paste of this change:
ELECTRA_FORK_VERSION: 0x60000038, not the0x2000009xseries), so Fulu/Gloas versions need a deliberate choice.Worth a follow-up from someone who can run a Moksha node.