use VoteState::deserialize() everywhere #35079
Closed
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
in #34829 and #34972 we implemented
VoteState::deserialize_into()
, a custom parser intended to be suitable for usage in a bpf context. we want to use the new parser everywhere because, with some optimizations, it is 7-20x faster than bincode depending on the inputit also uses half as much memory for
V1_14_11
because conversion toCurrent
happens during parsingSummary of Changes
use
VoteState::deserialize_into()
as the new implementation forVoteState::deserialize()
. we also remove the check forprior_voters
sparsity that wouldnt exist in bincode and remove unnecessary uses ofserialized_size()
which drastically improve runtimeonce approved, this wont be merged immediately. the plan is to cherrypick the new parser into a 1.17 codebase and run that as a validator on mainnet for a few epochs to confirm everything works well
more detail in issue (fixes #35101)