Release Notes - v0.70.16
v0.70.16
Section titled “v0.70.16”Title: Protect rollback state and improve network reliability
Date: 2026-09-20
Version: v0.70.16
Release: v0.70.16
This release updates Dingo from v0.70.15 to v0.70.16. It strengthens rollback and transaction safety, connection lifecycle handling, block synchronization, transaction submission, Mithril processing, database migration, retrieval security, release validation, and test coverage.
Recommended Network Compatibility ⚠️
Section titled “Recommended Network Compatibility ⚠️”| Network | Compatible |
|---|---|
| mainnet | ⛔ |
| preprod-testnet | ✅ |
| preview-testnet | ✅ |
| musashi | ✅ |
Runtime and operational improvements
Section titled “Runtime and operational improvements”-
Improved rollback safety by persisting the
consumed_utxo_prune_floorretention floor and rejecting ledger or lifecycle rollbacks and truncations below data that Dingo permanently removed. Peer and replay recovery now resynchronizes or limits recovery safely and exposes a clamp metric. Operators must truncate at or above the floor or bootstrap a new node. -
Added a pending transaction barrier and transaction completion callback so rollback waits for uncommitted writes, deferred events publish only after transaction completion, and rollback restoration remains safe.
-
Protected replacement connections by associating synchronization, serving, query, and notification cleanup with their owning connection through ChainSync, Leios serving waiters, LocalStateQuery pins, and LeiosNotify. Stale close callbacks no longer affect replacement connections that reuse a connection identifier.
-
Corrected block retrieval after rollback by tying BlockFetch batches to rollback generations, discarding superseded bodies, tracking applied block progress accurately, validating endpoints, and returning
BatchDoneat normal completion without closing the transport. -
Preserved the specific rejection causes that Conway and Dijkstra report through LocalTxSubmission, classified infrastructure failures generically, encoded empty-input errors by era, and kept sessions open for representable rejects.
-
Updated the Dingo Blockfrost Explorer example from Vite
8.2.2to8.3.0and refreshed its lockfile tooling dependencies. -
Prevented later pushes from canceling publish runs on the main ref while preserving one-at-a-time execution for other refs.
-
Retained expiry epochs for imported Mithril DReps, so snapshot data determines when they expire instead of leaving them active indefinitely; database semantics now reflect this behavior.
-
Stabilized startup reward precomputation by removing a race from its test and strengthening queued epoch and nonce assertions.
-
Strengthened CI validation by staging lint, vulnerability checks, quick SQLite tests, platform tests, builds, and Docker jobs; gated builds and releases on tests, made release uploads fail loudly, and removed standalone workflows.
Dependency, database, and security improvements
Section titled “Dependency, database, and security improvements”-
Refreshed protocol and storage dependencies to
v0.205.5,v0.17.1, andv1.58.0, and kept VRF mismatch tests reliable. -
Finalized Mithril live stake from running totals to improve performance.
-
Expanded Leios BlockTxs interoperability validation with Haskell reference coverage for 70 transactions and manifest validation.
-
Removed write-only
asset.name_hexandidx_asset_name_hexin migration v19 across supported databases, recomputed hexadecimal values fromname, and madeDROPmigration replay safe. Operators must account for this schema change when upgrading. -
Restricted Mithril retrieval to initial URLs, DNS-resolved destinations, redirects, proxies, and custom transports, preventing access to private or special-use destinations. Private-network retrieval now requires
AllowInsecureHTTPfor local development or testing.
Test and validation improvements
Section titled “Test and validation improvements”-
Applied empty genesis previous block counts for Conway-at-genesis epoch 1 rewards and expanded conformance checks for pots and stake snapshots.
-
Simplified the SQLite WAL checkpoint timing test by running it sequentially and using a shared 10-second bound to reduce runner-load flakiness.
Docs authored by Doc Holiday