evm-rs: Rust Ethereum Virtual Machine Implementation
evm-rs is an Ethereum Virtual Machine implementation, and is the
nightly version of
SputnikVM. It is also
one of the implementation that supports the ethoxy
specs initiative.
Features
- Partially verified (WIP) - use various verification techniques to
partially verify the correctness of functions.
- Nightly - take advantage of Rust nightly features, such as
compiler plugins
- Standalone - can be launched as an independent process or integrated into other apps
- Universal - supports different Ethereum chains, such as ETC, ETH or private ones
- Stateless - only an execution environment connected to independent State storage
- Fast - main focus is on performance
- IoT compatible - designed to support hardware used in embedded devices
- written in Rust, can be used as a binary, cargo crate or shared
library
Related projects
- ethereum-rs -
common traits and structs for Ethereum. Nightly development branch
of etcommon-rs
and support branch for evm-rs.
- etclient -
bare-minimal Ethereum client written in Rust.
Dependencies
Ensure you have at least rustc 1.16.0 (30cf806ef 2017-03-10)
. Rust 1.15.0 and
before is not supported.
Documentation
Build from sources
SputnikVM is written Rust. If you are not familiar with Rust please
see the
getting started guide.
Build
To start working with SputnikVM you'll
need to install rustup, then you can do:
lang=bash
$ git clone git@github.com:ethereumproject/sputnikvm.git
$ cd sputnikvm
$ cargo build --release --all
Testing
We currently use two ways to test SputnikVM and ensure its execution
aligns with other Ethereum Virtual Machine implementations:
- jsontests: This uses part of the Ethereum
tests. Those tests
currently does not have good coverage for system operation
opcodes. Besides, some tests are incorrect so they are disabled.
- regtests: A complete regression tests is done on the
Ethereum Classic mainnet from genesis block to block 4 million. Some
of the previously failed tests are also integrated into Rust's test
system. See
wiki
for how to reproduce the regression tests.
To learn more about building SputnikVM from source please read wiki page
Building and Testing
License
Apache 2.0