core/rawdb: fix transaction indexing/unindexing hashing error #22457
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.
In reference to #22453
While investigating that, I found that the transaction indexer / unindexer used a shortcut to do hashing: writing the raw
rlp
into the hasher, without going via object-form. This is a neat trick to save some cycles, however, due to the new hashing format of typed transaction, it does not produce correct hashes any longer.This PR therefore changes that, removes the use of rlp-direct-to-hasher and instead parses the full object form of the block body, and afterwards does a full hashing. The
rlp.ListIterator
is currently still left in there, perhaps we want to revisit that optimization later and reapply it.This PR also adds better log output, so we can see what blocks are causing problems.