Status Update

June 14, 2019

Status Updates (June, 2019) > June 14, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team implemented an alternative software update path for situations where Daedalus is unable to connect to or sync with the network, so users never receive an automatic update notification. In this scenario, Daedalus will check for a newer version and prompt the user to manually update by downloading and installing the latest version of Daedalus from the Daedalus website. This update will be released with the upcoming Cardano Wallet 1.5.2 version, which consists of Daedalus 0.13.2 and Cardano SL 3.0.2.

The team is still working on the implementation of UI designs for Shelley features. The implementation of the 'Current and previous epoch info' screen has been finalized, while the implementation of the 'Delegation setup wizard' UI is halfway done.

The Daedalus visual themes implementation has been fully refactored to simplify maintenance of existing themes, as well as the creation of new themes in the future. The new approach allows the possibility of a custom theme generator which Daedalus users could use to create and share their own UI themes.

The team has also added a lot of additional diagnostic data to the 'Network Status' screen, which has been renamed to the more appropriate 'Daedalus Diagnostic' screen. Newly added data includes information about the user's machine, platform, Daedalus and Cardano node process information, Cardano node API port, and Daedalus state directory path.

In the scope of regular maintenance tasks, the team has fixed a minor UI issue with truncated content in the Japanese interface of the 'Block Consolidation Status' screen when the Daedalus window is at minimum size. The 'React-Polymorph' UI framework library has also been updated to the latest available release, which includes a couple of minor UI improvements for positioning of select box dropdowns.

App Platform

This week the team made good progress on Ledger Nano S support in the Cardano JavaScript SDK, successfully implementing the Key Manager interface to pull public key derivations, and making a start on transaction construction for the signTransaction behavior. A Docker-based development stack for establishing a local Cardano provider was also defined, running the new cardano-wallet backend, http-bridge, and a cardano-sl cluster. Finally, the execution service within the smart contract backend was improved to use the newly defined types and the port mapper from the server module.

BACKEND OPTIMIZATION

The team worked hard over the past week to deliver the new database layer that will underpin the Shelley wallet backend. This work is now complete and comes with a robust test suite combining several techniques (property-based tests, unit tests, stress tests, and state-machine tests).

The team is also pushing to ensure that all of the existing integration test scenarios are sufficiently generic to run on a Rust node in BFT mode. This will be a major milestone for both projects and is expected to happen very soon.

Finally, the team is getting closer to delivering a working development environment for Daedalus, to allow the integration work to begin there too.

NETWORKING

The networking team has been working on the transaction submission protocol this week, creating simple clients and servers which are stripped versions of real applications and used in simulation during development. The team also created a wiki page about the Byron proxy which will be helpful for DevOps engineers, as well as for tracking which usage examples are already covered.

The team also prepared a pull request which integrates ouroboros-consensus and ouroboros-network, allowing a simple node to run with various flavors of Ouroboros consensus algorithms (such as BFT, PBFT, Praos) over a real network (TCP/IP). Work has also been progressing on DNS management, which will be integrated with this node.

Finally, the networking team has also been looking for data analysis tools to present findings clearly and intuitively, which can then be backed by models that are being developed. The team has also been working on the implementation of latency distributions, which are going to be used in simulations of the distributed peer selection algorithm.

DEVOPS

This week the team has deployed the new Prometheus-based monitoring stack to testnet and mainnet, which is an optional flag in the deployment scripts to set up a Prometheus monitoring server. The team is also looking at Nix tooling that can convert a NixOps deployment of services to a Docker compose file, to allow better cross-platform deployment for stake pools.

In other work, the team has added an abstraction layer to iohk-ops to enable the use of different backends ( such as Rust or Haskell). A public syslog server has also been set up so that that stake pool operators can provide their logs to help the team analyze performance and bugs reported by stake pool testers.

CARDANO DECENTRALIZATION

Now that the ledger has been fully integrated, engineers took a few days to tidy up loose ends: with the ledger in place, some design decisions are now easier to evaluate. The team has also begun writing some property tests for the storage layer, which needs to deal with some tricky problems.

Another week of property testing in the Cardano Ledger this week too. The team has been formalizing and testing lots of high-level properties of the system that should help catch interesting bugs. The full chain transition system is currently being tested with all features except the update mechanism. The team has also been working on the generators for the update system and will hopefully put them into use next week.

GOGUEN

The Plutus team started investigating the use of GraphQL instead of Swagger for contract endpoints within the Plutus Playground, as well as having a self-contained documentation site deployed in the Playground. They also worked on a revamp of the Plutus tutorial content, made various editing and consistency changes, amended the vesting example, removed some redundant tutorials, and looked at using AsciiDoc features within the text.

This week the Marlowe team introduced a MonadApp type which enables easier testing of the application logic, and they worked on improvements to Meadow parsing errors. They also started work on tests for the logic of the ‘Undo’ button and a way to record the Meadow simulations, so that the current state could be captured and added to the list of states in memory.

The Education team are preparing for their presentation to the executive team. The working group is busy building out the skeleton of the Plutus ebook.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.