Testnet DayLight | Release Cycle Update #23
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
Over the past few weeks, the core repositories of the Dusk Network have seen notable updates and improvements. Let's take a closer look at the recent developments.
In the Rusk repository we've been focused on enhancing the efficiency of how our contracts handle data. A major feature is the introduction of 'feed import', a feature that allows our contracts to handle more data in a single call to the contract. Alongside this, we're working on updates to make Rusk's VM be able to do a single write operation, and multiple read operations at the same time. This will massively speed up the ability for nodes to serve data to end-users.
The Piecrust repository released version 0.7.0, bringing significant enhancements to the piecrust and piecrust-uplink crates. One significant addition is the 'feed' feature, which is like widening the pipeline for our contracts. Imagine trying to pass a river through a garden hose, and then suddenly being able to use a large aqueduct. That's what 'feed' does. It allows our contracts to stream vast amounts of data in a single execution, far surpassing the previous 64KiB limit per call. This results in smoother and more efficient communication with the host. We've also enhanced error handling, streamlined certain operations and resolved minor issues. Smarter resource use and intelligent solutions like 'feed' make piecrust more performant, one commit at a time, making Dusk faster for end users.
In the Wallet-cli repository, version 0.17.0 was released. This update is a big restructure of the wallet to make it work with our Piecrust-based network. This update also tackles a number of caching regulated issues and improves error detection.
Furthermore, work is being done to make the wallet library web-compatible and to parallelize note checking. Imagine, instead of having one bank clerk painstakingly check a single note for a single bank account, you now have ten clerks who can simultaneously verify a note across ten of your bank accounts. This upcoming feature will increase the speed and efficiency of the note checking process significantly.
The Citadel repository released version 0.4.0, incorporating necessary changes to reduce circuit constraints and aligning with the latest version of dusk-merkle. Citadel is now up and running on our testnet and devnet! This brings us one step closer to our goal of integrating Self-Sovereign Identity (SSI) directly into our blockchain protocol.
The Merkle repository saw the release of Poseidon-merkle v0.2.1, addressing the rkyv-impl feature.
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.
Core 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
In the past 3 weeks, no issues were closed in the blockchain repository.
Rusk
The Dusk's Smart Contract Platform.
Update Summary
New issues were opened, addressing topics such as utilizing feed import in stake and transfer contracts, parallelizing Rusk VM sessions, and adding events hash to blocks.
Opened
Make use of the feed import in the stake contract #972
Make use of the feed import in the transfer contract #971
Make Rusk VM sessions parallel #970
Change finalize to only squash commits #967
Add events hash to the block #962
consensus: Ensure that the candidate verification is executed for a minimum duration of N seconds #950
Use new circuit compression to store circuits #949
Remove txs from mempool after being included in a block #935
Closed
node: Ensure state_hash from accept/finalize call is equal to block.header state_hash #957
Add prover crate #954
consensus: Cache and reuse verified candidate blocks in Reductions #951
Introduce fixed gas for transfers #939
Enable fallback procedure in rusk node #938
Clients should be able to execute contracts to retrieve data #933
Modify transfer contract to use dusk-merkle #932
Unable to decode blocks containing multiple transactions #930
Update to plonk version with circuit compression capabilities #929
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
Piecrust V0.7.0 was released on July 20th. Implementing the needed changes to solve the below mentioned issue(s).
piecrust 0.7.0
Added
support for the feed import [#243]
Error::Infallible variant
Error::MissingHostData variant
Error::MissingHostQuery variant
Error::Utf8 variant
CallReceipt struct
Changed
Change signature of SessionDataBuilder::insert to return an error on serialization
Handle possible errors in imports
Handle error on deserializing contract metadata
Change signature of Session::deploy to take points_limit
Change signature of Session::call to take points_limit
Change signature of Session::call_raw to take points_limit
Change signature of Session::call to return CallReceipt
Change signature of Session::call_raw to return CallReceipt
Removed
Remove Session::set_point_limit
Remove Session::take_events
Remove Session::spent
uplink 0.7.0
Added
More comprehensive documentation of the whole crate [#189]&[#190]
Feed extern [#243]
Changed
Rename Event::target to Event::source [#243]
Removed
EventTarget struct [#243]
Opened issues
In the past 3 weeks, no issues were opened in the piecrust repository.
Closed issues
Allow for contracts to report their data in a single call #243
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
Wallet-cli v0.17.0 was released on July 19th. Implementing the needed changes to solve the below mentioned issue(s).
Added
rkyv dependency [#151]
dusk-merkle dependency [#151]
Error::Utf8 variant [#151]
devnet network to default config [#151]
Changed
Change rust-toolchain to nightly-2023-05-22 [#151]
Change REQUIRED_RUSK_VERSION to 0.6.0 [#151]
Change Error::Canon variant to Error::Rkyv [#151]
Populate cache database with psk(s) on state init [#158]
Change dusk-plonk to 0.14.0 [#169]
Fixed
Fix cache resolution for alternative networks [#151]
Fix cache error detection [#163]
Removed
Remove canonical dependency [#151]
Opened issues
Compile to wasm #172
Start saving wallet.dat files with the new binary format #165
Replace blake3 with sha256 #162
Parallelize fetching_notes #160
Separate cache and network interface when fetching notes. #159
Replace gRPC with new node implementation in rusk #157
Closed issues
Invalid cache not detected #163
Port the library to be piecrust-enabled #151
Populate the cache database on startup with all the CF #149
Benchmark fetch_notes in clients.rs with MAX_ADDRESSES #146
Libraries
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. Official rust implementation of the Kadcast P2P protocol for ultra-efficient message dissemination within Dusk Network
Opened/Closed issues
In the past 3 weeks, no issues were opened or closed in the kadcast repository.
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.
Opened/Closed issues
In the past 3 weeks, no issues were opened or closed in the plonk 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.4.0 was released on July 19th. Implementing the needed changes to solve the below mentioned issue(s). Citadel was also updated to the last version of dusk-merkle to reduce the number of constraints in the circuits.
Changed
Updated dusk_plonk to 0.14
Opened
In the past 3 weeks, no issues were opened in the citadel repository.
Closed
Reduce circuit constraints #67
Merkle
A sparsely populated Merkle Tree, parameterized over its height and arity.
Update Summary
Poseidon-merkle v0.2.1 was released on July 19th. Implementing the needed changes to solve the below mentioned issue(s).
Fixed
Fix rkyv-impl feature
Opened
In the past 3 weeks, no issues were opened in the merkle repository.
Closed
Turn this crate into a workspace #58
Wallet-core
A library for generating and dealing with transactions.
Update Summary
Since we're implementing the transaction structure elsewhere - namely phoenix-core - and implementing hashing functionality there, the TransactionSkeleton structure may be removed.
Opened
In the past 3 weeks, no issues were opened in the Wallet-core repository.
Closed issues
Remove TransactionSkeleton mark:next team:Core type:enhancement #70
Port to be compatible with piecrust contract #69
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.
Breakthrough developments will receive a separate spotlight, such as our latest deployment of Daylight. Thank you very much for your understanding and feedback as we continue to find the best way to provide the community with transparency and development information.
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.
For a more detailed explanation of the concept (along with frequently asked questions) please scroll down to the bottom of this article.
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.