1 stable release
new 1.0.0 | Jan 16, 2025 |
---|
#2 in #dusk
155KB
3K
SLoC
The official Dusk protocol node client and smart contract platform.
Unstable : No guarantees can be made regarding the API stability, the project is in development.
🖧 How to run a node
This README is for people who want to develop, test nodes locally, and contribute to the Rusk codebase.
For more information on running a node for main- or testnet, see our Node operator docs
📃 Table of Contents
📝 Prerequisites
- Rust 1.71 nightly or higher
- GCC 13 or higher
- Clang 16 or higher
Setup script
We provide a setup script in the scripts
folder that can take care of everything.
bash scripts/dev-setup.sh
Rust Installation
Rusk makes use of the nightly toolchain, make sure it is installed. Furthermore, to build the WASM contracts, wasm-pack
is required.
To install and set the nightly toolchain, and install wasm-pack
, run:
rustup toolchain install nightly
rustup default nightly
cargo install wasm-pack
🛠️ Build and Tests
To build rusk
from source, make sure the prerequisites are met. Then you can simply run the following command to compile everything:
make
To run tests:
make test
That will also compile all the genesis contracts and its associated circuits. See also make help
for all the available commands
💻 Run a local node for development
Spin up local node
Run a single full-node cluster with example state.
Prepare modules:
# Generate the keys used by the circuits
# Compile all the genesis contracts
# Copy example consensus.keys
make prepare-dev
Run a Node
# Launch a local ephemeral node
make run-dev
Run an Archive node
make run-dev-archive
Run a Prover Node
The node can be build as a prover only as follows:
cargo r --release --no-default-features --features prover -p rusk
This prover node will be accessible on https://localhost:8080
. Apps like the rusk-wallet can be connected to it for quicker and more private local proving.
📜 Contracts compilation
Compile all the genesis contracts without running the server:
make contracts
Compile a specific genesis contract:
# generate the wasm for `transfer` contract
make wasm for=transfer
🐳 Docker support
It's also possible to run a local ephemeral node with Docker.
To build the Docker image with archive:
docker build -t rusk .
To build the Docker image without archive:
docker build -t rusk --build-arg CARGO_FEATURES="" .
To run Rusk inside a Docker container:
docker run -p 9000:9000/udp -p 8080:8080/tcp rusk
Port 9000 is used for Kadcast, port 8080 for the HTTP and GraphQL APIs.
License
The Rusk software is licensed under the Mozilla Public License Version 2.0.
Dependencies
~14MB
~271K SLoC