Dusk | Release Cycle Update #26
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
Testnet
We’ve deployed a new testnet during this release cycle based on the latest versions of Rusk and Piecrust. This network has proven to be far more stable and performant than the ones we’ve run prior.
During preliminary testing, we were able to push between 70 and 150 transactions into a single block without issue, on very low spec cloud systems.
Many of these changes have been realized by integrating Piecrust, but also by the recent changes to Piecrust itself. For example, we now limit the amount of re-execution happening within the VM by tracking memory pages that changed during an execution.
Going forward, we expect a lot of improvements in further stabilizing the network and consensus, and decreasing consensus time to see where the limits of our network lie.
Piecrust
A number of important changes have been made with the release of Piecrust v0.10.0 and Crumbles v0.2.0, paving the way forward for Dusk to be able to allow for hyperfast sync-ups.
Due to the way Dusk handles the storage of smart contract memories/data, it is possible for us to do proof of inclusions on the current active state. This would allow clients to only sync-up the current network state, and proof that the state they receive is legitimate. This makes it so that new clients can easily by-pass going through all the network history.
More changes will be required to enable full hyperfast sync-ups, but during this release cycle we’ve laid the foundation for it.
Wallet CLI
During the last release cycle update we’ve introduced numerous improvements and bug fixes to the wallet CLI. Notably, we added the ability to use the wallet CLI offline for certain operations and fixed a bug where older wallet versions could corrupt.
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
Dusk-blockchain
Official reference implementation of the DUSK Network protocol in Golang.
Opened issues
In the past 3 weeks, no issues were opened in the blockchain repository.
Closed issues
node: Re-enable consensus task on a failed block acceptance #1537
Rusk
The Dusk's Smart Contract Platform.
Update Summary
In the Rusk repository, recent developments include opened issues aimed at improving data handling, bug fixes, and feature additions. These changes are part of ongoing efforts to enhance functionality and stability. Closed issues include a fix for a Docker image build failure on ARM, the addition of GraphQL SDL, and the implementation of a mempool API. Ongoing issues address various aspects of data management and retrieval, with a focus on enhancing the license contract and addressing platform-specific concerns.
Opened
license contract (get_licenses) - use the feeder query when returning collection of elements #1054
Add state information query to the license contract #1052
Panic in use_license if license is already nullified #1051
Invalid state from MacOS #1043
Add merkle tree positions as return values of the get_licenses call #1040
Implement merkle tree position determination for the issue_license call #1039
Closed
Docker image does not build on ARM #1046
GraphQL SDL missing #1036
Mempool API #1035
Failing to get notes when state grow #1033
consensus: Republish any valid message drained from the future_msg queue #1031
consensus: Address the issue of a non-deterministic certificate for single round/iteration #1030
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
A number of important changes have been made with the release of Piecrust v0.10.0 and Crumbles v0.2.0, paving the way forward for Dusk to be able to allow for hyperfast sync-ups.
Due to the way Dusk handles the storage of smart contract memories/data, it is possible for us to do proof of inclusions on the current active state. This would allow clients to only sync-up the current network state, and proof that the state they receive is legitimate. This makes it so that new clients can easily by-pass going through all the network history.
More changes will be required to enable full hyperfast sync-ups, but during this release cycle we’ve laid the foundation for it.
Opened issues
In the past 3 weeks, no issues were opened in the piecrust repository.
Closed issues
Growth is not rolled back on errors #268
Remove re-execution by leveraging marking strategy #254
Remove diffing by employing a marking strategy #253
Wallet-cli
Library providing functionalities to create wallets compatible with Dusk Network
This library is used to implement the official Dusk CLI wallet.
Update Summary
In Wallet-cli v0.19.0, released on September 20th, several notable changes and additions were made. The update introduced the ability to display wallet balances when offline, enhancing transparency for users. Additionally, new methods, such as Wallet::sync for cache updates and Wallet::register_sync for asynchronous cache updates, were incorporated.
To provide users with more control, the automatic wallet synchronization feature was removed, allowing them to decide when to sync their wallet data. Spent notes were restructured to be stored in a different ColumnFamily, potentially improving data organization and retrieval efficiency.
Changes were made to functions like StateClient::fetch_existing_nullifiers to return empty data as needed. Furthermore, the fetch_notes function was modified to use note positions instead of heights for retrieval, potentially enhancing accuracy and efficiency.
The update also eliminated cache synchronization from StateClient::fetch_notes and removed the RuskClient struct. Two bugs were fixed: one that caused the software to return prematurely in interactive mode when no wallet file was found, and another that prevented wallet file corruption when loading an old version and creating a new address.
Opened issues
Sync should not happen during offline operations #197
Add last known block height during syncing #196
Closed issues
Faucet wallet corrupts after creating a new address #198
Balance shows zero when synced up #195
In A Nutshell: Release Cycle planning
As you can see, development is continuous and this list is not exhaustive. For example, minor issues and advancements concerning the Kadcast element have also been opened and resolved. The complete series of repositories can be found on GitHub.
Release Cycle development planning has been adopted by major companies including Google, Mozilla, and during the development of products such as Ubuntu, Kubernetes, and many more. The reason for this is clear: Release Cycle planning improves the predictability of software development for developers and the community alike.
The above noted additions/changes to the repository can be followed on GitHub, for further details on their status and their function in the stack.
FAQ
We’ve included a small FAQ section below to make sure the community understands our intention with Release Cycles.
What is Release Cycle planning?
Release Cycle planning means that developmental updates are published at consistent intervals on GitHub; in the case of Dusk Network, every three weeks. These releases describe the latest additions, changes, fixes, and assets added to the tech stack by the development team.
Dusk Network currently has over 18+ active repositories on GitHub, each repository covering a different technical project. Release Cycle planning has not yet been applied to all repositories; the current focus on a single GitHub repository for clarity does not mean there are no ongoing developmental efforts occurring in other areas.
Does being featured in a Release mean Deployment?
The Release Cycle updates does not mean immediate deployments on our testnet. It is a release detailing additions, changes, and fixes to the repositories that we are ready to share with the public. All released content is considered stable, consistent, reviewed, and cross-checked with other repositories.
Are Release Cycle updates a spotlight for major deliverables?
No. The Release Cycle approach is strictly a way to provide a consistent shape for publication of our work in the clearest terms possible. They are not deadlines to be made, nor are they tied to specific development sprints. Release Cycle updates aim to raise attention with the community, and give proper coverage to, publishable GitHub releases. Major deliverables will be given their proper publication in dedicated articles.