@blinklabs/dingo 0.39.2 → 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 +1 -0
- package/CLAUDE.md +1 -0
- package/README.md +7 -4
- package/RELEASE_NOTES.md +45 -0
- package/package.json +1 -1
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
|
|
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.
|
|
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
|
|
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,51 @@
|
|
|
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
|
+
|
|
4
49
|
## v0.39.1 (May 1, 2026)
|
|
5
50
|
|
|
6
51
|
**Title:** Safer pruning, rollback recovery, and snapshot nonces
|