Implement CachedValidatorsBeaconState #1816
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.
resolves #1789
Goal
validatorsinsideTreeBackedstructure takes a significant timevalidatorsarray after the 1st loop, use it in lodestar-state-transition only. Note that when processing epoch, we always have to do the loop to prepare EpochProcess.TreeBacked<BeaconState>validatorsif we have itTrade off
setValidator,addValidator,getValidatorapi in state transition instead of accessingvalidatorsdirectly. I guess we can enforce it at compile time usingOmit<BeaconState, "validators">or something if we want to.Performance gain with 100k validators as in Pyrmont/Medalla
Test
Memory
Although the performance is improved, I'd like to have everyone review to see if we have any potential issues with this approach. Thanks!