| Name | Description | Crates.io | Documentation |
|--------------------|:---------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------:|
| evm | Core library for the Ethereum Virtual Machine | |
|
| evm-stateful | Merkle Trie stateful wrapper for SputnikVM |
|
|
| Network | Crates.io | Documentation |
|------------------|:---------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|
| Any Network | |
|
| Ethereum Classic |
|
|
| Ethereum |
|
|
| Ellaism |
|
|
| Ubiq |
|
|
| Expanse |
|
|
| Musicoin |
|
|
The core library has the initial four precompiled contracts embedded. To use the bn128 and modexp precompiled contracts introduced by the Byzantium hard fork, pull the following crates.
| Name | Description | Crates.io | Documentation |
|------------------------------|:----------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|
| evm-precompiled-bn128 | bn128 precompiled contracts | |
|
| evm-precompiled-modexp | modexp precompiled contracts |
|
|
Ensure you have at least rustc 1.33.0 (2aa4c46cf 2019-02-28)
. Rust 1.32.0 and
before is not supported.
SputnikVM is written Rust. If you are not familiar with Rust please see the getting started guide.
To start working with SputnikVM you'll need to install rustup, then you can do:
bash
$ git clone git@github.com:ethereumproject/evm-rs.git
$ cd evm-rs
$ cargo build --release --all
We currently use two ways to test SputnikVM and ensure its execution aligns with other Ethereum Virtual Machine implementations:
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.
To run all tests, execute the following command in the cloned repository:
bash
$ cargo test --all
Formatting policies are described in GUIDE.md, and the recommended automated formatting techniques may be found at FORMATTING.md
Apache 2.0