Status Update

April 5, 2019

Status Updates (April, 2019) > April 5, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team worked on the redesign of screens which are available through the application menu: 'About Daedalus', 'Block consolidation status' and 'Network status' screens. The goal of this process is to have a more uniform UX/UI across the application.

The team is finishing the implementation of a new screen named 'Wallet's UTXO distribution'. The code review process exposed a couple of minor code style issues which are to be addressed.

A minor issue was identified on the React-Polymorph dropdown component - in case of large lists, the dropdown used to get cut-off, which prevented the users from viewing all the options. The team fixed this issue by introducing a scrolling feature to the dropdown element.

In the scope of regular maintenance tasks, the team has decided to reorganize the structure of automated tests to unify both acceptance and unit tests under the same directory.

App Platform

This week the team refined the solution for handling Plutus off-chain state in the smart contract backend by diffing the returned state, rather than using the more complicated event sourcing approach. The latter method will be revisited for a network sync scenario.

Work was completed on the pluggable key store interface for the smart contract platform JS client, using an adapter pattern to enable natural extension while only including client-side libraries specific to the project.

Additionally, a new service was added to the smart contract backend, called the 'bundle server'. The bundle server is intended to be self-hosted by contract developers initially and used as a reference file server to distribute Plutus off-chain assets, but could also run on the node in a more integrated fashion. The first use case will be as part of the development stack, to deploy to and retrieve bundles when developing DApps.

In continued collaboration with the Plutus team, a refinement was made to the HTTP API for communication between the smart contract server and execution engine. It was also decided that the output of the initial Plutus compilation for a Docker engine will be an image contained in the bundle, using nix dockerTools. Initial refactoring to support this simpler model began, which simplifies the design of the contract controller to just orchestration of containers.

The team Dockerized the smart contract backend using a multi-stage Dockerfile, defining services as server, docker execution engine, and bundle server. Docker Compose files were produced for development, production, and CI/CD environments, and research into continuous deployment build tools capable of testing the Docker execution engine was completed.

BACKEND OPTIMIZATION

This week the team has been focused on two significant pieces of work: implementing the new API layer for the wallet, and testing that API layer. It is now possible to serve a subset of the final API, connecting the wallet, network, and database layers. Meanwhile, the team has finished porting and upgrading the integration test framework, enabling them to perform in-depth testing on UTXO tracking and transaction creation in the coming weeks.

NETWORKING

The network team has been finishing the byron-proxy's chain synchronization server and writing a codec for running it over a TCP socket. Engineers also made progress with a CDDL (Concise Data Definition Language) specification of serializable types in ouroboros-network.

The review of block fetch logic was completed, and the results will be merged soon. The team also reviewed the available documentation and have been making progress on version negotiation and interface.

Engineers have also been analyzing the performance model of Praos, and the impact of NTP clock skew. The team will be analyzing the effect of leap seconds on the 2s slot time.

DEVOPS

Continuous Integration

The team continued work on integrating nix-tools with the new repositories, including cardano-shell and plutus.

Monitoring

The team continued with monitoring tooling migration. Engineers have also been working on upstreaming changes to NixOS for Prometheus 2. A working environment should be achieved some time this week.

CARDANO DECENTRALIZATION

Research and Design

The team has nearly finished off work on the engineering design specification for delegation and incentives in the upcoming Shelley release and will be presenting the full document at the IOHK Summit 2019 in a few weeks. Work is currently underway to incorporate the new design specification into the official formal specification.

Development

The team is making steady progress. Property-based tests that test the Byron compatibility code against its executable specification will soon be complete. Work has been done on the integration of various components, and on reducing the in-memory size of the UTXO set.

GOGUEN

This week the Plutus team worked on usability issues in the Playground. Updates were made to signature implementations, and state-machine-based tests were also added. The Marlowe team were busy working on Meadow functional and usability improvements, as well as presentation updates and edits to the samples that are provided.

Good progress was made on the content for the Marlowe Udemy course, which is now in its pre-launch review phase. Content creation has started for both the Plutus Udemy course and Plutus ebook.

ANNOUNCEMENTS

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