Generate receipt roots in runBlock #1037
Closed
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.
Hey guys,
We found a bug in Hardhat network yesterday, that IMO is a bug in
ethereumjs-vm
, so I fixed it :)I think that if a user calls
vm.runBlock
with thegenerate: true
, is because they don't want to validate the block but to modify the state and update (generate
) the fields of the block header that can only be computed after executing the txs. If this is the actual intention, thenblock.header.receiptTrie
was missing.This PR just updates that header field, and adds a test for it.
Also, as you can see in the test, using
runBlock
withgenerate: true
is really really inconvenient. I don't get why the newBlock
wasn't added toRunBlockResult
. You can only access it with an event listener. The good news is that adding it is a backwards compatible change. Should I create a PR doing it?