Spacemesh Virtual Machine
- 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
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
rocksdb can't have parallel isolated connections to the same database (directory).
That's why we ask
cargo to run the tests serially (
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
- Contract-to-Contract calls
- Storage Data-Structures
- Events with expiration
- Contract dependencies