The EVM module allows unmodified EVM code to be executed in a Substrate-based blockchain.
- evm::Config
The EVM module uses SputnikVM
as the underlying EVM engine. The engine is overhauled so that it's modular
.
There are a separate set of accounts managed by the EVM module. Substrate based accounts can call the EVM Module to deposit or withdraw balance from the Substrate base-currency into a different balance managed and used by the EVM module. Once a user has populated their balance, they can create and call smart contracts using this module.
There's one-to-one mapping from Substrate accounts and EVM external accounts that is defined by a conversion function.
The EVM module should be able to produce nearly identical results compared to the Ethereum mainnet, including gas cost and balance changes.
Observable differences include:
We currently do not aim to make unobservable behaviors, such as state root, to be the same. We also don't aim to follow the exact same transaction / receipt format. However, given one Ethereum transaction and one Substrate account's private key, one should be able to convert any Ethereum transaction into a transaction compatible with this module.
The gas configurations are configurable. Right now, a pre-defined Istanbul hard fork configuration option is provided.
License: Apache-2.0