Skip to content

September 28–October 5, 2026

← Developer Updates

This update covers verified engineering progress during the previous seven days. Work in private repositories is summarized without private links or implementation identities; links to public changes appear directly beside the summaries they support.

Expanded Piecrust state compatibility and execution controls while strengthening validation coverage.

  • Added a legacy finalization mode for historical chain replay while retaining strict behavior for later state. Preserved compatibility with earlier state-finalization rules.
  • Preserved contract memory lengths beyond the legacy 32-bit limit with versioned persisted-state encoding and checked promotion. Protected wide-memory state from truncation during persistence.
  • Added protocol-policy control for retaining nested events from reverted calls while preserving legacy receipt behavior.
  • Validated oversized inter-contract method names before text parsing across legacy and host-backed calls. Reduced unnecessary processing for inputs that exceeded the method-name limit.
  • Preserved historical event receipts for pre-Boreas initializer failures while keeping rolled-back state unchanged.
  • Added local and continuous-integration coverage reporting for Piecrust and Crumbles, including changed-line checks.

Strengthened Rusk node recovery, transaction readmission, and chain-state accounting.

  • Added operator-controlled circulating-supply validation with recoverable state updates and bounded height-index scans. Reduced repeated database work during chain synchronization while preserving atomic state transitions.
  • Reworked reverted-transaction readmission around shared policy checks, atomic storage, and typed outcomes. Made rollback handling more consistent under capacity and policy constraints.
  • Improved full-pool retry guidance and coordinated smaller corrections across node and wallet paths.
  • Centralized HTTP error classification for status codes, public messages, and telemetry categories. Kept service-unavailable responses consistent across HTTP paths.
  • Simplified database and serialization paths by removing repeated conversion and abstraction layers.

Updated Rusk protocol schedules and rule selection across node execution and the virtual machine.

  • Defined reward handling for successors of authenticated emergency blocks without changing block or wire formats.
  • Replaced scattered feature gates with typed schedules selected consistently at each block height. Aligned feature activation across node, execution, and virtual-machine paths.
  • Added chain-ID checks during transaction preverification and carried selected chain IDs into shielded deployments. Reduced cross-chain transaction handling mismatches.
  • Cached per-key BLS aggregation coefficients with bounds while preserving aggregation results and error behavior. Reduced repeated consensus-key computation.

Updated Codecov upload steps for GitHub’s Node.js 24 transition; wallet uploads still require repository token configuration.

  • Moved the repository’s coverage upload step from Codecov Action v4 to v7. (PR #996)
  • Pinned the wallet coverage workflow to Codecov Action v7.1.1 while retaining non-blocking uploads. (PR #119)
  • Pinned the reusable npm coverage workflow to Codecov Action v7.1.1 while preserving its existing inputs. (PR #64)

Refined the wallet README’s description, layout, and badge markup, making its non-custodial and cross-browser scope easier to scan. (PR #120)

Updated Base58 deserialization with fixed encoded-size bounds, rejecting oversized input before allocation while preserving the valid format. (PR #49)

Strengthened encryption gadgets with canonical 64-bit map constraints, rejecting alternate circuit representations while reducing gate counts. (PR #36)

Strengthened Schnorr signing and multisignature validation across equivalent generator encodings and invalid participant keys.

  • Rejected invalid or empty participant-key sets across multisignature signing, share verification, combination, and aggregation. (PR #91)
  • Normalized variable generators before deriving nonces, signature points, and challenge public keys. (PR #90)

Strengthened JubJub key-exchange and secret-handling boundaries by rejecting invalid peer points and erasing temporary entropy after scalar generation.

  • Rejected invalid and small-order public points in Diffie-Hellman key exchange while preserving results for prime-order points. (PR #178)
  • Wiped the scalar-generation entropy buffer after reduction whenever the zeroize feature is enabled. (PR #179)

Corrected hash-to-curve edge cases and bounded unencodable XMD configurations, aligning exceptional inputs with RFC 9380 while preserving ordinary outputs.

  • Rejected oversized domain-separation configurations whose processed length cannot be encoded, with a focused regression test. (PR #197)
  • Handled zero and isogeny-kernel inputs according to RFC 9380 and added differential coverage for the exceptional cases. (PR #195)

Simplified PLONK proving and circuit APIs while tightening canonical proof, key, and decomposition checks.

  • Removed `Default` from the core `Circuit` trait and kept the bound only on APIs that instantiate a default circuit. (PR #984)
  • Removed unused polynomial powers, aggregate-witness challenge work, and oversized multiplication domains. (PR #978)
  • Added exact proof decoding, canonical key parsing, and full-width decomposition constraints alongside compatibility checks. (PR #982)

Established a reviewable Dusk-side contract and tooling candidate with reproducibility controls and explicit operational gates.

  • Added beneficiary-authenticated withdrawal of unused dispatch credit with rollback, isolation, and compatibility checks. (PR #10)
  • Added an owner-supervised workflow that reproduces exact commit candidates from immutable inputs on a protected runner. (PR #3)
  • Rebased the Dusk-side contracts and supporting tooling on current dependencies, with custody, indexing, compatibility, and CI checks. (PR #1)

Added robots directives and regression coverage for search and AI-use preferences, making the intended crawler policy explicit after deployment. (PR #154)

Changed Principal JSON serialization to use validated Dusk addresses, simplifying data-driver inputs without altering onchain storage. (PR #54)

Strengthened DuskEVM transaction handling and finalized-event processing while simplifying shared contract, adapter, and test utilities.

  • Removed unused on-chain code and consolidated repeated contract helpers without changing behavior.
  • Removed unused adapter code and consolidated repeated transaction-submission and blob-sidecar checks.
  • Removed unused test harness tooling and consolidated repeated integration helpers.

Improved public-content interpretation for search and AI agents while preserving existing crawl boundaries and page structure.

  • Added explicit search and AI-use signals to the website crawler policy while preserving public and preview boundaries.
  • Removed repeated decorative headings from agent-readable story content while preserving the visible and accessible page structure.

Strengthened wallet transaction construction, history enrichment, and cached-note consistency.

  • Added typed transaction builders for public and shielded flows while retaining compatibility with existing helper interfaces. Standardized funding, gas, and operation setup across wallet transaction types.
  • Rejected invalid text and pointer inputs at wallet transaction-data boundaries while preserving byte-oriented behavior.
  • Consolidated the shielded transaction build pipeline across transfers, deployments, conversions, and staking.
  • Simplified wallet form, transaction parsing, request, and configuration helpers without changing their intended behavior.

Updated application-data conversion to retain exact values across JSON and contract-driver boundaries.

  • Encoded 64-bit and 128-bit integers as decimal strings and accepted both strings and numbers on input. Prevented precision loss for JavaScript clients handling large values.

← Back to Developer Updates