Skip to content

dusk-network/rusk

Rusk CI explorer CI web-wallet CI codecov

Rusk

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

For more information on running a node, see our docs:

Prerequisites

  • Rust 1.71 nightly or higher
  • GCC 13 or higher
  • Clang 16 or higher

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, Rust, GCC and Clang are required. Once the dependencies are installed, 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.

Use

Prerequisites:

# Generate the keys used by the circuits
make keys

# Compile all the genesis contracts
make wasm

# Copy example consensus.keys
mkdir -p ~/.dusk/rusk
cp examples/consensus.keys ~/.dusk/rusk/consensus.keys

Run a single full-node cluster with example state.

# Generate genesis state
cargo r --release -p rusk -- recovery-state --init examples/genesis.toml -o /tmp/example.state

# Launch a local ephemeral node
DUSK_CONSENSUS_KEYS_PASS=password cargo r --release -p rusk -- -s /tmp/example.state

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 wallet-cli can be connected to it for quicker and more private local proving.

Contracts compilation

To just compile all the genesis contracts without running the server:

make contracts

To generate a specific genesis contract:

# generate the wasm for `transfer` contract
make wasm for=transfer

See also make help for all the available commands

Docker support

It's also possible to run a local ephemeral node with Docker.

To build the Docker image:

docker build -t rusk .

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.