Quick Start Guide
A Cardano blockchain data node written in Go which actively participates in network communications on the Cardano blockchain using the Ouroboros Network Node-to-Node family of mini-protocols.
⚠️ This is a work in progress and is currently under heavy development
For this guide we will walk you through downloading the Dingo binary and all the steps necessary to get the Dingo node running on the Cardano Preview network. To get started follow the steps below.
✅ This guide assumes typical Linux setup. Please adjust commands and paths as needed.
Step 1 - Download Dingo Binary
Section titled “Step 1 - Download Dingo Binary”Download the latest release from the Dingo releases page.
⚠️ Adjust the version and architecture to match your system.
mkdir -p ~/dingocd ~/dingowget https://github.com/blinklabs-io/dingo/releases/download/v0.46.0/dingo-v0.46.0-linux-amd64.tar.gz -O - | tar -xzYou can verify the binary works by running:
./dingo versionStep 2 - Create dingo.yaml Configuration File
Section titled “Step 2 - Create dingo.yaml Configuration File”Dingo ships with embedded Cardano network configurations (genesis files, config.json) for preview, preprod, and mainnet. You do not need to download them separately.
Create a dingo.yaml file in your dingo directory. The $HOME variable will automatically expand to your home directory path:
cat <<EOF > ~/dingo/dingo.yaml# Databasedatabase: blob: plugin: "badger" badger: block-cache-size: 0 compression: false data-dir: "$HOME/dingo/.dingo/badger" gc: true index-cache-size: 0 metadata: plugin: "sqlite" sqlite: data-dir: "$HOME/dingo/.dingo/metadata.db"databasePath: "$HOME/dingo/.dingo"
# Mempool# `mempoolCapacity` is an optional override, not a required setting.# Default: 1 MiB for Praos mode and normal serve mode, and 25 MiB for Leios mode.# Leave the key commented or omit it to use the mode default.# mempoolCapacity: 1048576
# Mithrilmithril: aggregatorUrl: "" cleanupAfterLoad: true enabled: true verifyCertificates: true
# NetworkbindAddr: "0.0.0.0"metricsPort: 12798debugPort: 0network: "preview"privateBindAddr: "127.0.0.1"privatePort: 3002relayPort: 3001socketPath: "$HOME/dingo/dingo.socket"
# StorageblockfrostPort: 0meshPort: 0storageMode: "core"utxorpcPort: 0barkBaseUrl: ""barkPort: 0barkPrunerFrequency: 1hEOF📝 Leave
debugPortset to0unless profiling is required.debugPortcontrols an optional pprof listener, stays separate frommetricsPort, and remains disabled at0.
📝 Bark now derives its near tip safety window from the current ledger state. Do not look for or set a manual
barkSecurityWindowvalue in this configuration.
💡 To serve Blockfrost compatible HTTP endpoints, switch
storageModeto an API capable setting and assign a non zeroblockfrostPort.
blockfrostPort: 3000storageMode: "api"utxorpcPort: 0💡 Setting
block-cache-sizeandindex-cache-sizeto 0 withcompression: falseuses OS page cache (mmap) instead of BadgerDB’s internal caches. This dramatically reduces memory usage.
📝 Dingo v0.46.3 adds metadata database indexes to speed up governance related account and UTxO lookups and stake by pool queries. Operators serving API or query heavy workloads may see faster responses after upgrading.
Step 3 - Open Ports
Section titled “Step 3 - Open Ports”We will cover how to add UFW firewall rules for the ports Dingo needs.
💡 Tip: UFW stands for Uncomplicated Firewall and is used for managing iptables (netfilter) firewall rules.
To see which ports are currently open:
sudo ufw status numberedAdd Port 3001 for Ouroboros Node to Node (NtN) Communication
Section titled “Add Port 3001 for Ouroboros Node to Node (NtN) Communication”sudo ufw allow 3001/tcpStep 4 - Bootstrap from Mithril Snapshot
Section titled “Step 4 - Bootstrap from Mithril Snapshot”Dingo has a built-in Mithril client that downloads and loads a snapshot automatically. This saves hours of sync time compared to replaying the chain from genesis.
Run the following command from your dingo directory:
cd ~/dingo./dingo mithril sync --config ~/dingo/dingo.yamlDingo will:
- Download the latest Mithril snapshot for your configured network
- Verify the certificate chain
- Load the snapshot into the database
This takes approximately 10-15 minutes depending on your system and network speed.
📝 If you skip this step, Dingo will sync from genesis when started, which takes significantly longer.
📝 Dingo v0.46.3 restarts chain sync on a fresh connection after peer realignment when sync stalls at the local tip. This reduces the risk of the node getting stuck after a local tip plateau or an epoch boundary fork when trusted peers disagree.
Step 5 - Start Dingo
Section titled “Step 5 - Start Dingo”Once the Mithril snapshot has loaded, start the node:
cd ~/dingo./dingo serve --config ~/dingo/dingo.yamlYou should see log output showing the node connecting to peers and syncing the remaining blocks to reach the chain tip.
Interested in using a systemd service to run a Dingo Node to maximize the uptime by automatically restarting the Dingo node when the computer reboots?
Section titled “Interested in using a systemd service to run a Dingo Node to maximize the uptime by automatically restarting the Dingo node when the computer reboots?”See our guide on how to create a startup service for Dingo.