@blinklabs/dingo 0.31.1 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ARCHITECTURE.md CHANGED
@@ -22,7 +22,7 @@ Dingo is a high-performance Cardano blockchain node implementation in Go. This d
22
22
  - [Transaction Mempool](#transaction-mempool)
23
23
  - [Block Production](#block-production)
24
24
  - [Mithril Bootstrap](#mithril-bootstrap)
25
- - [API Servers](#api-servers)
25
+ - [External Interfaces](#external-interfaces)
26
26
  - [Design Patterns](#design-patterns)
27
27
  - [Threading and Concurrency](#threading-and-concurrency)
28
28
  - [Configuration](#configuration)
@@ -79,7 +79,7 @@ graph TB
79
79
  Meta["MetadataStore<br/>sqlite / postgres / mysql"]
80
80
  end
81
81
 
82
- subgraph "API Servers"
82
+ subgraph "External Interfaces"
83
83
  URPC["UTxO RPC<br/><i>utxorpc/</i>"]
84
84
  BFA["Blockfrost API<br/><i>blockfrost/</i>"]
85
85
  Mesh["Mesh API<br/><i>mesh/</i>"]
@@ -490,10 +490,10 @@ dingo/
490
490
  │ ├── submit.go # Submit service
491
491
  │ ├── sync.go # Sync service
492
492
  │ └── watch.go # Watch service
493
- ├── bark/ # Bark archive block storage
494
- │ ├── bark.go # HTTP server for block archive access
495
- │ ├── archive.go # Archive blob store interface
496
- │ └── blob.go # Blob store adapter with security window
493
+ ├── bark/ # Bark Dingo-to-Dingo C2 and archive protocol
494
+ │ ├── bark.go # Bark server lifecycle and transport setup
495
+ │ ├── archive.go # Archive service interface
496
+ │ └── blob.go # Remote archive blob adapter with security window
497
497
  ├── mithril/ # Mithril snapshot bootstrap
498
498
  │ ├── bootstrap.go # Bootstrap orchestration
499
499
  │ ├── client.go # Mithril aggregator client
@@ -538,7 +538,7 @@ type Node struct {
538
538
  ledgerState *ledger.LedgerState // UTXO/state tracking
539
539
  snapshotMgr *snapshot.Manager // Stake snapshot capture
540
540
  utxorpc *utxorpc.Utxorpc // UTxO RPC server
541
- bark *bark.Bark // Block archive server
541
+ bark *bark.Bark // Bark C2/archive server
542
542
  blockfrostAPI *blockfrost.Blockfrost // Blockfrost REST API
543
543
  meshAPI *mesh.Server // Mesh (Rosetta) API
544
544
  ouroboros *ouroboros.Ouroboros // Protocol handlers
@@ -557,7 +557,7 @@ When `Node.Run()` is called, components are initialized in this order:
557
557
  3. ChainManager initialization
558
558
  4. Ouroboros protocol handler creation
559
559
  5. LedgerState creation (UTXO tracking, validation)
560
- 6. Bark blob store adapter (if configured)
560
+ 6. Bark remote archive adapter (if configured)
561
561
  7. LedgerState start
562
562
  8. Snapshot manager start (captures genesis snapshot)
563
563
  9. Mempool setup
@@ -567,7 +567,7 @@ When `Node.Run()` is called, components are initialized in this order:
567
567
  13. Stalled client recycler (background goroutine)
568
568
  14. PeerGovernor (topology + churn + ledger peers)
569
569
  15. UTxO RPC server (if port configured)
570
- 16. Bark archive server (if port configured)
570
+ 16. Bark C2/archive server (if port configured)
571
571
  17. Blockfrost API (if port configured)
572
572
  18. Mesh API (if port configured)
573
573
  19. Block forger + leader election (if block producer mode)
@@ -582,7 +582,7 @@ Graceful shutdown proceeds in phases:
582
582
  Phase 1: Stop accepting new work
583
583
  Block forger, leader election, chain selector,
584
584
  peer governor, snapshot manager, UTxO RPC,
585
- Bark, Blockfrost API, Mesh API
585
+ Bark C2/archive server, Blockfrost API, Mesh API
586
586
 
587
587
  Phase 2: Drain and close connections
588
588
  Mempool, ConnectionManager
@@ -679,7 +679,7 @@ Dingo uses a dual-layer storage architecture with pluggable backends:
679
679
  Dingo supports two storage modes, configured via `storageMode`:
680
680
 
681
681
  - `core` (default): Minimal storage for chain following and block production.
682
- - `api`: Extended storage with transaction indexes, address lookups, and asset tracking. Required when any API server (Blockfrost, Mesh, UTxO RPC) is enabled.
682
+ - `api`: Extended storage with transaction indexes, address lookups, and asset tracking. Required when any client-facing API server (Blockfrost, Mesh, UTxO RPC) is enabled. Bark is a separate Dingo-to-Dingo protocol and is not part of that API surface.
683
683
 
684
684
  ### Tiered CBOR Cache
685
685
 
@@ -977,13 +977,13 @@ The `mithril/` package enables fast initial sync by downloading and importing a
977
977
 
978
978
  This is exposed via the `dingo mithril` CLI subcommand and the `dingo load` command.
979
979
 
980
- ## API Servers
980
+ ## External Interfaces
981
981
 
982
- Dingo provides multiple API interfaces, all optional and gated by port configuration. All require `storageMode: api`.
982
+ Dingo provides three client-facing APIs plus Bark. All are optional and gated by port configuration. UTxO RPC, Blockfrost, and Mesh are general-purpose external APIs and require `storageMode: api`. Bark is different: it is Dingo's own protocol for Dingo-to-Dingo C2/archive services, not a general-purpose application API.
983
983
 
984
984
  ### Blockfrost API (`blockfrost/`)
985
985
 
986
- A Blockfrost-compatible REST API that provides read access to chain data. Uses an adapter pattern to translate between Dingo's internal state and Blockfrost response types. Supports cursor-based pagination.
986
+ A Blockfrost-compatible REST API that provides read access to chain data. The current implementation exposes the latest, epoch, network, and pool subset. It uses an adapter pattern to translate between Dingo's internal state and Blockfrost response types and supports cursor-based pagination.
987
987
 
988
988
  ### Mesh API (`mesh/`)
989
989
 
@@ -995,7 +995,7 @@ A gRPC server implementing the UTxO RPC specification with query, submit, sync,
995
995
 
996
996
  ### Bark (`bark/`)
997
997
 
998
- An HTTP server for block archive access. Also acts as a blob store adapter with a configurable security window, allowing Dingo to fetch historical blocks from a remote Bark instance instead of storing them locally.
998
+ Bark is Dingo's own protocol for Dingo-to-Dingo control-plane and archive services. It exposes archive access over Connect/gRPC and also supplies a remote archive adapter with a configurable security window, allowing Dingo to fetch historical blocks from a remote Bark instance instead of storing them locally.
999
999
 
1000
1000
  ## Design Patterns
1001
1001
 
@@ -1066,7 +1066,7 @@ Key configuration areas:
1066
1066
  - CBOR cache sizing (hot entries, block LRU)
1067
1067
  - Chainsync client limits and stall timeout
1068
1068
  - Block producer credentials (VRF key, KES key, operational certificate)
1069
- - API server ports (Blockfrost, Mesh, UTxO RPC, Bark)
1069
+ - External interface ports (Blockfrost, Mesh, UTxO RPC, Bark)
1070
1070
 
1071
1071
  ## Stake Snapshots
1072
1072
 
package/README.md CHANGED
@@ -22,7 +22,7 @@ A high-performance Cardano blockchain node implementation in Go by Blink Labs. D
22
22
  - Peer governance with dynamic peer selection, ledger peers, and topology support
23
23
  - Chain rollback support for handling forks with automatic state restoration
24
24
  - Fast bootstrapping via built-in Mithril client
25
- - Multiple API servers: UTxO RPC, WIP Blockfrost-compatible REST, Mesh (Coinbase Rosetta)
25
+ - Multiple external interfaces: general-purpose APIs (UTxO RPC, Blockfrost-compatible REST, Mesh/Rosetta) plus Bark for Dingo-to-Dingo C2 and archive services
26
26
 
27
27
  Note: On Windows systems, named pipes are used instead of Unix sockets for node-to-client communication.
28
28
 
@@ -132,11 +132,15 @@ docker run -p 3001:3001 \
132
132
 
133
133
  The image is based on Debian bookworm-slim and includes `cardano-cli`, `nview`, and `txtop`. Mithril snapshot support is built into dingo natively (`dingo mithril sync`). The Dockerfile sets `CARDANO_DATABASE_PATH=/data/db` and `CARDANO_SOCKET_PATH=/ipc/dingo.socket`, overriding the local defaults of `.dingo` and `dingo.socket` — the volume mounts above map to these container paths.
134
134
 
135
- | Port | Service |
136
- |------|---------|
137
- | 3001 | Ouroboros NtN (node-to-node) |
138
- | 3002 | Ouroboros NtC over TCP |
139
- | 12798 | Prometheus metrics |
135
+ | Port | Service | Default |
136
+ |------|---------|---------|
137
+ | 3001 | Ouroboros NtN (node-to-node) | Enabled |
138
+ | 3002 | Ouroboros NtC over TCP | Enabled |
139
+ | 12798 | Prometheus metrics | Enabled |
140
+ | 3000 | Blockfrost REST API | Disabled |
141
+ | 8080 | Mesh (Rosetta) REST API | Disabled |
142
+ | 9090 | UTxO RPC (gRPC) | Disabled |
143
+ | — | Bark archive (gRPC) | Disabled (example when enabled: 9091) |
140
144
 
141
145
  ## Storage Modes
142
146
 
@@ -161,15 +165,16 @@ Or in `dingo.yaml`:
161
165
  storageMode: "api"
162
166
  ```
163
167
 
164
- ## API Servers
168
+ ## API Servers and Bark
165
169
 
166
- Dingo includes three API servers. All APIs require `storageMode: "api"` and start automatically on their default ports in that mode. Set an individual port to 0 to disable a specific API. The Blockfrost server provides a WIP Blockfrost-compatible REST API with a growing subset of the compatibility surface.
170
+ Dingo includes three general-purpose external APIs plus Bark. UTxO RPC, Blockfrost, and Mesh are client-facing APIs and require `storageMode: "api"`. Bark is different: it is Dingo's own protocol for Dingo-to-Dingo C2/archive services, not a general-purpose application API. Set an individual port to 0 to disable a specific interface. The Blockfrost server currently exposes the latest, epoch, network, and pool subset.
167
171
 
168
- | API | Port Env Var | Default | Protocol |
169
- |-----|-------------|---------|----------|
170
- | UTxO RPC | `DINGO_UTXORPC_PORT` | disabled | gRPC |
171
- | Blockfrost | `DINGO_BLOCKFROST_PORT` | disabled | REST |
172
- | Mesh (Rosetta) | `DINGO_MESH_PORT` | disabled | REST |
172
+ | Interface | Port Env Var | Default | Protocol | Role |
173
+ |-----------|--------------|---------|----------|------|
174
+ | UTxO RPC | `DINGO_UTXORPC_PORT` | disabled | gRPC | General-purpose client API |
175
+ | Blockfrost | `DINGO_BLOCKFROST_PORT` | disabled | REST | General-purpose client API |
176
+ | Mesh (Rosetta) | `DINGO_MESH_PORT` | disabled | REST | General-purpose client API |
177
+ | Bark | `DINGO_BARK_PORT` | disabled | Connect/gRPC | Dingo-to-Dingo C2/archive protocol |
173
178
 
174
179
  ```bash
175
180
  # Enable Blockfrost API on port 3100 and UTxO RPC on port 9090
package/RELEASE_NOTES.md CHANGED
@@ -1,6 +1,39 @@
1
1
  # Release Notes
2
2
 
3
3
 
4
+ ## v0.31.1 (April 4, 2026)
5
+
6
+ **Title:** Clearer rollback recovery outcomes
7
+
8
+ **Date:** April 4, 2026
9
+
10
+ **Version:** v0.31.1
11
+
12
+ Hi folks! Here’s what we shipped in v0.31.1.
13
+
14
+ ### ✨ What's New
15
+
16
+ - **Clearer rollback recovery status:** Recovery is simpler to understand because chain recovery now reports clearer outcomes after a local rollback.
17
+
18
+ ### 💪 Improvements
19
+
20
+ - **More consistent recovery staleness checks:** Recovery decisions are more rock-solid because staleness checks are now based on the primary chain tip.
21
+
22
+ ### 🔧 Fixes
23
+
24
+ - **Rollback-aware recovery test coverage:** Reliability is more rock-solid because recovery and chainsync tests now validate rollback-aware behavior.
25
+
26
+ ### 📋 What You Need to Know
27
+
28
+ - **No action required:** You're all set—just upgrade to v0.31.1.
29
+
30
+ ### 🙏 Thank You
31
+
32
+ Thank you for trying!
33
+
34
+ ---
35
+
36
+
4
37
  ## v0.31.0 (April 3, 2026)
5
38
 
6
39
  **Title:** Storage safeguards and smarter peer sync
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinklabs/dingo",
3
- "version": "0.31.1",
3
+ "version": "0.32.0",
4
4
  "description": "Dingo is a Cardano blockchain data node",
5
5
  "main": "index.js",
6
6
  "bin": {