Skip to content

Release Notes - 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.

NetworkCompatible
mainnet
preprod-testnet
preview-testnet
musashi
  • Improved rollback safety by persisting the consumed_utxo_prune_floor retention 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 BatchDone at 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.2 to 8.3.0 and 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, and v1.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_hex and idx_asset_name_hex in migration v19 across supported databases, recomputed hexadecimal values from name, and made DROP migration 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 AllowInsecureHTTP for local development or testing.

  • 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.


Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: