Persist stateless block in AVM state #1305
Merged
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.
Why this should be merged
We expect the AVM state to only reference stateless blocks. Currently we can wrap the same block multiple times or reference a stateful block when we expect it to be stateless. This isn't actually a correctness issue... But can cause unnecessary memory pressure + unnecessary function calls + unexpected json serialization.
How this works
Persist the stateless block rather than the stateful block during verification.
How this was tested
Added unit test that was failing and now passes. Also manually replicated the incorrect API behavior and verified it doesn't happen on this version.