Dingo: Rewriting the Cardano "Haskell Sandwich" for the Cloud

How Blink Labs is collapsing the complex Cardano infrastructure stack into a single, high-performance Go binary.

7 min read • View on GitHub • More from blinklabs-io

A heavy stone tower being compressed into a single glowing geometric cube, representing the consolidation of a complex software stack into one binary.
Dingo compresses the multi-tiered Cardano infrastructure tax into a single, highly concurrent binary.
Key Takeaways

The End of the Infrastructure Tax

Running a Cardano node has historically meant managing a complex, multi-tiered stack. Developers call it the "Haskell Sandwich." You start with the official Haskell node. Then you add DB Sync to pipe chain data into a massive PostgreSQL database. Finally, you bolt on Ogmios or a GraphQL server just to make the data readable to a web application.

This architecture is a heavy tax on teams building decentralized applications. It requires significant memory, substantial disk space, and constant operational babysitting. Dingo eliminates this friction entirely.

By embedding Blockfrost and UTxO RPC servers directly into the node, Dingo collapses the stack. It talks directly to the Ouroboros network and serves data to your application from a single Go binary. No sidecars. No brittle database syncing pipelines.

Feature Standard Stack (Haskell) Dingo (Go)
Architecture Node + DB Sync + PostgreSQL + APIs Single Go Binary
Resource Footprint Heavy (32GB+ RAM recommended) Lightweight
API Integration Requires external tools (Ogmios, Blockfrost) Embedded Natively
Storage Options Local Disk Only Pluggable (Local, S3, PostgreSQL)

Porting the Protocol, Not the Code

Dingo is not a line-by-line translation of the official node. It is a ground-up re-implementation of the Ouroboros consensus protocol using Go's concurrency primitives. The team at Blink Labs recognized that Go's goroutines and channels are perfectly suited for the highly parallel nature of blockchain networking.

The core engine powering this is a library called gouroboros. It handles the intricate "mini-protocols" that Cardano nodes use to communicate. When Dingo connects to the network, it performs the exact same handshake and block-fetching dance as a Haskell node.

A sequence diagram showing the Ouroboros mini-protocol handshake between a local Dingo Node (Go) and a Remote Peer (Haskell). The diagram should illustrate the parallel flow of 'ChainSync' requesting block headers and 'BlockFetch' retrieving the actual block payloads

Internally, Dingo relies on an event-driven architecture. When a new block is validated, an event fires across an internal bus. The mempool, the ledger state, and the API indexers all listen to this bus and update their state independently. This decoupling prevents the node from locking up during heavy query loads.

Pluggable Truth

Perhaps the most radical departure from the standard node is Dingo's database/ package. The official node stores its immutable chain data strictly on local disk. Dingo introduces a pluggable storage backend.

Users can configure Dingo to store its raw block data in an AWS S3 bucket or a Google Cloud Storage blob. It can simultaneously write its indexed metadata to a remote PostgreSQL instance or a local SQLite file. This effectively turns the blockchain into a cloud-native microservice.

A heavy steel bank vault door swung open to reveal a vast landscape of floating clouds, symbolizing cloud-native storage.
Dingo decouples the ledger from local disk, allowing nodes to treat cloud storage buckets as their primary source of truth.

This storage flexibility is managed through two operational modes: Core and API. Core mode keeps only the minimal data required to validate blocks and participate in consensus. API mode aggressively indexes scripts, redeemers, and metadata to serve complex dApp queries. You choose whether to prioritize performance or data depth.

The Road to Mainnet

Implementing a blockchain node from scratch is a massive undertaking. The developers must perfectly replicate decades of academic research and 41 distinct UTXO validation rules. A single consensus bug could cause the node to fork from the main network.

Because of this immense complexity, the Blink Labs team is proceeding with caution. The project is iterating rapidly on testnets, integrating features like Mithril for instant bootstrapping and experimenting with the upcoming Ouroboros Leios scaling protocol.

Dingo is under heavy active development and is not yet ready for production use. It should only be used on testnets (preview, preprod) and devnets. Do not use Dingo on mainnet with real funds.

As the node matures, it represents a critical milestone for the Cardano ecosystem. Client diversity is the ultimate defense against network-wide outages. By providing a production-grade alternative written in a language beloved by the DevOps community, Dingo is paving the way for a more resilient and accessible network.