fix(levm): initialization of transient storage #1540
+26
−25
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
Each time we moved to a new context, we were overwriting the previous transient storage. Also add a check in
tstore
to see if thetx
is static.Description
CallFrame::new()
. Now we can send the current value oftransient_storage
to the subcontext.tstore
if thetx
is static. In that case it must returns an error.We can also think about moving the
TransientStorage
fromCallFrame
to theEnvironment
, since it is a storage of the tx.Reference
EIP-1153: If the TSTORE opcode is called within the context of a STATICCALL, it will result in an exception instead of performing the modification. TLOAD is allowed within the context of a STATICCALL.