evm 0.9.4

Ethereum Virtual Machine implementation in Rust. Nightly version of SputnikVM.
Documentation
# evm-rs: Rust Ethereum Virtual Machine Implementation

evm-rs is an Ethereum Virtual Machine implementation, and is the
nightly version of
[SputnikVM](https://github.com/ethereumproject/sputnikvm). It is also
one of the implementation that supports the [ethoxy
specs](https://github.com/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]https://source.that.world/source/ethereum-rs -
  common traits and structs for Ethereum. Nightly development branch
  of [etcommon-rs]https://github.com/ethereumproject/etcommon-rs
  and support branch for evm-rs.
* [etclient]https://source.that.world/source/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

* [Latest release documentation]https://docs.rs/evm

## Build from sources

SputnikVM is written Rust. If you are not familiar with Rust please
see the
[getting started guide](https://doc.rust-lang.org/book/getting-started.html). 

### Build 

To start working with SputnikVM you'll 
need to install [rustup](https://www.rustup.rs/), 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]/jsontests: This uses part of the Ethereum
  [tests]https://github.com/ethereumproject/tests. Those tests
  currently does not have good coverage for system operation
  opcodes. Besides, some tests are incorrect so they are disabled.
* [regtests]/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]https://github.com/ethereumproject/sputnikvm/wiki/Building-and-Testing
  for how to reproduce the regression tests.
  
To learn more about building SputnikVM from source please read wiki page
 [Building and Testing](https://github.com/ethereumproject/sputnikvm/wiki/Building-and-Testing)  

## License

Apache 2.0