Skip to content
🚀 💜 SVM - Spacemesh Virtual Machine
Rust WebAssembly C Other
Branch: develop
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Fix runtime-c examples/counter.c (#48) Dec 26, 2019
crates Generate friendly `Address` from String (#59) Jan 19, 2020
docs/assets README - explicit logo dimensions Oct 3, 2019
src SVM Applications (#52) Jan 7, 2020
.dockerignore Dockerfile - `COPY` optimization Oct 2, 2019
.gitignore adding workspace `Cargo.toml` of `svm` Aug 14, 2019 CODE_OF_CONDUCT Nov 5, 2019 + Nov 5, 2019
Cargo.lock `SVM` app initialisation (#58) Jan 19, 2020
Cargo.toml SVM Applications (#52) Jan 7, 2020
Dockerfile Dockerfile - `COPY` optimization Oct 2, 2019
LICENSE LICENSE Jun 30, 2019 SVM Applications (#52) Jan 7, 2020

build codecov license gitter

Spacemesh Virtual Machine

Project Goals

  • Self-contained. Should be hosted by the Spacemesh Golang full-node and future Spacemesh Rust full-node
  • Built on top of wasmer
  • Future compatible for the SMESH programming-language (the language is still in a research stage).


SVM depends on the single-pass compiler of wasmer which requires the rust nightly release channel. More information about installing rust nightly can be found here

Build & Tests

The SVM project is organized into a couple of crates. The root crate is called SVM and it's a workspace crate.

In order to build the SVM project crates at once and run their tests:

cargo +nightly build
RUST_TEST_THREADS=1 cargo +nightly test --all

If you want to build & test in release mode execute:

cargo +nightly build --release
RUST_TEST_THREADS=1 cargo +nightly test --all --release

Note: since leveldb and rocksdb can't have parallel isolated connections to the same database (directory). That's why we ask cargo to run the tests serially (RUST_TEST_THREADS=1).


In order to build the Docker image

docker build -t svm-build .

Then, for spawning a new container

docker run -it svm-build


  • Infrastructure (see the SVM article)
  • Gas metering
  • App-to-App calls
  • Storage Data-Structures
    • Array
    • List
    • Hash
    • Set
    • Sorted-Set
    • Strings
  • Events with expiration
  • App dependencies

Supported Operating-Systems

  • Mac
  • Linux
  • Windows

Got Questions?

You can’t perform that action at this time.