EVM/Kernel: ensure transaction integrity
Context
Fixes #6378 (closed) & #5375 (closed).
This MR will prevent transaction substitution and sending multiple transactions with the same hash but different data.
For simple "small" transaction the fix is simple, we just need to check if the transaction hash correspond to the produced hash in the kernel from the sent data.
For chunked transactions is a bit trickier we need to announce all the chunk hashes before and then we retrieve them one by one by checking their content in the same way we did for straight transactions.
Manually testing the MR
Existing tezt tests and readapted unit tests from the kernel should be enough.
Checklist
-
Document the interface of any function added or modified (see the coding guidelines) -
Document any change to the user interface, including configuration parameters (see node configuration) -
Provide automatic testing (see the testing guide). -
For new features and bug fixes, add an item in the appropriate changelog ( docs/protocols/alpha.rstfor the protocol and the environment,CHANGES.rstat the root of the repository for everything else). -
Select suitable reviewers using the Reviewersfield below. -
Select as Assigneethe next person who should take action on that MR
Edited by Rodi-Can Bozman