eth/downloader: remove header rollback mechanism #668
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 pull request removes the rollback mechanism in downloader.
Originally, this mechanism is tailored for Proof-of-Work consensus engine, which does PoW verification randomly. Therefore, whenever sync process exits abnormally, a part of tip headers will be removed for safety consideration.
In terms of Proof-of-Stake(also for Proof-of-Authority), each header is verified one by one, there is no reason to rewind the written headers which are certainly valid.
And another big reason for removing this additional mechanism is: inside of Rollback, the genesis state may be committed. It results in a weird scenario that persistent state is both modified by the Rollback function and also the state syncer. The concurrent state write will result in a corrupted state eventually, should be avoided in the first place.
This is partially cherry-pick: ethereum/go-ethereum#28147