[EVM] Meaningful error message for eth_call balance override overflow #1783
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.
Describe your changes and provide context
If a user calls
eth_call
with a very high balance override, it isn't possible for us to actually set that address to uint256 max due to how our usei, wei logic works as well as a constraint we have that any intermediate balance must have at most 256 bits.Specifically, when we set balances in the statedb, we need to set so that the usei balance * 10^12 + 10^12 is less than uint256 max. However, there is no integer such that usei balance * 10^12 + 10^12 == uint256 max, so if the user wanted to actually do a balance override to uint256 max, we are not able to do so.
Therefore, the best can do is produce a meaningful error message when the balance overflows.
Testing performed to validate your change
unit test