Skip to content

Commit 4d8fe8a

Browse files
authored
Merge pull request #290 from ethereumproject/splix/readme
problem: not clear what is sputnikvm
2 parents be13e3c + 0eef40f commit 4d8fe8a

1 file changed

Lines changed: 44 additions & 43 deletions

File tree

README.md

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,67 +4,61 @@
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-
107
SputnikVM 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

1310
We encourage all Ethereum'esque blockchains to adopt SputnikVM, and to make use
1411
of SputnikVM's [RFC governance project](https://etcrfc.that.world/) which
1512
governs the parameters of each blockchain's VM. This way we can draw from the
1613
experience 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

5636
Ensure you have at least `rustc 1.16.0 (30cf806ef 2017-03-10)`. Rust 1.15.0 and
5737
before 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

6146
SputnikVM is written Rust. If you are not familiar with Rust please
6247
see 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

6963
We currently use two ways to test SputnikVM and ensure its execution
7064
aligns 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

Comments
 (0)