🌐 Dusk Node
Chain node implementation — networking, mempool, storage, and synchronization
Overview
Dusk Node is the chain layer of the Dusk blockchain. It manages peer-to-peer networking, transaction pooling, persistent ledger storage, and chain synchronization. It integrates the consensus engine and is orchestrated by rusk.
Key Modules
| Module | Description |
|---|---|
database |
RocksDB-based ledger storage |
mempool |
Transaction pool management and eviction |
network |
Peer communication via Kadcast |
databroker |
Block and transaction serving to peers |
telemetry |
Metrics collection and reporting |
Features
| Feature | Description |
|---|---|
archive |
SQLite-based historical data indexing (see below) |
network-trace |
Network-level debug tracing |
Related Crates
node-data— ledger and message types consumed by the nodedusk-consensus— consensus engine driving block productiondusk-core— cryptographic signatures and transaction typesrusk— orchestrates the node as part of the full binary
Archive feature
The current archive makes use of SQLite and SQLx in offline mode.
Installing sqlx-cli with cargo install sqlx-cli --features openssl-vendored
Offline mode
If the queries don't change, nothing needs to be done.
If queries do change, you need to set a database env var and update the offline .sqlx queries folder.
This can be done through:
export DATABASE_URL=sqlite:///tmp/temp.sqlite3cargo sqlx prepare -- --all-targets --all-features
Non offline mode
In order for the sqlx::query macro to successfully expand during compile time checks, a database must exist beforehand if not run in offline mode.
This can be done through:
- Set DATABASE_URL or create .env file with
DATABASE_URL=sqlite:///tmp/temp.sqlite3 - Create a db with
sqlx database create - Run the migrations with
sqlx migrate run
NB: You need to be in the /node folder of this project for sqlx to detect the migrations folder