mirror of https://github.com/status-im/evmc.git
1.7 KiB
1.7 KiB
EVMC – Ethereum Client-VM Connector API
The EVMC is the low-level ABI between Ethereum Virtual Machines (EVMs) and Ethereum Clients. On the EVM-side it supports classic EVM1 and eWASM. On the Client-side it defines the interface for EVM implementations to access Ethereum environment and state.
Modules
- [EVMC](@ref EVMC) – the main component that defines API for VMs and Clients (Hosts).
- [EVMC Loader](@ref loader) – the library for loading VMs implemented as Dynamically Loaded Libraries (DLLs, shared objects).
- [EVMC Helpers](@ref helpers) – a collection of utility functions for easier integration with EVMC.
- [EVM Instructions](@ref instructions) – the library with collection of metrics for EVM1 instruction set.
- [EVMC VM Tester](@ref vmtester) – the EVMC-compatibility testing tool for VM implementations.
@addtogroup EVMC
Terms
- VM – An Ethereum Virtual Machine instance/implementation.
- Host – An entity controlling the VM. The Host requests code execution and responses to VM queries by callback functions. This usually represents an Ethereum Client.
Responsibilities
VM
- Executes the code (obviously).
- Calculates the running gas cost and manages the gas counter except the refund counter.
- Controls the call depth, including the exceptional termination of execution in case the maximum depth is reached.
Host
- Provides access to State.
- Creates new accounts (with code being a result of VM execution).
- Handles refunds entirely.
- Manages the set of precompiled contracts and handles execution of messages coming to them.