feat!: disambiguate EVM-semantic and raw caller/self addresses for precompiles #211
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
Provides precompiles with unambiguous access to contextual addresses, without the consumer needing to understand how they change under different call types.
How this works
The
libevm.AddressContext
type, which used to carry 3 addresses, now provides different versions ofCaller
andSelf
. The EVM-semantic versions are as defined by the rules of the EVM (and available before this change). The raw versions are the unmodified caller and self.How this was tested
Extension of existing UTs to include raw addresses in addition to existing, EVM-semantic ones.