Named after the dugite (Pseudonaja affinis), a highly venomous brown snake indigenous to Perth, Western Australia — where the project's main author is from. Dugites are fast, resilient, and quietly formidable; traits shared by this node. They're also responsible for the loss of more than a few beloved family pets over the years.
A Cardano node implementation written in Rust, aiming for 100% compatibility with cardano-node.
Built by Sandstone Pool
Documentation | Benchmarks | Developer Wiki | Discussions
Caution
Dugite is in early development and is NOT recommended for production use. APIs, storage formats, and on-chain behavior may change without notice. Ledger validation is incomplete and may accept invalid transactions or reject valid ones. Do not use this software to operate a stake pool, manage real funds, or participate in mainnet governance. Use at your own risk on testnets only.
For project status, capability matrix, and known issues see the Developer Wiki.
Dugite ships a top-level justfile — install just and the most common workflows become one-liners. just --list shows everything.
# Build, lint, test (full CI gate)
just check
# Fast sync with a Mithril snapshot (recommended), then run as a relay on preview.
just mithril-import preview
just run-relay previewWithout just, the same steps map directly to the underlying scripts and cargo commands:
cargo build --release
./scripts/mithril/import.sh preview
./target/release/dugite-node run \
--config config/preview/config.json \
--topology config/preview/topology.json \
--database-path ./db-preview \
--socket-path ./node.sock \
--host-addr 0.0.0.0 \
--port 3001For installation, configuration, networks, monitoring, block-producer setup, and the full CLI reference, see the documentation.
| Network | Magic |
|---|---|
| Mainnet | 764824073 |
| Preview | 2 |
| Preprod | 1 |
Dugite is a 15-crate Cargo workspace with an in-house multi-era CBOR decoder and UPLC CEK machine for full Cardano wire-format compatibility. Four binaries: dugite-node (the node), dugite-cli (cardano-cli compatible), dugite-monitor and dugite-config (TUIs).
graph TD
NODE[dugite-node] --> NET[dugite-network]
NODE --> CONS[dugite-consensus]
NODE --> LEDGER[dugite-ledger]
NODE --> STORE[dugite-storage]
NODE --> POOL[dugite-mempool]
CLI[dugite-cli] --> NET
CLI --> PRIM[dugite-primitives]
CLI --> CRYPTO[dugite-crypto]
CLI --> SER[dugite-serialization]
MON[dugite-monitor] --> PRIM
CFG[dugite-config] --> PRIM
NET --> PRIM
NET --> CRYPTO
NET --> SER
NET --> POOL
CONS --> PRIM
CONS --> CRYPTO
LEDGER --> PRIM
LEDGER --> CRYPTO
LEDGER --> SER
LEDGER --> LSM[dugite-lsm]
LEDGER --> UPLC[dugite-uplc]
STORE --> PRIM
STORE --> SER
POOL --> PRIM
SER --> PRIM
CRYPTO --> PRIM
See Architecture Overview for the per-crate breakdown, and Architecture Decision Records for design rationale.
# Run all tests (parallel via nextest, matches CI)
cargo nextest run --workspace
# Doc tests
cargo test --doc
# Lint
cargo clippy --all-targets -- -D warnings
# Format check
cargo fmt --all -- --checkZero-warning policy is enforced: all code must compile cleanly with clippy and pass formatting checks. See CONTRIBUTING.md for the full workflow, and Getting Started for Developers on the wiki.
Benchmark instructions and tracked baselines: Benchmarks.
Special thanks to the following individuals for their contributions and support:
- Andrew Westberg (BCSH)
- Samuel Leathers
- Homer J (AAA)
Apache-2.0
