fix: recompute context digests using provided valRoot #16024
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.
This change fixes ContextByteVersionsForValRoot to actually respect the supplied genesis validators root when computing RPC context digests, instead of using the precomputed digests bound to BeaconConfig().GenesisValidatorsRoot. The fork digest per the consensus spec depends on (fork_version, genesis_validators_root), and since callers pass a concrete root (e.g., from startup clock or backfill origin), using the wrong root leads to unrecognized fork digest errors during RPC decoding. The implementation now recomputes the digest for each network schedule entry via ForkData.HashTreeRoot and, for Fulu and later, applies the same BPO mixing (XOR with hash of BPOEpoch and MaxBlobsPerBlock) as in params.entryWithForkDigest. This aligns behavior with the spec, honors caller intent, and prevents mismatches when the effective genesis root differs from the active config’s root, without impacting normal configurations where they are the same.