Skip to content

Latest commit

 

History

3,818 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Dugite

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

CI Code Scanning codecov Nightly Benchmarks Docs License Rust Cardano GitHub Discussions GitHub Stars

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.

What you get

Four binaries, built from one workspace:

Binary What it is
dugite-node The node — sync, ledger, mempool, forging, Mithril import, Prometheus metrics, optional UTxO RPC (gRPC) server
dugite-cli cardano-cli compatible CLI: 11 command groups, era-prefix aliases
dugite-monitor Terminal monitoring dashboard
dugite-config Interactive TUI config editor

Download them from Releases, or build from source below.

Quick Start

Prerequisites: the latest stable Rust toolchain and protoc (apt install protobuf-compiler libprotobuf-dev / brew install protobuf) — the UTxO RPC crate generates its gRPC stubs at build time.

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 preview

mithril-import, run-relay, and run-bp each take mainnet, preview, or preprod.

Without 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 3001

For installation, configuration, networks, monitoring, block-producer setup, and the full CLI reference, see the documentation.

Network Magic Config
Mainnet 764824073 config/mainnet/
Preview 2 config/preview/
Preprod 1 config/preprod/

Each config directory is self-contained: config.json, topology.json, and the Byron, Shelley, Alonzo, and Conway genesis files.

Architecture

Dugite is a 16-crate Cargo workspace (plus xtask and two test-suite crates under tests/) with an in-house multi-era CBOR decoder and UPLC CEK machine for full Cardano wire-format compatibility.

graph TD
    NODE[dugite-node] --> NET[dugite-network]
    NODE --> CONS[dugite-consensus]
    NODE --> LEDGER[dugite-ledger]
    NODE --> STORE[dugite-storage]
    NODE --> POOL[dugite-mempool]
    NODE --> RPC[dugite-rpc]
    NODE --> UPLC[dugite-uplc]
    CLI[dugite-cli] --> NET
    CLI --> CONS
    CLI --> PRIM[dugite-primitives]
    CLI --> CRYPTO[dugite-crypto]
    CLI --> SER[dugite-serialization]
    RPC --> POOL
    RPC --> SER
    RPC --> PRIM
    NET --> CONS
    NET --> PRIM
    NET --> CRYPTO
    NET --> SER
    CONS --> PRIM
    CONS --> CRYPTO
    CONS --> SER
    POOL --> LEDGER
    POOL --> CRYPTO
    POOL --> PRIM
    LEDGER --> PRIM
    LEDGER --> CRYPTO
    LEDGER --> SER
    LEDGER --> LSM[dugite-lsm]
    LEDGER --> UPLC
    STORE --> CONS
    STORE --> CRYPTO
    STORE --> PRIM
    STORE --> SER
    UPLC --> SER
    UPLC --> PRIM
    SER --> PRIM
    CRYPTO --> PRIM
Loading

dugite-monitor and dugite-config are standalone TUIs and take no workspace dependencies at build time.

See Architecture Overview for the per-crate breakdown, and Architecture Decision Records for design rationale.

Development

just check       # full CI gate: fmt-check + clippy + build + test + test-doc
just test        # cargo nextest run --workspace
just test-doc    # cargo test --doc
just clippy      # cargo clippy --all-targets -- -D warnings
just fmt-check   # cargo fmt --all -- --check   (apply with: just fmt)

Zero-warning policy is enforced: all code must compile cleanly with clippy and pass formatting checks.

A three-node loopback devnet (dugite BP + relay against a cardano-node BP) backs release validation — just devnet-validate-smoke for the PR gate, just devnet-validate-extended for the release gate. Upstream wire-format and evaluation fidelity is checked against a pinned corpus with just download-upstream-fixtures && just test-conformance.

See CONTRIBUTING.md for the full workflow, and Getting Started for Developers on the wiki.

Benchmark instructions and tracked baselines: Benchmarks.

Acknowledgments

Special thanks to the following individuals for their contributions and support:

  • Andrew Westberg (BCSH)
  • Samuel Leathers
  • Homer J (AAA)

License

Apache-2.0

About

A Cardano full node written in Rust

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages