Dusk | Release Cycle #31

Dusk Release Cycle Update #31

Our development planning features a Release Cycle of three weeks, providing a consistent stream of updates to the community, developers, and businesses relying on Dusk technology.

The publicly available Dusk Network GitHub contains over 18 active repositories, each focused on a different technical subject. Progress in each is ongoing and can be followed in real-time. The Release Cycle process is currently applied to some of our most active repositories.

Release Cycle Update Summary

In the last 3 weeks there have been many updates and new version releases, along with the release of the web wallet and node. 

 The Rusk repository has made significant progress with its version 0.7.0, which introduces various additions, fixes, and changes. This includes enhancements to HTTP functionality and multiple API additions. Despite the focus on this new release, some issues were both opened and closed during this period.

The Piecrust repository has seen limited updates, which is understandable given its recent official release. The team is now turning their attention to other repositories. In addition, the Wallet-core repository has been particularly active, releasing version 0.21.0 with new features and fixes, including the integration of a web wallet.

On the libraries front, Plonk has released a new version, 0.19.0, bringing several fixes and improvements, especially in its modular implementation. The Kadcast repository has been relatively quiet with no new issues reported during this period. Other libraries such as Citadel, Merkle, Poseidon252, Schnorr, and Phoenix Core have also received updates. These updates mainly consist of dependency upgrades and structural changes, reflecting the ongoing efforts to refine and enhance the network's infrastructure.

Additional noteworthy developments include the Rusk repository's progress in enhancing the transfer contract by integrating the dusk-merkle tree. This upgrade simplifies processes and resolves existing issues. The Piecrust repository has released version 0.6.0, focusing on improved event handling and debugging capabilities. 

The Wallet-cli’s latest version addresses updates related to Note's key and cache. Plonk has introduced new capabilities for circuit compression, and Citadel has seen new issues opened for request authoring, among other improvements. The Merkle repository has implemented custom serialization features, while Poseidon252 has been busy fixing missing features and adding new benchmarks. Both the Schnorr and Dusk-PKI repositories have updated their dependencies for enhanced performance.

Dusk’s commitment to Release Cycle planning ensures regular and predictable updates, a practice adopted by major tech companies to enhance transparency and consistency in software development.

In conclusion, Dusk continues its dedication to providing regular updates and ensuring transparency in its development process. The latest cycle of updates across various repositories reflects the team's ongoing commitment to enhancing the Dusk ecosystem. For more detailed information, the community is encouraged to visit the Dusk Network's GitHub page.

release cycle graphic
Dusk's Release Cycle flow

For the community's benefit, we have divided our repositories in 3 categories, main, libraries and other. Below you will find a selection of some (but not all) of the work that is being done in our repositories, including recent advancements.

Main Repositories

Rusk

The Dusk's Smart Contract Platform.

Update Summary

Rusk v0.7.0 was released on 1st January 2024, and features multiple additions, fixes, and changes to the previous version, to go along with the release of the Rusk Node, as scheduled in the Dusk Roadmap. There are too many changes to list, but include additions around HTTP functionality, multiple API additions, and the removal of multiple features.  

While the majority of the work on Rusk centered on the new release, but there were also some opened and closed issues in the last 3 weeks.

Opened

Preverify ZK proofs #1228

Add gas spent API #1225

Create error transaction when user tries to unstake for the only active node #1215

consensus: Update Certificate and Committee-related terminology #1208

consensus: round in Sortition hash is redundant #1204

Closed

Add gas price API #1219

consensus: Reduce Maturity to 1 Epoch #1207

consensus: restart consensus when invalid blocks are produced #1203

consensus: Verify validation quorum votes on collecting a Ratification message #1202

Piecrust

Piecrust is a Rust workspace containing two crates, piecrust and piecrust-uplink, that together form the WASM virtual machine for running, handling and creating Dusk smart contracts.

Update Summary

There were not many updates to Piecrust, to be expected given that it was released officially in December and development attention has turned to other repositories. 

Opened issues

In the past 3 weeks, no issues were opened in the piecrust repository.

Closed issues

Proc Macro for uplink::wrap_call #308

Wallet-core

Library providing functionalities to create wallets compatible with Dusk Network

This library is used to implement the official Dusk CLI wallet.

Update Summary

This was a big development cycle for the wallet, with the web wallet being released at the end of December. Release v0.21.0 was made live, and featured the following updates: 

Added

  • Add seed-file to create command [#226]
  • Add name to export command

Fixed

  • Fix stake_allow command [#222]

Changed

  • Change dusk-wallet-core to 0.24.0-plonk.0.16-rc.2
  • Change DEFAULT_MAX_ADDRESSES from 255 to 25

Opened issues

wallet-cli panics if the cache has different notes of an old mnemonic #228

Closed issues

Save mnemonic to file #226

interactive stake-allow doesn't work #222

Libraries

Plonk

This is a pure Rust implementation of the PLONK proving system over BLS12-381

This library contains a modularised implementation of KZG10 as the default polynomial commitment scheme.

Update Summary

There was a new release on 3rd January 2024 v0.19.0 which featured the following updates: 

Fixed

  • Fix inconsistency in gate ordering of arithmetic verifier key [#797]
  • Fix leading coefficients might be zero [#796]
  • Fix tests when default features are turned off by placing them behind the alloc feature

Changed

  • Improve InvalidCircuitSize error [#792]
  • Hide all modules except 'prelude' [#782]
  • Turn Composer trait into a struct [#802]
  • Rename Arithmetization to Gate [#802]
  • Change internal module structure [#805]:
  • Move compiler module to root
  • Move prover and verifier modules under compiler
  • Move compress module under composer
  • Move constraint_system module under composer
  • Move permutation module under composer
  • Change API for circuit (de-)compression [#804]

Removed

  • Remove Builder struct with introduction of Composer struct [#802]
  • Remove example from README in favor of an actual example in the example directory that is behind the alloc feature [#346]

Added

  • Add example for circuit creation [#346]

Opened/Closed issues

Closed

Restructure modules #805

Improve API for circuit (de-)compression #804

Restructure modules #805

Kadcast

Implementation of the Kadcast Network layer according to the latest version of the paper to date (2021)Kadcast is an UDP-based peer-to-peer protocol in which peers form a structured overlay.

Opened/Closed issues

In the past 3 weeks, no issues were opened or closed in the kadcast repository.

Other

Citadel

This repository contains the implementation of Citadel, a protocol that integrates a self-sovereign identity system into the Dusk blockchain. An academic paper with further details about the protocol can be found here.

It also contains Shelter, a version of Citadel meant for non-Blockchain use cases. Documentation on this version will be provided soon.

Update Summary

Citadel v0.8.0 was released on 3rd January 2024, and included the following updates: 

Changed

  • Update dusk-schnorr dependency to "0.18"
  • Update dusk-poseidon dependency to "0.33"
  • Update poseidon-merkle dependency to "0.5"
  • Update dusk-plonk dependency to "0.19"
  • Update phoenix-core dependency to "0.24"

Opened/Closed

There were no opened or closed issues in the last 3 weeks.

Merkle

A sparsely populated Merkle Tree, parameterized over its height and arity.

Update Summary

There was a new release on 3rd January, poseidon-merkle_v0.5.0 which had the following changes: 

Changed

  • Update dusk-plonk to 0.19
  • Update dusk-poseidon to 0.33

Opened/Closed

In the past 3 weeks, no issues were opened or closed in the merkle repository.

Poseidon252

Reference implementation for the Poseidon Hashing algorithm.

Update Summary

Poseidon252 v0.33.0 was released on 3rd January, and features the following updates:
Changed

  • Update dusk-plonk to 0.19
  • Update dusk-hades to 0.24

Opened

MDS Matrix Parameters might be weak #237

Allow to encrypt different plaintext sizes #236

Closed

There were no closed issues in the past 3 weeks for the Poseidon252 repository.

Schnorr

The Schnorr signature algorithm, given its namesake by its creator Claus Schnorr, is a digital signature scheme which provides a simple method of creating short signatures.

The implementation has been created using the Poseidon hash function, the paper for which can be found here.

For a reference to the algorithm, please see the docs.

Update Summary

Schnorr v0.18.0 was released on 3rd January, and made the following changes:

Changed

  • Update dusk-plonk -> 0.19
  • Update dusk-poseidon -> 0.33

Opened

In the past 3 weeks, no issues were opened or closed in the Schnorr repository.

Closed 

Refactor Signature and Proof to be more consistent to bls12_381-sign #81

Phoenix Core

Phoenix is an anonymity-preserving zero-knowledge proof-powered transaction model formalized and developed by Dusk Network.

Update Summary

On 3rd January, v0.24.0 was released, with the following updates:

Changed

  • Update dusk-poseidon -> 0.33
  • Update dusk-schnorr -> 0.18

Opened/Closed issues

In the past 3 weeks, no issues were opened or closed in the Phoenix repository.

Wallet-core

A library for generating and dealing with transactions.

Update Summary

Dusk-wallet-core v0.21.8 was released.

Opened/Closed issues

In the past 3 weeks, no issues were opened or closed in the Wallet-core repository.

Hades252

Implementation of Hades252 permutation algorithm over the Bls12-381 Scalar field.

Update Summary

Hades252 v0.24.0 was released on 3rd January, with the following changes:

  • Update dusk-plonk from 0.13 to 0.14

Opened/Closed issues

In the past 3 weeks, no issues were opened or closed in the Hades252 repository.