In the past, users of Frontier have to compromise and choose between two different runners:
- Stack runner, which focuses on Ethereum compliance.
- Builtin runner, which has better Substrate interoperability.
The compromise is no more!
This PR removes the need of this compromise, and introduces a unified EVM runner that has both good Ethereum compliance and Substrate interoperability. This is done by generalizing the
evm crate to expose a concrete and “dumb”
StackState trait. Users of
evm now only need to implement
StackState trait, and can re-use all other call/create/transact logic in the executor, which has already passed EVM test suites. The
StackState in Substrate then uses Substrate’s storage transactional layer, which makes it suitable for any Substrate interoperability jobs.