@blinklabs/dingo 0.39.1 → 0.39.3

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/AGENTS.md CHANGED
@@ -24,6 +24,7 @@ make golines
24
24
  - No `time.Sleep()` for sync — use `internal/test/testutil/` (`WaitForCondition`, `RequireReceive`, `context.WithTimeout`).
25
25
  - Integration tests: `internal/integration/` + `database/immutable/testdata/` (real blocks, slots 0–1.3M).
26
26
  - Mock fixtures come from `github.com/blinklabs-io/ouroboros-mock` (`fixtures/`, `ledger/`, `conformance/`). Never duplicate mocks inside dingo — extend the shared library so every Blink Labs app (dingo, gouroboros, adder, ...) reuses the same test surface.
27
+ - DevNet end-to-end (`internal/test/devnet/run-tests.sh`): validate any change touching consensus, block production, header/VRF/KES/OpCert verification, chain selection, mempool, tx submission, NtN/NtC protocols, epoch boundaries, or nonce computation. Brings up Dingo + cardano-node side by side with `txpump` driving the mempool, so it catches divergence from the reference implementation that unit tests miss. Conformance tests in `internal/test/conformance/` are still mandatory after every change — DevNet is the additional bar for consensus-affecting work.
27
28
 
28
29
  ## Non-obvious invariants
29
30
 
package/CLAUDE.md CHANGED
@@ -11,6 +11,7 @@ Go Cardano node (Ouroboros). Derivable info (build targets, flags, package layou
11
11
  - `make test` runs with `-race`.
12
12
  - Integration tests in `internal/integration/` load real blocks from `database/immutable/testdata/`.
13
13
  - Mock fixtures come from `github.com/blinklabs-io/ouroboros-mock` (`fixtures/`, `ledger/`, `conformance/`). Never add local ledger/consensus/network mocks — extend the shared library.
14
+ - DevNet (`internal/test/devnet/run-tests.sh`, see `internal/test/devnet/README.md`): use to validate any change that touches consensus, block production, header/VRF/KES/OpCert verification, chain selection, mempool, tx submission, NtN/NtC protocols, epoch boundaries, or nonce computation. Brings up Dingo + cardano-node side by side with `txpump` feeding the mempool, so it surfaces divergence from the reference implementation that unit and conformance tests miss. Run conformance (`internal/test/conformance/`) after every change; run DevNet additionally for consensus-affecting work.
14
15
 
15
16
  ## Pre-commit
16
17
 
package/README.md CHANGED
@@ -503,20 +503,21 @@ The DevNet runs a private Cardano network with Dingo and `cardano-node` producin
503
503
 
504
504
  ### Architecture
505
505
 
506
- The DevNet uses Docker Compose to run 3 containers on a bridge network:
506
+ The DevNet uses Docker Compose to run three Cardano nodes plus a load generator on a bridge network:
507
507
 
508
508
  | Container | Role | Host Port |
509
509
  |-----------|------|-----------|
510
510
  | `dingo-producer` | Dingo block producer (pool 1) | 3010 |
511
511
  | `cardano-producer` | cardano-node block producer (pool 2) | 3011 |
512
512
  | `cardano-relay` | Relay node (no block production) | 3012 |
513
+ | `txpump` | Submits payment transactions into Dingo's mempool | — |
513
514
 
514
- A `configurator` init container generates fresh pool keys and genesis files before nodes start.
515
+ A `configurator` init container generates fresh pool keys and genesis files before nodes start. The `txpump` sidecar comes up after Dingo is healthy and continuously feeds the mempool so block bodies and tx-submission paths are exercised alongside consensus.
515
516
 
516
517
  ### Prerequisites
517
518
 
518
519
  - Docker with the Compose plugin (`docker compose`)
519
- - Go 1.24+
520
+ - Go 1.25+
520
521
 
521
522
  ### Running the Automated Tests
522
523
 
@@ -561,7 +562,9 @@ docker compose -f docker-compose.yml logs -f dingo-producer
561
562
  ./stop.sh
562
563
  ```
563
564
 
564
- Containers remain running until you stop them. The DevNet parameters (in `testnet.yaml`) use 1-second slots and 1500-slot epochs (~25 minutes per epoch), so you can observe epoch transitions, leader election, and stake snapshot rotation relatively quickly.
565
+ Containers remain running until you stop them. The DevNet parameters (in `testnet.yaml`) use 1-second slots and 500-slot epochs (~8 minutes per epoch) with `activeSlotsCoeff=0.4` and `securityParam (k)=40`, so you can observe epoch transitions, leader election, and stake snapshot rotation relatively quickly.
566
+
567
+ See [`internal/test/devnet/README.md`](internal/test/devnet/README.md) for full details on the harness, configurator, available test scenarios, and port/address overrides.
565
568
 
566
569
  ### Local DevNet (Without Docker)
567
570
 
package/RELEASE_NOTES.md CHANGED
@@ -1,6 +1,95 @@
1
1
  # Release Notes
2
2
 
3
3
 
4
+ ## v0.39.2 (May 2, 2026)
5
+
6
+ **Title:** Improve fork recovery and hard fork readiness
7
+
8
+ **Date:** May 2, 2026
9
+
10
+ **Version:** v0.39.2
11
+
12
+ Hi folks! Here’s what we shipped in v0.39.2.
13
+
14
+ ### ✨ What's New
15
+
16
+ * Added **hard fork validation plumbing:** Dingo now includes early validation infrastructure for scheduled era transitions and hard fork behavior, which improves confidence before future network changes take effect.
17
+
18
+ ### 💪 Improvements
19
+
20
+ * Improved **era transition protocol version handling:** Dingo now advances scheduled era transitions with the right protocol version, which makes era changes more reliable and reduces the chance of stalling at a fork boundary.
21
+ * Refined **slot aware post fork protocol handling:** Dingo now selects the right protocol rules for the slot it is forging, which reduces the chance of producing era incompatible boundary blocks during scheduled forks.
22
+
23
+ ### 🔧 Fixes
24
+
25
+ * Restored **safer at tip fork recovery:** Dingo now backs out more effectively from repeated validation failures at tip, which gives chain selection more room to escape a bad fork instead of getting trapped on the same failing path.
26
+ * Corrected **VRF nonce handling at epoch boundaries:** Dingo now carries forward the right nonce values across epoch boundaries, which keeps leader checks and boundary validation aligned with the active chain.
27
+
28
+ ### 📋 What You Need to Know
29
+
30
+ * Clarified **patch release upgrade guidance:** This is a patch release, and normal upgrade procedures are generally sufficient.
31
+ * Highlighted **safer tip recovery behavior:** Nodes are less likely to remain stuck on the same failing fork after a tip validation problem.
32
+ * Emphasized **safer era transitions and hard forks:** Scheduled era changes now progress more reliably, with lower risk of stalls or boundary blocks that do not match the active era.
33
+ * Summarized **corrected nonce behavior at epoch boundaries:** Epoch boundary validation and leader related behavior now stay aligned with the correct nonce progression.
34
+
35
+ ### Recommended Network Compatibility ⚠️
36
+
37
+ | Network | Compatible |
38
+ |---------------------|------------|
39
+ | mainnet | ⛔ |
40
+ | preprod-testnet | ⛔ |
41
+ | preview-testnet | ✅ |
42
+
43
+ ### 🙏 Thank You
44
+
45
+ Thank you for trying!
46
+
47
+ ---
48
+
49
+ ## v0.39.1 (May 1, 2026)
50
+
51
+ **Title:** Safer pruning, rollback recovery, and snapshot nonces
52
+
53
+ **Date:** May 1, 2026
54
+
55
+ **Version:** v0.39.1
56
+
57
+ Hi folks! Here’s what we shipped in v0.39.1.
58
+
59
+ ### ✨ What's New
60
+
61
+ * Noted **no new features:** This patch release focuses on improvements and fixes.
62
+
63
+ ### 💪 Improvements
64
+
65
+ * Refined **archive aware Bark cleanup behavior:** Archived blocks now remain resolvable during prune and cleanup work because Bark leaves archive aware tombstones in place and reads honor them.
66
+
67
+ ### 🔧 Fixes
68
+
69
+ * Preserved **safer rollback cleanup near the Mithril boundary:** Rollback cleanup now keeps gap UTxOs intact near the Mithril boundary, which makes rollback recovery safer.
70
+ * Hardened **archive aware Bark cleanup handling:** Bark pruning and archival handling now preserve the resolvability of archived blocks during cleanup.
71
+ * Corrected **snapshot bootstrap nonce handling across state layouts:** Snapshot bootstrap now reads epoch and snapshot nonces correctly across supported state layouts, which keeps epoch boundary validation correct after bootstrap.
72
+
73
+ ### 📋 What You Need to Know
74
+
75
+ * Clarified **patch release upgrade guidance:** This is a patch release, and normal upgrade procedures are sufficient for most operators and users.
76
+ * Highlighted **safer pruning and rollback recovery:** Bark pruning now preserves resolvable live UTxOs, and Mithril boundary rollback recovery now preserves the required gap block state for safe recovery.
77
+ * Corrected **snapshot nonce handling after bootstrap:** Snapshot bootstrapped nodes now read the right nonce data across supported snapshot layouts so epoch boundary header and VRF validation continue correctly after bootstrap.
78
+
79
+ ### Recommended Network Compatibility ⚠️
80
+
81
+ | Network | Compatible |
82
+ |---------------------|------------|
83
+ | mainnet | ⛔ |
84
+ | preprod-testnet | ⛔ |
85
+ | preview-testnet | ✅ |
86
+
87
+ ### 🙏 Thank You
88
+
89
+ Thank you for trying!
90
+
91
+ ---
92
+
4
93
  ## v0.39.0 (April 30, 2026)
5
94
 
6
95
  **Title:** Era-aware forging, Bark tuning, and safer diagnostics
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinklabs/dingo",
3
- "version": "0.39.1",
3
+ "version": "0.39.3",
4
4
  "description": "Dingo is a Cardano blockchain data node",
5
5
  "main": "index.js",
6
6
  "bin": {