blockchain: Validate early final state is zero. #1031
Merged
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 modifies the
checkBlockHeaderSanity
function to include an additional check which ensures the final state is zero prior to stake validation height.It should be noted that this is technically a hard fork since before this change it was possible to use any value for the final state prior to stake validation height. However, no blocks on mainnet nor testnet ever used non-zero final states for blocks in that range and they are buried behind checkpoints in the minimum required version of the software due to the previous consensus votes, so it isn't possible to trigger a reorg that would fork old nodes off the network anyways, so it is safe to retroactively apply this check.
It also adds tests for the new consensus check which ensures the final state is zero prior to stake validation height to the
fulllblocktests
in order to ensure correctness.