evm 0.7.0

Ethereum Virtual Machine implementation in Rust. Alias of SputnikVM.

SputnikVM: A Blockchain Virtual Machine

Build Status License Cargo

SputnikVM is an implementation of an Ethereum Virtual Machine. It aims to be an efficient, pluggable virtual machine for different blockchains.

We encourage all Ethereum'esque blockchains to adopt SputnikVM, and to make use of SputnikVM's RFC governance project which governs the parameters of each blockchain's VM. This way we can draw from the experience of the community and learn from other proposed RFCs.

Reasoning

RFC Advancement: As the Ethereum Classic Request For Comment (RFC) process advances, it'll become harder for the many and varied Ethereum Classic clients to keep up with these changes.

Having the Virtual Machine in library form allows us as a community to cooperate and focus expertise on one VM. Clients that use SputnikVM will have a larger community of users that'll be able to navigate the problem domain at a much faster pace than an Ethereum Classic client that chooses to implement and maintain their own virtual machine.

Licensing: Unless a business is specifically setup to earn money from supporting code, it becomes hard for that business to use GPLv3 licensed code, as the GPLv3 requires them to GPLv3 sublicense any source code that links to a GPLv3 Ethereum Virtual Machine.

SputnikVM is licensed under the Apache 2 License. Businesses may use the VM without relicensing their code. Copyright is spread throughout the community, meaning the code isn't easily susceptible to corporate hijacking and relicensing thereafter. It's requested that if you use this code, you give proper acknowledgement, and we also encourage you to send patches upstream. Please don't develop in the dark.

Accessiblity: Most Ethereum Virtual Machines are tied up and buried in an Ethereum Client implemenation, forcing you to use their Virtual Machine.

We've deliberately designed SputnikVM to be portable and accessible in different ways. This will encourage Ethereum Classic clients to use SputnikVM as their Virtual Machine. The methods of access are:

  • Rust crate
  • Foreign Function Interface
  • Socket connection
  • Command Line Interface

Dependencies

Ensure you have at least rustc 1.16.0 (30cf806ef 2017-03-10). Rust 1.15.0 and before is not supported.

Build Instructions

SputnikVM is written Rust. If you are not familiar with Rust please see the getting started guide.