EVMC – Ethereum Client-VM Connector API

ABI version 12

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.



The EVMC project uses Semantic Versioning. The version format is MAJOR.MINOR.PATCH.

The MAJOR version number is also referenced as the EVMC ABI version. This ABI version is available to VM and Host implementations by EVMC_ABI_VERSION. For example EVMC 3.2.1 would have ABI version 3 and therefore this project release can be referenced as EVMC ABIv3 or just EVMC 3. Every C ABI breaking change requires increasing the MAJOR version number.

The releases with MINOR version change allow adding new API features and modifying the language bindings API. Backward incompatible API changes are allowed but should be avoided if possible.

The releases with PATCH should only include bug fixes. Exceptionally, API changes are allowed when required to fix a broken feature.


  • EVMC – the main component that defines API for VMs and Clients (Hosts).
  • EVMC C++ API – the wrappers and bindings for C++.
  • EVMC Loader – the library for loading VMs implemented as Dynamically Loaded Libraries (DLLs, shared objects).
  • EVMC Helpers – a collection of utility functions for easier integration with EVMC.
  • EVM Instructions – the library with collection of metrics for EVM1 instruction set.
  • EVMC VM Tester – the EVMC-compatibility testing tool for VM implementations.

Language bindings


import "github.com/ethereum/evmc/bindings/go/evmc"