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.
Prerequisites
- Rust 1.71 nightly or higher
- GCC 13 or higher
- Clang 16 or higher
Specification Requirements
Minimum Specifications
CPU | RAM | Storage | Network Connection |
---|---|---|---|
2 cores; 2 GHz | 1 GB | 60 GB | 1 Mbps |
Recommended Specifications
CPU | RAM | Storage | Network Connection |
---|---|---|---|
4 cores; 2 GHz | 4 GB | 250 GB | 10 Mbps |
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-node cluster with example's data
# 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
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.
How to run a node
For more information on running a node, see our wiki:
License
The Rusk software is licensed under the Mozilla Public License Version 2.0.