Skip to content

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

NetworkCompatible
mainnet
preprod-testnet
preview-testnet
musashi
  • Improved event delivery so ordinary subscribers that stall past the delivery timeout detach with ErrEventSubscriberStalled and 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 .git or node_modules content 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 FindIntersect work for each request by removing duplicate points and applying a per connection lookup budget; exhausted requests return the existing IntersectNotFound result.

  • Enhanced database cleanup so incomplete blob deletions return ErrBlobDeleteIncomplete, log errors, and expose dingo_database_blob_orphans_total after 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 NetworkMagic differs 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 txpump wait 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: false while 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 errStorageDrainUnconfirmed when 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 *ChainsyncClientStateSnapshot instead of *ChainsyncClientState.

  • Enforced era specific reward withdrawal validation by rejecting amounts greater than the active reward balance.

  • Returned typed errors when LeiosFetch cannot provide endorser block or transaction body data, while keeping malformed bitmap errors distinct. Without an optional vote manager, LeiosFetch now returns a valid empty MsgVotes response, while standalone LeiosVotes remains 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-up processing 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.Stop cannot 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/evaluate to evaluate transaction CBOR without submitting it and return redeemer execution units for pointers such as spend:0 or mint:0. The endpoint returns 415 for the wrong content type, 413 for oversized bodies, 400 for empty or invalid CBOR bodies, and 500 for other evaluation failures.

Full Changelog: v0.70.1…v0.70.2


Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: