opt: [BREAKING] use twox_64 for bucket hashing #788
Merged
+27
−10
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.
A seeded twox is suitable for this purpose - each node will have its own map. While it may be possible to convince publicly-accessible RPC nodes to leak information that enables a HashDoS, it seems unlikely for sequencers to leak it.
Furthermore, the complexity of such an attack is limited by the fact that the inputs are Page IDs. In order to write to a particular page ID, the attacker would first need to create accounts (against a cryptographic hash function) that land in those pages.
Computing the blake3 hash of each written bucket was quite CPU-intensive, and so using twox ought to be much faster.