core/forkid: correctly compute forkid when timestamp fork is activated in genesis #27895
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.
There is an issue with how we compute forkid values for networks where a time-based fork is activated in genesis. Currently, we have no in
forkid.NewID
to determine the genesis' timestamp and per EIP-6122:However, since the
NewID
function cannot know the timestamp of the genesis block, it is unable to differentiate the case where a time-base fork activation is equal to the time of genesis and correctly skip the block.Here is an example
genesis.json
:genesis.json
Before this change, it would output a forkid of
0xa614adaf 1690476041
. Now it outputs0x06278388 1690476041
. The forkid calculation to get these values is:Therefore this PR correctly skips applying time-based forks to the forkid hash when the fork is already active in genesis.