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.
fillup_index
used to be our limit of hashes computed for each non-terminal Merkle path in a batched update. However, it didn't work reliably.fillup_index
limited tonext_index().trailing_ones()
was resulting infilled_subtrees
not being updated in case whenfillup_index
was 0.Incrementing it by 1, which we used to do, was a workaround which worked for the most cases in a sense of producing correct roots, but the non-terminal Merkle paths were incorrect - they contained one node too many.
Here we are introducing a different approach where we always iterate in
0..self.height
range, but we break the loop as soon as we encounter a node on the left. Before breaking the loop, we updatefilled_subtrees
. Therefore, bothfilled_subtrees
and all Merkle paths are correct.