Need help with evmc?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

170 Stars 85 Forks Apache License 2.0 1.6K Commits 42 Opened issues


EVMC – Ethereum Client-VM Connector API

Services available


Need anything else?

Contributors list


chat: on gitter readme style: standard

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.



Please visit the documentation.

Languages support

| Language | Supported Versions | Supported Compilers | Feature Support | ----------------------------- | --------------------- | ------------------------------ | ------------------- | C | C99, C11 | GCC 7+, clang 5+, MSVC 2017+ | Host- and VM-side | C++ | C++17 | GCC 7+, clang 5+, MSVC 2017+ | Host- and VM-side | Go (bindings) | 1.11 - 1.14 (modules) | | Host-side only | Rust (bindings)¹ | 2018 edition | 1.37.0 and newer | VM-side only | Java (bindings)² | 11 | | Host-side only

  1. Rust support is limited and not complete yet, but it is mostly functional already. Breaking changes are possible at this stage.
  2. Java support is in progress and the interface remains in flux. Breaking changes are possible at this stage.

Testing tools

  • evmc run (tools/evmc) — executes bytecode in any EVMC-compatible VM implementation.
  • evmc-vmtester (tools/vmtester) — can test any EVM implementation for compatibility with EVMC.
  • evm-test (evmone → test/unittests) — allows running the collection of evmone's unit tests on any EVMC-compatible EVM implementation.
  • evmone-fuzzer (evmone → test/fuzzer) — differential fuzzer for EVMC-compatible EVM implementations.

Related projects




See also the list of EVMC Authors.


chat: on gitter

Talk with us on the EVMC Gitter chat.


license badge

Licensed under the Apache License, Version 2.0.


Making new release

  1. Update, put the release date, update release link.
  2. git add
  3. Tag new release:
    bumpversion --allow-dirty prerel
  4. Prepare CHANGELOG for next release: add unreleased section and link.
  5. git add
  6. Start new release series:
    bumpversion --allow-dirty --no-tag minor

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.