Status Update

April 17, 2020

Status Updates (April, 2020) > April 17, 2020

WEEKLY DEVELOPMENT REPORT

Daedalus

Cardano Wallet

This week the Daedalus team worked on the third Daedalus Flight candidate for the 1.0.0 release. The new version introduces a wallet import feature that allows users to import wallets from an earlier version of Daedalus, or from the Daedalus state directory, as well as mandatory spending passwords and improvements to error handling. There have also been significant improvements to blockchain synchronization and memory usage, especially on Windows platforms.

Application Platform

There are no updates from the team this week. They’ve been helping the Daedalus team with the latest Daedalus Flight release candidate.

Cardano Explorer

There are no updates from the team this week. They’ve been helping the Daedalus team with the latest Daedalus Flight release candidate.

WALLET BACKEND

This week the team worked on bug fixes and general improvements, in particular ensuring that the new Hydra implementation was passing tests for both Rust and Haskell nodes. There is also a new set of nightly integration tests, in addition to existing unit tests.

Work was done to streamline the release process, removing some redundancy and automating where possible. The team also spent time scrutinizing the behavior of addresses with soft indexes, which have been causing some issues in the production version of Daedalus. The new wallet backend and node that underpin Daedalus Flight, however, have no such issues, so the problems will be resolved once the production version of Daedalus is updated.

API error messages were also improved this week, in particular when attempting to generate an address for a sequential wallet. The clean shutdown mechanism for Windows was also improved, aligning the command line interface with the new Cardano node for consistency’s sake.

The team also worked on creating a new Haskell library for constructing, signing, and serializing transactions. It is currently limited to simple UTXO payments but is still being worked on and will eventually result in a useful Haskell domain-specific language (DSL). Work on another Haskell DSL was also begun, to support key derivation and address manipulation on the Cardano network. At the moment, only the manipulation of mnemonic sentences is available, but more will be coming soon.

NETWORKING

This week the networking team has been working on performance improvements, including identifying and fixing two significant memory leaks. The first was due to unevaluated thunks that were accumulating binary data, while the second only occurred on high-performance Windows machines.

On Windows, the Haskell compiler (GHC) creates one lightweight thread per timeout. High-performance Windows machines with a good network connection were making network requests too quickly for garbage collection to keep up with collecting the unused threads. This resulted in a memory leak that significantly downgraded performance: the better the network conditions and hardware, the worse the impact was. As a result of this fix, some Windows users will see significant performance improvements, although those with limiting factors such as poor hardware or network connection may never have encountered the issue in the first place.

The team also discovered and fixed an issue with how the IOManager was handling exceptions on Windows, as well as some problems with the simulator, including not handling negative timeouts correctly and issues with scheduling threads and monitoring the progression of time.

Finally, the team also published some Haskell documentation in the GitHub repository.

DEVOPS

This week the DevOps team has been finishing up faucet deployment for the upcoming Shelley Haskell testnet, as well as migrating DNS settings for the testnet to cardano.org. They’ve also been helping out with deploying the 1.10.1 release and assisting the Daedalus team with their Electron upgrade. Finally, the team has also been preparing to load test the Shelley Haskell code.

CARDANO DECENTRALIZATION

This week the team worked on generating canonical examples for the golden tests, as well as improving file locking on Windows. Work was also done to remove a duplicated transaction check in the mempool and to improve the concurrency of the storage layer. The background threads spawned by consensus are now also all labeled, making the output of analysis procedures more useful.

GOGUEN

This week the Plutus team added separate monetary policy scripts to the EUTXO document. They also removed an obsolete overflow error constructor from the PlutusIR parser and fixed some value equality tests that had been failing. Finally, they worked on some improvements to the Nix scripts.

The Marlowe team made some design updates to elements within the Marlowe Playground, such as the icons, buttons, panel widths, text display, and help. They also made updates to the Marlowe Haskell editor to improve the color scheme. No code was affected by these changes.