The primary objective of this project was to bring the Ethereum flavored WebAssembly (EWASM) runtime to Substrate. It enables developer collaboration between the Ethereum and Polkadot/Substrate ecosystems, and promotes inter-blockchain interoperability at the application level. You can now create a Substrate node (or Polkadot parachain) that supports the deployment and execution of EWASM smart contracts.
The project has a few components and dependencies.
- The EWASM Test Guide shows how to use the official EWASM test suite to verify the SSVM EWASM engine.
- The rust-ssvm project provides a Rust EVMC interface for SSVM.
- The pallet-ssvm project creates a "pallet" (or substrate package) that uses rust-ssvm as the substrate node's EWASM engine.
- The substrate-ssvm-node project (this project) provides a full substrate node that incorporates the pallet-ssvm.
- The command line tools is an extension to the substrate CLI to support substrate-ssvm-node. It is the same approach as evm pallet.
Use secondstate/substrate-ssvm as building & running environment:
> git clone https://github.com/second-state/substrate-ssvm-node.git
> docker run -it --rm \
--name ssvm \
-v $(pwd):/root/node \
-w /root/node \
secondstate/substrate-ssvm
(docker) cd substrate-ssvm-node
(docker) cargo run --release --bin node-template -- --dev
See our documents for more information about interacting with node:
- Use command line tools
- Use Substrate web interface