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.
Usage
Documentation
Please visit the documentation.
Languages support
| Language |
Supported Versions |
Supported Compilers |
Feature Support |
| C |
C99, C11 |
GCC 8+, clang 9+, MSVC 2017+ |
Host- and VM-side |
| C++ |
C++17 |
GCC 8+, clang 9+, MSVC 2017+ |
Host- and VM-side |
| Go (bindings) |
1.11+ (with modules) |
|
Host-side only |
| Rust (bindings)¹ |
2018 edition |
1.47.0 and newer |
VM-side only |
| Java (bindings)² |
11 |
|
Host-side only |
- ↑ Rust support is limited and not complete yet, but it is mostly functional already. Breaking changes are possible at this stage.
- ↑ 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.
Related projects
EVMs
- aleth-interpreter
- Daytona
- eip1962-evmc (EIP-2003 style precompile)
- evmjit
- evmone
- Hera
- Hera.rs
- ssvm-evmc
Clients
- aleth
- core-geth (in progress)
- erigon (with silkworm)
- evmc-js
- go-ethereum (in progress)
- nim-evmc
- phant (in progress)
- pyevm (in progress)
- pyethereum (abandoned)
- rust-ssvm (Rust Host-side)
- silkworm
- Solidity (for integration testing)
Maintainers
- Alex Beregszaszi @axic
- Paweł Bylica @chfast
See also the list of EVMC Authors.
Contributing
Talk with us on the EVMC Gitter chat.
License
Licensed under the Apache License, Version 2.0.
Internal
Making new release
- Update CHANGELOG.md, put the release date, update release link.
git add CHANGELOG.md.
- Tag new release:
bumpversion --allow-dirty prerel.
- Prepare CHANGELOG for next release: add unreleased section and link.
git add CHANGELOG.md.
- Start new release series:
bumpversion --allow-dirty --no-tag minor.