pub fn compute_block_trie_changesets<Provider>(
provider: &Provider,
block_number: u64,
) -> Result<TrieUpdatesSorted, ProviderError>where
Provider: DBProvider + StageCheckpointReader + ChangeSetReader + StorageChangeSetReader + BlockNumReader,Available on crate features
trie and trie-db only.Expand description
Computes trie changesets for a block.
§Algorithm
For block N:
- Query cumulative
HashedPostStaterevert for block N-1 (from db tip to after N-1) - Use that to calculate cumulative
TrieUpdatesrevert for block N-1 - Query per-block
HashedPostStaterevert for block N - Create prefix sets from the per-block revert (step 3)
- Create overlay with cumulative trie updates and cumulative state revert for N-1
- Calculate trie updates for block N using the overlay and per-block
HashedPostState. - Compute changesets using the N-1 overlay and the newly calculated trie updates for N
§Arguments
provider- Database provider with changeset accessblock_number- Block number to compute changesets for
§Returns
Changesets (old trie node values) for the specified block
§Errors
Returns error if:
- Block number exceeds database tip (based on Finish stage checkpoint)
- Database access fails
- State root computation fails