The Dusk protocol offers a lucrative opportunity for both individuals and enterprises. By setting up and running a node, not only can you help secure the network through staking, but you can also monetize valuable services. These services include ZK proving, API access, and real-time network data. While the Dusk node is designed for Linux, this guide will ensure users can participate through various ways.
This page describes the most involved way of installing a Dusk node. For an easier approach with Docker, see the Setting up a Dusk node with Docker page.
While the Dusk node is officially tested and supported for Linux, there are alternative ways to run a node if you're using another operating system:
For information on how to set up a node with Docker, see the following wiki page: Setting up a Dusk node with Docker
Virtualization
Cloud Services
Note: Cloud services come with costs. Ensure your accounts are funded before proceeding.
rustc
, clang
, gcc
and git
.The majority of Dusk software is written in Rust. To compile our code, we will first need to make sure it's installed.
rustc --version
If this returns a command not found
error, we'll need to install and activate Rust.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
source $HOME/.cargo/env
Clang is necessary to compile the internal database of the node, RocksDB.
sudo apt-get install clang
sudo pacman -S clang
sudo yum install clang
Git is a version control system. We will use it to download the Node code.
sudo apt-get install git
sudo pacman -S git
sudo yum install git
git clone https://github.com/dusk-network/rusk.git
cd rusk
make keys
make wasm
mkdir -p ~/.dusk/rusk
cp examples/consensus.keys ~/.dusk/rusk/consensus.keys
examples/genesis.toml
for configuration options you can set in terms of stakes and balances on network initialization.cargo r --release -p rusk-recovery --features state --bin rusk-recovery-state -- --init examples/genesis.toml -o /tmp/example.state
DUSK_CONSENSUS_KEYS_PASS=password cargo r --release -p rusk -- -s /tmp/example.state
Note that the password
used here is connected to the example consensus keys, which are also defined in the examples/genesis.toml
. This node setup will create a local, ephemeral network.
It is possible to connect to other clusters by defining a set of bootstrapping nodes to which to connect to on initialization, by defining them in the node/default.config.toml
and rusk/default.config.toml
, or by passing the --bootstrap
argument in the node launch command.