Release Notes - v0.70.2
v0.70.2
Section titled “v0.70.2”Title: Improve ledger safety, synchronization, and API reliability
Date: Not provided
Version: v0.70.2
This release improves ledger validation, synchronization resilience, database safety, transaction handling, and API accuracy for Dingo nodes and library consumers.
Recommended Network Compatibility ⚠️
Section titled “Recommended Network Compatibility ⚠️”| Network | Compatible |
|---|---|
| mainnet | ⛔ |
| preprod-testnet | ✅ |
| preview-testnet | ✅ |
| musashi | ✅ |
✨ Highlights
Section titled “✨ Highlights”-
Improved event delivery so ordinary subscribers that stall past the delivery timeout detach with
ErrEventSubscriberStalledand telemetry, while chainsync, chain update, and blockfetch subscribers retain lossless blocking behavior. Optional block event detachment remains non fatal. -
Corrected operational certificate recovery at the Mithril boundary by importing each pool’s certified counter from the snapshot and ignoring stale pre boundary history while retaining contiguous rotation checks.
-
Strengthened documentation parity discovery by canonicalizing paths, normalizing separators, and excluding generated worktrees and nested
.gitornode_modulescontent for consistent checks across platforms. -
Secured block forging by selecting candidate transactions from one ledger validation snapshot and rechecking the parent tip before signing.
-
Bounded
FindIntersectwork for each request by removing duplicate points and applying a per connection lookup budget; exhausted requests return the existingIntersectNotFoundresult. -
Enhanced database cleanup so incomplete blob deletions return
ErrBlobDeleteIncomplete, log errors, and exposedingo_database_blob_orphans_totalafter durable metadata commit. -
Reported the known ledger tip height through UTxO RPC instead of looking up a stored block and falling back to height zero.
-
Aligned reward calculations with the performance epoch while using the calculation epoch for epoch length, correcting Preview reward pots and renaming the applied stake rewards log field to
performance_pparams_type. -
Rejected startup when a nonzero peer snapshot
NetworkMagicdiffers from the node value; zero continues to mean that the snapshot value is unspecified. -
Restored the epoch 0 to 1 monetary expansion round by seeding epoch zero reward pots and safely handling fresh stakeless genesis snapshots.
-
Validated fetched Leios transactions against their manifest position, size, and hash before caching or using them, including data retained from partial fetches.
-
Bounded Genesis recovery scans with per pass memoization while preserving a fail closed ChainSync fallback for unresolved rollback paths.
-
Verified TPraos nonce VRF proofs in Shelley through Alonzo headers from the signed header body CBOR before admitting those headers.
-
Corrected Koios parity checks for pool presence and pool parameter epochs, preventing false parameter only mismatches and comparing pool cost and margin from the stake epoch while keeping blocks produced tied to the parameter epoch.
-
Stabilized accelerated DevNet transaction propagation and stake key cleanup by making
txpumpwait for the effective runtime genesis and preserving stake key directories owned by callers. -
Contained Leios endorser block offers and manifest sizes, limiting each cache entry to 16 MiB and the aggregate cache to 256 MiB with deterministic eviction; oversized entries reload without caching.
-
Continued structural and validity interval checks for transactions marked
IsValid: falsewhile skipping phase two evaluation, and surfaced Plutus mapping errors through UTxO RPC. -
Released node to client chainsync state when connections close or are replaced without duplicating node to node cleanup.
-
Preserved the configured shutdown deadline during live restore and truncate operations, and escalated to
errStorageDrainUnconfirmedwhen the supervisor needed restart recovery. -
Distinguished prime mainnet from Cardano mainnet by propagating the configured network identity instead of relying on shared mainnet genesis identity.
-
Guarded the Leios block builder capability at compile time so interface changes fail during builds instead of during block forging.
-
Rejected wrapped indexes and out of range asset values across numeric conversions, deletion ranges, SQLite signed values, assets, and UTxOs, including on 32 bit builds.
-
Prevented arithmetic overflow in governance and donations with checked additions and duration guards that fail closed before partial state persistence.
-
Configured the load replay security parameter for the correct era before replay hooks and rollback validation run.
-
Seeded post Byron epoch nonces at multi era boundaries from
ShelleyGenesisHash, failing closed when the required configuration is missing. -
Added point in time chainsync client snapshots from
LookupClient, including an independent cursor hash, and synchronized rollback state so a slow connection does not block other clients. Callers must use*ChainsyncClientStateSnapshotinstead of*ChainsyncClientState. -
Enforced era specific reward withdrawal validation by rejecting amounts greater than the active reward balance.
-
Returned typed errors when
LeiosFetchcannot provide endorser block or transaction body data, while keeping malformed bitmap errors distinct. Without an optional vote manager,LeiosFetchnow returns a valid emptyMsgVotesresponse, while standaloneLeiosVotesremains unavailable. -
Filtered stale or unknown issuer OCIN announcements after cryptographic validation without disconnecting the connection or recording, processing, publishing, or relaying the announcements. Fresh announcements retain normal handling.
-
Rejected blocks in standard profiles when zero active stake or a missing or nonpositive active slot coefficient prevents leader eligibility evaluation.
catch-upprocessing can defer evaluation when the leader stake snapshot is unavailable. -
Contained panics in leader selection, forged block validation, and block publication callbacks, logging stack traces, reporting existing phase failures, and counting recovered panics with
dingo_forge_panic_recovered_total{phase}so the next forge cycle can continue. -
Allowed Conway PV10 and PV11 script-hash reward withdrawals without the DRep delegation gate. Key-hash withdrawals continue to require that gate.
-
Serialized startup cleanup and shutdown so
Node.Stopcannot race rollback after a startup failure or close components twice. -
Repaired Go ledger and mempool benchmark setup so benchmarks no longer panic or fail before measurement.
-
Refreshed user documentation and examples with compatibility, endpoint, and version details, and added GoDoc documentation for the root package.
-
Introduced
POST /api/v0/utils/txs/evaluateto evaluate transaction CBOR without submitting it and return redeemer execution units for pointers such asspend:0ormint:0. The endpoint returns415for the wrong content type,413for oversized bodies,400for empty or invalid CBOR bodies, and500for other evaluation failures.
Full Changelog: v0.70.1…v0.70.2
Docs authored by Doc Holiday