Lightweight Substrate and Polkadot client.
smoldot
is a prototype of an alternative client of Substrate-based chains, including Polkadot.
In order to simplify the code, two main design decisions have been made compared to Substrate:
No native runtime. The execution time of the wasmtime
library is satisfying enough that having a native runtime isn't critical anymore.
No pluggable architecture. smoldot
supports a certain hardcoded list of consensus algorithms, at the moment Babe, Aura, and GrandPa. Support for other algorithms can only be added by modifying the code of smoldot, and it is not possible to plug a custom algorithm from outside.
There exists two clients: the full client and the wasm light node.
The full client is a binary similar to the official Polkadot client, and can be tested with cargo run
.
Note: The
Cargo.toml
contains a section[profile.dev] opt-level = 2
, and as suchcargo run
alone should give performances close to the ones in release mode.
The wasm light node can be tested with cd bin/wasm-node/javascript
and npm start
. This will start a WebSocket server capable of answering JSON-RPC requests. You can then navigate to https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944 in order to interact with the Westend chain.
Note: The
npm start
command starts a small JavaScript shim, on top of the wasm light node, that hardcodes the chain to Westend and starts the WebSocket server. The wasm light node itself can connect to a variety of different chains (not only Westend) and doesn't start any server.
There exists multiple objectives behind this repository:
main
branch is automatically deployed here.As a quick overview, at the time of writing of this README, the following is supported:
Core_execute_block
.The following isn't done yet: