[WIP] fix(fuzz): strip metadata when collecting push bytes #8139
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.
Motivation
Closes #8115
When we collect values from push bytes we don't strip metadata from contract bytecode. This results in irrelevant values added to fuzz dictionary and it also affects
forge snapshot
(each time an comment is added / removed the snapshot values are changed)Would be nice to have such method for getting bytecode without metadata in
Bytecode
revm primitives (and use in verify code as well)Solution
original_byte_slice
(prev we were usingbytes_slice
which is padded with 32 zero bytes) and then remove metadataTBD: should we ignore these addresses? check should be preserved in order to avoid panics from other edge cases
SnapshotTest
contract (test is too big to be included as unit test and I wasn't able to simplify it and reproduce issue)