Status Update

June 28, 2019

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

Weekly Development Report

DAEDALUS

Wallet

This week the team continued working on the implementation of UI designs for Shelley features and the work is now nearly done. The implementation of both the 'Delegation setup wizard' UI and the 'Delegation center' screen are in the final code review and testing phase and are expected to be finished at the beginning of the next week.

In the scope of regular maintenance tasks, the team improved the screen switching logic for all screens that are available from the application menu. The team has also added a couple of smaller UI fixes for the UTXO statistics screen, designed to ensure accurate visual representation of the UTXO distribution chart regardless of the Daedalus window size.

App Platform

This week the team completed the initial implementation of the smart contract backend state handling, performed research into an existing GraphQL-based blockchain service layer solution, developed a style guide for the decoupled libraries, and assessed the output of the generated Cardano wallet OpenAPI client. A proof of concept was created to assist with the upcoming backend changes within Daedalus, which applied to the Daedalus application platform service stack. Work also commenced on the Cardano Wallet Provider implementation into the Cardano JavaScript SDK.

BACKEND OPTIMIZATION

The wallet backend server is becoming increasingly expressive and transparent thanks to improved logging. The team has been learning from their experience with the old wallet backend, and the new version will provide a better experience for users, including the Technical Support Desk who often make use of logs in resolving tickets.

The team is also facing its first big challenge with Jörmungandr integration, which requires non-trivial changes to some internal architecture. However, they have already had some success in construction and signing transactions using new, Jormungandr-compatible formats, and verified that the implementation matched that from the Jormungandr command-line tool. The next step in the integration is end-to-end testing and getting all the different layers working together.

NETWORKING

The networking team has been working with the consensus team on the final integration of the consensus protocol with the networking protocols, successfully creating a working node by the end of the week. The team has also extended the node with a full node-to-client protocol which allows integration with a local client such as a wallet or blockchain explorer application. Work has also been progressing with DNS subscriptions. Finally, the team gave a workshop at https://monadic.party on our in-house session type framework, which was very well received.

DEVOPS

The team has created both Snappy and Chocolatey packages for Jormungandr, as well as a Homebrew tap for Cardano products called input-output-hk/cardano. The team has also started planning the creation of NixOS services and tests in the cardano-node repository. Finally, the team has begun testing Cardano SL 1.5.2, which contains an OBFT bugfix and minor wallet improvements for exchanges.

CARDANO DECENTRALIZATION

The next iteration of the executable specification is in progress, including both a revised update system design and crypto foundations. This executable specification will then be ready to convert into the real implementation. The team is planning focused sprint activities to complete this work in parallel to the Byron rewrite work.

The team has also continued this week with property-based testing, with new generators for the update system and some new high-level properties of the ledger being defined. Progress has also been made on the design for invalid chain generation using genetic algorithms, which will allow the team to take valid chains and mutate them to produce known failures.

Work on abstracting over the cryptographic primitives in the Shelley executable specification has also begun, which will allow the Shelley implementation to stay as close as possible to the executable specification making integration with consensus layer easier in the future.

Finally, the team has been working on testing the correctness of storing a new block on disk. This is a significant operation since it triggers the chain selection process: can we add this block to the end of our chain, or does it extend another fork that we should switch to? What if we add multiple blocks in parallel, do we still get the right outcome? Using property-based tests ensures that this functionality is correctly implemented.

GOGUEN

The Plutus team made updates to the extended UTXO specification based on some feedback from various sources. They also updated some readme and contributing files to improve usability and added functions for running traces with defaults. Edits were also made to the Plutus core specification to fix rules for abstractions and to add references for the compilation paper.

This week the Marlowe team continued work on an MVP of block-based Marlowe contracts on Meadow and the ability for users to save their work in a GitHub gist.

The Education team are working on reviews of some research papers and adding content to the smart contracts and welcome chapters 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.