Status Update

September 6, 2018

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

Weekly Development Report

DAEDALUS

Wallet

Last week the team added one more improvement for the upcoming Daedalus 0.11.1 and Cardano 1.3.1 release - there was a problem with the rendering of Daedalus icon on Windows platform which is now resolved and Daedalus icon should be displayed perfectly clearly regardless of the icon size or screen resolution.

The team has finished the integration of the V1 Cardano wallet API. However, there are some Daedalus specific Cardano wallet API endpoints which were not released with the original V1 Cardano wallet API. These endpoints are now added to the V1 API under "internal" namespace and the team is working on their integration.

As a part of the tasks for the Daedalus 0.12.0 and Cardano 1.4.0 release, the team is working on the implementation of IPC driven Cardano-node / Daedalus communication. This will allow Daedalus much greater control over the Cardano node and should reduce the number of users facing the "Connecting to network" issues. This new setup will enable Cardano node to use an automatic selection of the IP ports in order to always pick an unused port and two-way TLS authentication between frontend and the backend which will improve security and enable configurations where frontend and backend are running on different machines in the future.

The team has also implemented more precise error messages for transaction fees calculation which will now include the exact amount of Ada missing in order to make a given transaction.

App Platform

After finishing the work on a state persistence service the team continued the work on the service API. The team is working on a solution to implement a GraphQL-based platform API for apps to gain access to services.

The team has also been prototyping a Docker-based solution for isolating the app's runtime, using the Docker remote API coordinated by the main process.

WALLET BACKEND

The team engaged in refactoring efforts aimed at release 1.3.1 after which, resuming important tasks for the 1.4 release. As a result of their work, progress has been made on both ‘Switch over to new Wallet Layer’ as well as ‘Regularly create acid-state checkpoints’ tasks. Additionally, the team worked on optimizing an important endpoint for Daedalus as well as engaging in writing internal documentation and various bug fixes.

The developers also worked on initializing (stateless) submission layer with pending transactions from the wallet State as well as on unify transaction metadata creation date by adding a mockable timestamp getter to the NodeStateAdaptor.

Furthermore, the team worked on improving how error scenarios are handled during applyBlock and switchToFork. Due to this effort the issue with Wallet State Catchup has also been resolved..

NETWORKING

In regard to Communication Protocol Design, last week a team member wrote a simulation which clones a blockchain from a producer and worked on a simulation in which a node is subscribed to multiple producers and does chain selection.

DEVOPS

DevOps worked on Daedalus code and process improvements last week. To significantly reduce the risk of unsigned installers being published on the public ledger CI build artifacts for unsigned installers are no longer retained. We also helped investigate and resolve a long-standing bug where Cardano wouldn't work for Windows users with non-ASCII usernames. Windows icons for Daedalus didn't scale properly, so a DevOps engineer collaborated with Daedalus engineers to diagnose and resolve it. We also showed the Daedalus and QA teams how to interact with the demo cluster originally configured by DevOps and followed up with some nix workflow improvements.

The team continued efforts to improve our automated testing systems. An engineer helped the Plutus team enable hlint and stylish-haskell checks to their CI. A recent regression on the develop branch of cardano-sl caused block syncing to stop part of the way through. To detect such regressions earlier, the team set up a nightly test which uses the latest code to sync the mainnet blockchain from scratch. The macOS builds sometimes fail because they ran out of disk space part of the way through, even though there is an automated nix garbage collection job. To reduce the likelihood of repeat incidents the team switched from a time-based trigger to a disk space threshold trigger. CI speed remains a point of concern for cardano-sl, so the team is identifying and addressing bottlenecks. The developers discovered macOS builds were frequently the bottleneck in overall CI response time, so for now they are no longer required to finish and pass before merging into the develop branch. The team is also considering whether a tool which allows devs to pre-approve PRs for merging conditional on their success in CI, possibly in a batch with other PRs, could improve throughput and developer satisfaction. We also started researching whether different compiler options may speed up the overall compile and test cycle.

Additional work included incrementally restarting Cardano staging and mainnet nodes to update their kernel, making internal self-hosted services more readily accessible via a VPN, proof of concept work on a NixOS cloud image with ZFS support to improve data compression and recovery options, and stabilizing the lts-12 branch for cross compilation efforts.

CARDANO DECENTRALIZATION

Research and Design

The Delegation e-print is still awaiting a date for publication. The team has started prototyping for the first work packages for delegation.

Development

Team concentrated on core optimization tasks bringing the effort to its final stages.

GOGUEN

Fundamental Research

Last week the research team submitted the proof-of-stake Sidechains paper to a conference for peer review.

End Users and External Developers

The team is starting research to create detailed education and technical content plan for Goguen.

Testnets

Team members worked on advancing development on K/IELE (Mantis) to improve supportability and operation of cluster.

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.