-
Notifications
You must be signed in to change notification settings - Fork 310
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
(core-geth:EVMCv10) evmone fails GeneralStateTests/stRandom/randomStatetest153.json #675
Comments
I figured this one out. It was the RationaleEVMOne trace output via
Middle; a comparison of EVMOne and native traces.
Native trace.
We discovered and fixed, then, a subsequent and unrelated issue with the way core-geth implemented the EIP2200 |
Context
Core-Geth has supported EVMCv7 for a while, and now we're upgrading (finally) to EVMCv10.
Problem
To test core-geth's support of the EVMC
host
interface, we run the cross-client state testswith a configured external interpreter.
go test -v ./tests -run State -vm.evm=path/to/libevmone.so
evmone
, we see a great many test failures.hera
, we see no failures; everything passes.We've taken
stRandom/randomStatetest153.json
as an example, and have created a minimal testfocused on debugging the problem.
This test is in the bespoke development branch at
evmc/evmc_test.go
, and can be run with:go test -v ./evmc
This test/program runs the state test against the native, hera, and evmone interpreters and compares
the results, comparing state dumps in case of mismatches.
The problem in our isolated test case is that
evmone
appears to fail to assign storage properly (viaSSTORE
),resulting in a mismatched storage state (and balance!) and, of course, state root hashes.
It passes a zero-value
value
to the host interface methodSetStorage
instead of0x20000
.The test result, comparing a natively-executed state dump (left), with the state from the
evmone
execution (right):The contract:
Questions
evmc
issue? Or anevmone
issue?Notes
The EVMC flag is also available in other application contexts provided by the repo.
Core-Geth has some install scripts that can be convenient for installing and testing external interpreters.
Reproduce issue
cc @ziogaschr
The text was updated successfully, but these errors were encountered: