-
Notifications
You must be signed in to change notification settings - Fork 474
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update gas metering for calls to empty accounts #1774
Conversation
Thanks for the PR! Just as an update, we're interested in merging this, but we've introduced a test regression that we're trying to eliminate before merging other PRs. You can track the progress of that here: #1776 |
@ehennenfent thanks for the update. I can write some tests for it in the meantime, but it looks like most of the evm tests rely on the Ethereum VM test suite. My assumption is this isn't covered because the vm tests replace call execution with the So, are python tests preferred for EVM changes, or additional GST-style tests? |
The particular style tests are written in doesn't matter so much as the time it takes to run them - in particular, we don't want to push the time for one build step above ~40m. Assuming that Python tests are easier, you could put them in |
Hey there! We've fixed #1776 so I wanted to check in again. It looks like all this needs is a small regression test to ensure that gas is calculated correctly for the |
Sorry I lost track of this a bit, but will add a test this week. |
@ehennenfent happy to make any changes or updates you can suggest. It doesn't seem like this branch is the source of the CI failures, but I can rebase or dig into the issue as well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updating from master
fixed the CI failures, so I suspect it was the coveralls permissions issue we encountered last week. This looks good to me. Thanks for the PR!
* master: Change types.FunctionType=<class 'function'> (#1803) Fix test regressions (#1804) State Introspection API (#1775) Fix EVM account existence checks for selfdestruct and call (#1801) Add partial implementation of sendto syscall (#1791) crytic-compile: use latest release (#1795) Update gas metering for calls to empty accounts (#1774) Fix BitVec with symbolic offset and fix TranslatorSmtlib.unique thread safety (#1792) Fix Coveralls for external PRs (#1794) Convert plugin list to dict (#1781) Symbolic-length reads from symbolic sockets (#1786) Removing Thread unsafe global caching (#1788) Add Manticore native State-specific hooks (#1777)
* master: (43 commits) Syscall specific hooks (#2389) TUI Support Infrastructure (#1620) Fix coveralls upload (#2387) docs: fix simple typo, straigth -> straight (#2381) Attempt to allow symbolic balances from the start (#1818) Fix state.cpu.PC member (#1825) Bump black and mypy (#1824) Manticore 0.3.5 (#1808) Fix yices timeout argument (#1817) Detect default solver (#1820) Ignore Gas Calculations by Default (#1816) native/cpu/x86: Add support for CPUID EAX=80000000h (#1811) Change types.FunctionType=<class 'function'> (#1803) Fix test regressions (#1804) State Introspection API (#1775) Fix EVM account existence checks for selfdestruct and call (#1801) Add partial implementation of sendto syscall (#1791) crytic-compile: use latest release (#1795) Update gas metering for calls to empty accounts (#1774) Fix BitVec with symbolic offset and fix TranslatorSmtlib.unique thread safety (#1792) ...
Addresses #1773, but is in need of some tests still.
Also, it brings up the related question of determining account existence. EIP-161 defines an account as "empty when it has no code and zero nonce and zero balance." I'm not sure if existence in
EVM.world.accounts
ends up having the same meaning or not.