mirror of https://github.com/status-im/evmc.git
EVMC – Ethereum Client-VM Connector API
https://evmc.ethereum.org
1eac158237 | ||
---|---|---|
bindings | ||
cmake | ||
docs | ||
examples | ||
include/evmc | ||
lib | ||
test | ||
tools | ||
.bumpversion.cfg | ||
.clang-format | ||
.clang-tidy | ||
.codespell-whitelist | ||
.gitignore | ||
.travis.yml | ||
AUTHORS.md | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
CNAME | ||
Cargo.toml | ||
Doxyfile | ||
LICENSE | ||
README.md | ||
appveyor.yml | ||
circle.yml | ||
codecov.yml |
README.md
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 6+, clang 3.8+, MSVC 2015+ | Host- and VM-side |
C++ | C++11, C++14, C++17 | GCC 6+, clang 3.8+, MSVC 2015+ | Host- and VM-side |
Go (bindings) | 1.9 - 1.12 | 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.
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
EVMs
- aleth-interpreter
- evmjit
- evmone
- Hera
- Hera.rs
- Daytona
- eip1962-evmc (EIP-2003 style precompile)
Clients
- aleth
- nim-evmc
- go-ethereum (in progress)
- pyevm (in progress)
- pyethereum (abandoned)
- Solidity (for integration testing)
Maintainers
See also the list of EVMC Authors.
Contributing
Talk with us on the EVMC Gitter chat.
License
Licensed under the MIT License.
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
.