Testnet DayLight | Release Cycle Update #23

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.

release_cycle_2023.png

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.

[Read more about our Release Cycle planning here]