Closed HerbertJordan closed 1 month ago
I re-based this PR today to the latest version of develop and finally had some time to investigate the issue causing the CI tests to fail. The problem was caused by importing Tosca's reference geth
implementation which replaced the geth
interpreter implementation used by Aida through the go-ethereum-sonic
dependency. This lead to the wrong implementation to be tested.
This problem is fixed now in Tosca (see #632) and this PR passes the CI tests. To be sure that there are no further issues, I have two evaluations over the entire block range running on a server.
I had two complete test runs for aida-vm
with the geth
and evmzero
vm-impl for the full ~73M range and all verification steps passed.
Description
This PR adds support for switching between different transaction processor (aka EVM) implementations. The default option (named
aida
) is the implementation provided by Aida used so far to process transactions. Additional options may be gradually provided by a registry in Tosca.The aim of this change is to enable the development of an alternative EVM implementation, independent of the opera or go-ethereum code base.
Note for Reviewers
The PR includes 3 inter-dependent changes:
TxProcessor
, allowing to switch between Aida's and Tosca's implementation. This is mostly limited to theexecutor/transaction_processor.go
fileutils
directory and the parameter lists in the executiblesMakeLiveDbTxProcessor
andMakeArchiveDbTxProcessor
signatures to also potentially return an error; this had a ripple-down effect to some other utilities (e.g.MakeArchiveInquirer
) and numerous tests where this potential error needed to be handledThe recommended way to review this PR is to follow this order of added features.
Type of change
Please delete options that are not relevant.
TODO:
aida-vm
withaida
evm andgeth
interpreteraida-vm
withaida
evm andevmzero
interpreter