WEEKLY DEVELOPMENT REPORT
This week the team has been working on integrating pending delegation preferences into the API, as well as adding an ‘experimental feature’ notification and UI tooltip to alert users to potentially unreliable features that have yet to be stabilized. The team has also improved the coverage of the end-to-end automated tests for Daedalus by introducing acceptance tests for wallet delegation features.
There is no update from the app platform team this week since they’ve been helping out with general Daedalus development.
The team has been working on QA and testing tasks this week to prepare for the upcoming Cardano Explorer Byron release.
The team has been doing some housekeeping and maintenance this week, including finding a proper, reliable fix for a longstanding bug. Improvements have also been made to the reporting of wallet delegation statuses. Changes to delegation preferences only take effect after a delay of one epoch, and this is now properly reflected in the wallet backend, allowing the Daedalus frontend team to create a better end-user experience.
The networking team continued to work on the connection manager this week, finishing the refactoring of the NTP client and merging the refactored mux layer, which allows on-demand starting of mini-protocols. An external reviewer found an issue with the Windows API, which has now been fixed, and the team is currently working on adding functionality to cancel asynchronous I/O requests on Windows.
This week the DevOps team completed the deployment and testing of the new Cardano node (1.5.0) and explorer (1.3.0) releases. They’ve also been working on upgrading all the repositories involved in the new stack to the latest haskell.nix version.
To better stress test the new node, the team started working on a custom Amazon Machine Imagine (AMI) for Amazon Web Services (AWS) this week. It will allow the emulation of around 10,000 Daedalus clients connecting to the new node, which will enable the team to identify any potential issues that might arise with high loads. Some automation that will push Docker images to Docker Hub for the new node has also been created, with plans to do the same for the explorer components next week.
Finally, the team has scheduled the OBFT transition on mainnet for February 20, 2020 at 21:44:51 UTC. With the latest 1.5.0 release, all remaining memory leaks have been resolved, and the node staging clusters that have been migrated have remained stable since their initial deployment. The OBFT transition on February 20 will mark the first significant step to a Shelley mainnet launch.
The team continued work on the generators this week, which are getting tricky now that they’ve reached a significant level of complexity as the team pushes for more and more realistic generation. Work is being done to better represent key-evolving signatures and how they evolve over time, as well as ensure that transactions that generate multiple certificates do so in a valid way.
Elsewhere, work has been progressing on adding transaction metadata to the Shelley ledger, with a pull request now waiting for review. Some of the details of how best to format the metadata still need to be ironed out, and the team plans to discuss this next week.
This week the Plutus team made improvements to the performance of the PureScript parser and pretty printer, as well as unifying the Haskell default-extensions to ensure consistency. The team also reorganized the presentation of validity rules within the EUTXO paper to improve navigation and readability.
The Marlowe team investigated ways to improve the performance of large Marlowe contracts within the Marlowe Playground. They also worked on how to effectively calculate constant negative payments in the Marlowe editor, so that warnings can be provided to the user in real-time. Last but not least, the team also studied how to include a Marlowe version in a contract, as well as a way to identify a Marlowe validator from its address, so that a node can implement the interpreter natively and increase the speed of contract execution.
WEEKLY DEVELOPMENT REPORT
This week the team has been mostly focused on maintenance and test-coverage tasks. As well as polishing some elements of the UI, the team fixed an issue with the ‘Low disk space’ warning screen, which was not showing up in some cases. They also fixed the stake pool description info display, which was clipped after a certain length. The Daedalus end-to-end automated tests also now include full coverage of stake pool data loading and handling of both balance and rewards wallets.
There is no update from the app platform team this week since they’ve been helping out with other Daedalus development work.
A custom 404 page was added to the explorer this week, footer styling was refined to match a new design based on content changes, and the final set of background visuals were implemented. The list of supported networks and associated themes were also updated this week, and a major framework upgrade successfully performed. Development and testing service dependencies are now also sourced directly from an upstream repository, an improvement compared to using wrapped Docker images published to an external registry.
A new version of the wallet backend was finished at the beginning of this week. Changes included listing stake pools by desirability, as well as introducing a saturation indicator for each stake pool. The release also introduces a new endpoint, which allows users to force a resync of the wallet without needing to delete and restore, which might be useful for resolving potential wallet issues.
On the development side, the team finished implementing the network parameters endpoint, which allows users to fetch blockchain parameters for a particular epoch. The team has also started on the implementation of CLI utilities for key derivation, as well as progressing work on more detailed delegation reporting to show current and future delegation targets for a particular wallet.
The networking team has been working on Windows support this week, and the ouroboros-network library now supports local clients on Windows, which is an important milestone for supporting Daedalus wallet users on Windows. The team also implemented vectored I/O on Windows and continued work on development of the peer-to-peer components: the connection manager and on-demand mux.
The DevOps team has been working closely with other development teams this week to improve performance on the Incentivized Testnet.
The team discovered some bugs in the test KES implementation this week and spent time tracking down and fixing them, as well as moving some global constants to a more appropriate location. Some issues were also found in the overlay schedule generation, which the team expects to have fixed soon.
As for the generators, reward withdrawals in the property testing are now being successfully generated, and the remaining properties are now connected to the new chain generator. Progress was also made on adding update proposal generation to transactions, which the team will continue to work on next week.
This week the Plutus team investigated how to add an event-based server model, and they also removed value restriction from the metatheory, as it was not enforced. The team also made improvements to error messages for incorrect server calls. Additionally, the Plutus and Marlowe Playground servers now show usage and help details if a wrong command is entered.
The Marlowe team worked on identifying a language subset for Marlowe embedding and also spent time looking at how to optimize refunds. They also investigated how to move Marlowe execution from the browser to the backend, as the current implementation does not perform well enough for large contracts.