Status Update

September 13, 2018

Status Updates (September, 2018) > September 13, 2018

Weekly Development Report

DAEDALUS

Wallet

Last week the team continued to work on the integration of Daedalus specific Cardano wallet V1 API endpoints which were not released with the original V1 Cardano wallet API. Most of these API endpoints such as the ones for Ada redemption and Cardano node update management are now integrated and the code is in the final testing and review phase.

The team is almost done with the implementation of IPC driven Cardano-node / Daedalus communication. The last part remaining to be implemented is the controlled shutdown of Cardano-node based on different scenarios such as applying of Cardano-node update and restarting Daedalus with or without GPU safe mode.

The NTP check, used to check if Daedalus is running on a machine in sync with the global time, was improved by adding an option to re-check the time difference using a new button on the NTP error screen. This button is to be used to trigger a new NTP check after the user has updated their machine's local time to the correct value. Before this, a user had to restart Daedalus in order for the NTP check to be executed again.

App Platform

This week the team has been exploring an alternative technical solution for application and service process isolation, using a container-based approach.

Initial work on the theme switching feature was completed, and the new permissions UI was finalized.

WALLET BACKEND

The past week was spent on bug fixes and wallet account functionality optimization. The team worked on translating all API errors to the WalletError sum type as well as pushed to resolve Daedelus issues during wallet import.

Additionally, work was done on data migration.

Some of the developers spent their time working on robustness for applyBlock and switchToFork, to handle a variety of error scenarios that have been identified. Most of these scenarios come down to race conditions or synchronization issues between the wallet and the node. They have re-written the restoration code to avoid some tricky locking scenarios.

NETWORKING

The team continued to improve the Communication Protocol simulation definition, by way of an STM interface as opposed to only MVar s. This makes it easier to express certain points in which a peer must wait for local data (a new block). The team are also extending the pure typed transition based definition to express the same protocol as in the abstract STM /MVar free monad presentation.

DEVOPS

DevOps continued making improvements to continuous integration speed and observability. An engineer gathered historical durations from code push to GitHub status check pass/fail across all CI systems. The metrics were fed into InfluxDB and plotted in Grafana. The static plot provided valuable insights about bottlenecks, and we made plans to dynamically collect data to visualize CI responsiveness over time. Another engineer implemented a visualization of build durations and times throughout a nix evaluation on the Hydra server. The team also conducted more tests to measure the impact of compiler optimization flags on end-to-end build and test time, and discovered optimizations are unnecessarily slowing down CI responsiveness in pushes to pull requests. Nix garbage collection continues to be a pain point on macOS build machines with limited disk capacity, so we are experimenting with different parameters. An engineer is also continuing to evaluate a system to explicitly request CI builds and potentially batch contemporary ones together.

Two DevOps engineers and several developers attended the first training session on property-based testing with QuickCheck. We can more effectively discover and prevent critical bugs by generating test inputs to our software and ensure expected invariants are maintained.

CARDANO DECENTRALIZATION

The technical implementation plan for delegation is in a “mostly finished” state that allows the team to work on some of the work packages for development, and a few of the team are already working on the prototyping. The team is currently planning resource allocation to tackle the work packages defined.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a OpenSource Manager, Performance Management Specialist, Web Tester, Director of Product Management, Rust Software Engineer, Haskell Trainer, Technical Writer, Senior Haskell Developer - Prototyping as well as several others. Please see the IOHK Careers page for more details.