Status Update

October 11, 2018

Status Updates (October, 2018) > October 11, 2018

Weekly Development Report

DAEDALUS

Wallet

Last week the team finished testing of the IPC driven Cardano node / Daedalus communication implementation. Smaller issues with the defensive Cardano node startup setup have been identified and fixed. The team added additional logging which should help to debug any potential future issues.

The team has implemented a lock-file solution which prevents multiple Daedalus instances from running against the same network (Mainnet, Testnet or Staging). A prerequisite for this was a complete separation of Daedalus state directory based on the network Daedalus is connecting to which was also implemented last week.

In the scope of the V1 API integration, the team introduced more fine-grained error messages for the transaction fee calculation V1 API endpoint. Error messages now cover all three potential cases:

  1. Transaction amount plus the transaction fee exceed the wallet's balance,

  2. Transaction amount exceeds the wallet's balance,

  3. Having pending transactions which include wallet's addresses which contain funds needed for the new transaction.

As a part of the regular maintenance tasks, the team has introduced a helpful environment variable which is used to prevent Daedalus from closing at the end of the acceptance-tests run. This makes debugging test failures much easier since leaving Daedalus open preserves the last known state. In order to further improve the acceptance tests, the team implemented automatic recording of failed test cases screen states. The team has also removed the last parts of the ETC code from the codebase since Daedalus with ETC support is now being developed in a separate GitHub repository as a separate project.

App Platform

The team built out the GraphQL API endpoint to require certificate-based authentication and support for consuming remote schemas published by services or applications. A client certificate is issued and written into the application's mounted volume on startup. The Cardano SL service Swagger adaptor was also enhanced to enable TLS authentication with the REST API.

WALLET BACKEND

Last week the team focused on improving the memory footprint of the acid-state database for the new wallet. After a set of tests on unreleased code, the team noticed that syncing the backend from start would significantly increase the database size on disk, which lead the team to putting their efforts into improving acid-state disk space for the new data layer and successfully fixed the bug.

Also, the team focused on investigating if backfilling (i.e. what happens when a wallet is restarted and needs to apply the blocks) was working correctly, and found some discrepancies. These discrepancies were then addressed and fixed.

NETWORKING

The team continued their work on Communication Protocol Design. They now have new static relay and core nodes. Also, the team created simple simulations, investigation priority list and much better tests for the simulated environment. The team now has a nix build tool that will run on Hydra (Continuous Integration Server). This week the team are working on node simulations and their properties and more test, and will further improve documentation and description of the protocol.

DEVOPS

A DevOps engineer prepared and announced the Daedalus RC2 builds for Cardano-SL 1.3.1. Later DevOps engineers updated the internal staging cluster nodes to that same revision of Cardano-SL.

Early last week, nodes on both the internal staging and public mainnet Cardano-SL clusters stopped responding and transmitting metrics. Initial investigations suggested one of the cloud provider's region was a factor, as most of the affected nodes were based there. The cloud provider acknowledged degraded network connectivity, and it was soon fixed. Nodes in that region and nodes communicating with them regained health automatically as expected.

Two DevOps engineers gave internal technical presentations. One demonstrated their evaluation of Bors, a PR and CI workflow automation tool, and discussed a strategy for continuing to evaluate and incrementally adopt it in more IOHK GitHub repositories, starting with the repository maintained exclusively by DevOps. The other engineer presented on Nix and common development and testing use cases within IOHK.

The team continued addressing pain points with CI responsiveness. A large spike in build times was detected and traced to Nix expressions which inadvertently were building all of nixpkgs, including non-dependencies. DevOps engineers met with developers working on the Snack build tool which aims to support incremental nix builds for Haskell projects. They discussed insights from our experimental evaluations, and what improvements would be necessary for using it more widely at IOHK. An engineer made progress on an incremental stack-based build strategy for CI builds, which is expected to help in PRs with multiple commits. Future improvements will be facilitated by refactorings and fixes, like changes to CI and deployment configurations that reflect repository restructuring, and extracting nix overlays from an increasingly complicated default.nix for Cardano-SL into separate files.

CARDANO DECENTRALIZATION

A detailed work breakdown structure of the delegation Technical Implementation Plan is in progress and will be finalized by the end of this week.

GOGUEN

There is no update this week.

ANNOUNCEMENTS

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