44[ ![ License] ( https://img.shields.io/badge/License-Apache%202.0-blue.svg )] ( ./LICENSE )
55[ ![ Cargo] ( https://img.shields.io/crates/v/sputnikvm.svg )] ( https://crates.io/crates/sputnikvm )
66
7- * [ Latest release documentation] ( https://docs.rs/sputnikvm )
8- * [ Unstable documentation] ( https://that.world/~docs/sputnikvm/sputnikvm )
9-
107SputnikVM is an implementation of an Ethereum Virtual Machine. It aims to be an
11- efficient, pluggable virtual machine for different blockchains.
8+ efficient, pluggable virtual machine for different Ethereum-based blockchains.
129
1310We encourage all Ethereum'esque blockchains to adopt SputnikVM, and to make use
1411of SputnikVM's [ RFC governance project] ( https://etcrfc.that.world/ ) which
1512governs the parameters of each blockchain's VM. This way we can draw from the
1613experience of the community and learn from other proposed RFCs.
1714
18- ## Reasoning
19-
20- __ RFC Advancement__ : As the Ethereum Classic Request For Comment (RFC)
21- process advances, it'll become harder for the many and varied Ethereum Classic
22- clients to keep up with these changes.
23-
24- > Having the Virtual Machine in library form allows us as a community to
25- cooperate and focus expertise on one VM. Clients that use SputnikVM will have a larger
26- community of users that'll be able to navigate the problem domain at a much
27- faster pace than an Ethereum Classic client that chooses to implement and
28- maintain their own virtual machine.
29-
30- __ Licensing__ : Unless a business is specifically setup to earn money from
31- supporting code, it becomes hard for that business to use _ GPLv3_ licensed
32- code, as the _ GPLv3_ requires them to _ GPLv3_ sublicense any source code that
33- links to a _ GPLv3_ Ethereum Virtual Machine.
34-
35- > SputnikVM is licensed under the Apache 2 License. Businesses may use the VM
36- without relicensing their code. Copyright is spread throughout the community,
37- meaning the code isn't easily susceptible to corporate hijacking and
38- relicensing thereafter. It's requested that if you use this code, you give
39- proper acknowledgement, and we also encourage you to send patches upstream.
40- Please don't develop in the dark.
41-
42- __ Accessiblity__ : Most Ethereum Virtual Machines are tied up and buried in an
43- Ethereum Client implemenation, forcing you to use their Virtual Machine.
44-
45- > We've deliberately designed SputnikVM to be portable and accessible in different
46- ways. This will encourage Ethereum Classic clients to use SputnikVM as their
47- Virtual Machine. The methods of access are:
48- >
49- > * Rust crate
50- > * Foreign Function Interface
51- > * Socket connection
52- > * Command Line Interface
15+ ## Features
16+
17+ * * Standalone* - can be launched as an independent process or integrated into other apps
18+ * * Universal* - supports different Ethereum chains, such as ETC, ETH or private ones
19+ * * Stateless* - only an execution environment connected to independent State storage
20+ * * Fast* - main focus is on performance
21+ * * IoT compatible* - designed to support hardware used in embedded devices
22+ * FFI, Protobuf and JSON interface
23+ * written in Rust, can be used as a binary, cargo crate or shared library
24+
25+ ## Related projects
26+
27+ * [ SputnikVM Dev] ( https://github.com/ethereumproject/sputnikvm-dev ) - SputnikVM instance for Smart Contract development,
28+ provides testing environment and mock for JSON RPC API
29+ * [ SputnikVM in Browser] ( https://github.com/ethereumproject/sputnikvm-in-browser ) - experimental version of SputnikVM
30+ compiled into WebAssembly, therefore can be launched in a browser on Node.js
31+ * [ SputnikVM for embedded devices] ( https://github.com/ethereumproject/sputnikvm-on-rux ) - experimental project to run on
32+ full functional EVM on embedded devices
5333
5434## Dependencies
5535
5636Ensure you have at least ` rustc 1.16.0 (30cf806ef 2017-03-10) ` . Rust 1.15.0 and
5737before is not supported.
5838
59- ## Build Instructions
39+ ## Documentation
40+
41+ * [ Latest release documentation] ( https://docs.rs/sputnikvm )
42+ * [ Unstable documentation] ( https://that.world/~docs/sputnikvm/sputnikvm )
43+
44+ ## Build from sources
6045
6146SputnikVM is written Rust. If you are not familiar with Rust please
6247see the
63- [ getting started guide] ( https://doc.rust-lang.org/book/getting-started.html ) .
48+ [ getting started guide] ( https://doc.rust-lang.org/book/getting-started.html ) .
6449
65- * [ Building and Testing ] ( https://github.com/ethereumproject/sputnikvm/wiki/Building-and-Testing )
50+ ### Build
6651
67- ## Testing
52+ To start working with SputnikVM you'll
53+ need to install [ rustup] ( https://www.rustup.rs/ ) , then you can do:
54+
55+ ``` bash
56+ $ git clone git@github.com:ethereumproject/sputnikvm.git
57+ $ cd sputnikvm
58+ $ cargo build --release --all
59+ ```
60+
61+ ### Testing
6862
6963We currently use two ways to test SputnikVM and ensure its execution
7064aligns with other Ethereum Virtual Machine implementations:
@@ -79,3 +73,10 @@ aligns with other Ethereum Virtual Machine implementations:
7973 system. See
8074 [ wiki] ( https://github.com/ethereumproject/sputnikvm/wiki/Building-and-Testing )
8175 for how to reproduce the regression tests.
76+
77+ To learn more about building SputnikVM from source please read wiki page
78+ [ Building and Testing] ( https://github.com/ethereumproject/sputnikvm/wiki/Building-and-Testing )
79+
80+ ## License
81+
82+ Apache 2.0
0 commit comments