Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions src/content/docs/updates/developer/2026-10-12-to-2026-10-19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
title: "October 12–19, 2026"
description: "Verified Dusk engineering progress from the previous seven days, with disclosure-safe summaries and public source links."
sidebar:
hidden: true
---

[← Developer Updates](/updates/developer/)

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.

## Phoenix

Released phoenix-core 0.36.0 and phoenix-circuits 0.9.0, hardening keys, transaction circuits and note encryption against degenerate inputs that could reveal or link a sender.
- Set the versions to phoenix-core 0.36.0 and phoenix-circuits 0.9.0 and moved the pending changelog entries under them. ([PR #327](https://github.com/dusk-network/phoenix/pull/327))
- Rejected equal sender-encryption blinders when a note was created, matching the existing zero-blinder check, so the protection reached senders outside the transaction circuit as well. ([PR #332](https://github.com/dusk-network/phoenix/pull/332))
- Constrained each output note's two sender-encryption blinders in the circuit to be nonzero and different, so a zero blinder could not expose the sender key and equal blinders could not link the sender. ([PR #331](https://github.com/dusk-network/phoenix/pull/331))
- Applied the binary decoders' subgroup check to note value commitments and sender encryptions decoded through Serde, with the JSON encoding unchanged. ([PR #326](https://github.com/dusk-network/phoenix/pull/326))
- Derived note ownership through the same shared-secret step that value decryption used, so no key owned an address built on a degenerate point; a check of existing mainnet and testnet notes found each kept its owner. ([PR #325](https://github.com/dusk-network/phoenix/pull/325))
- Cleared view keys from memory when they were dropped and printed secret and view keys as REDACTED in debug output, while transaction circuits printed only their public inputs. ([PR #324](https://github.com/dusk-network/phoenix/pull/324))
- Required the input notes of a transaction circuit to come from distinct tree positions, so the same note could not appear twice as an input, at two gates per pair of inputs. ([PR #323](https://github.com/dusk-network/phoenix/pull/323))
- Constrained the note key of each transaction output in the circuit to differ from the identity point, at one gate per key, and added regression tests confirming that identity sender keys were rejected. ([PR #322](https://github.com/dusk-network/phoenix/pull/322))

- Made public-key decoding reject keys whose parts were the identity point, matching the stealth-address decoder, and added tests that pinned where strict and legacy-compatible decoding differed. ([PR #321](https://github.com/dusk-network/phoenix/pull/321))
- Moved phoenix-core and phoenix-circuits to the curve libraries 0.16, PLONK 0.24 and Poseidon 0.44, so note creation refused a degenerate encryption and value decryption returned an error for an invalid one. ([PR #320](https://github.com/dusk-network/phoenix/pull/320))

## Exu

Updated Exu's WebAssembly task sandbox for version 0.3.0 and set up automated publishing of each version tag to the JSR package registry.
- Added a workflow that published each version tag to JSR from GitHub Actions without a stored token, and stopped when the tag did not match the version in the package file. ([PR #27](https://github.com/dusk-network/exu/pull/27))
- Set the version to 0.3.0, which broke compatibility: sandbox workers from 0.2.0 or earlier were refused, and module sources of an unsupported type raised an error when created. ([PR #25](https://github.com/dusk-network/exu/pull/25))
- Closed the remaining gaps reviewers found in the new sandbox features, including accepting URL objects created in another frame as module sources, imports and worker addresses. ([PR #24](https://github.com/dusk-network/exu/pull/24))

## Bls12\_381-bls

Added tests to the BLS signature library for gaps that mutation testing exposed, covering rejection of invalid keys and signatures and secret-key conversion. ([PR #57](https://github.com/dusk-network/bls12_381-bls/pull/57))

## Dusk Website (Private Repo)

Updated internal article links on the Dusk website so search engines indexed each article under a single address.

## Hedger (Private Repositories)

Reworked the Hedger web app around private payments and strengthened how the app and its core library protected keys and built private transfers.
- Reworked the app around one home screen for private payments, adding a test stablecoin next to DUSK, payments to many recipients from one list, payment requests by link or QR code, and read-only access for accountants. Consolidated payroll-style and invoice-style payments in one place while amounts and balances stayed private.
- Updated the app's wallet-connection and interface libraries to newer releases within their supported versions.
- Removed unused pages and interface components from the app and added lint and type checks to its automated tests, so code problems were caught before merging.

## Piecrust (Private Repo)

Optimized how Piecrust loaded compiled contracts and strengthened its handling of deep contract calls and stored state.
- Optimized contract loading so Piecrust reused contracts it had compiled before instead of re-checking and copying them for every call, which roughly tripled to quadrupled cheap contract reads per second on 2- and 4-core test nodes.
- Added an optional rule that reported a failed call as out of gas only when it actually ran out of fuel, for nodes to switch on together at an agreed block height.

## Node (Private Repo)

Optimized Rusk node read queries and strengthened how the node handled heavy request traffic and incoming transactions.
- Decoded each block producer's key once for the read queries at a block instead of on every query, which raised cheap read throughput on test nodes by about 25 to 64 percent.
- Added regression tests that pinned contract execution results and state roots across restarts, rollbacks and competing branches, so later changes to state handling were checked against pinned results.
- Introduced a dedicated type for the block state hash across consensus and node code, so it was not mixed up with other hashes.
- Extended the node's integration tests to run both with and without the archive feature, so archive storage and its queries were tested end to end.

## Protocol (Private Repo)

Strengthened the tests and arithmetic safety of Rusk's core protocol code.
- Added tests that pinned the exact bytes stakes, withdrawals and consensus messages signed, along with circuit sizes and host-query charges, after mutation testing found behaviour the existing tests missed.

[← Back to Developer Updates](/updates/developer/)
4 changes: 4 additions & 0 deletions src/content/docs/updates/developer/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ description: Browse periodic Dusk engineering updates by publication date and co

Developer updates summarize engineering work over a stated interval. Updates are listed newest first.

## [October 12–19, 2026](/updates/developer/2026-10-12-to-2026-10-19/)

Verified engineering progress across 3 public repositories, plus disclosure-safe summaries of qualifying private development.

## [October 5–12, 2026](/updates/developer/2026-10-05-to-2026-10-12/)

Verified engineering progress across 16 public repositories, plus disclosure-safe summaries of qualifying private development.
Expand Down
Loading