Status Update

April 12, 2019

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

Weekly Development Report

DAEDALUS

Wallet

This week the team finished the implementation of a new screen named 'Wallet's UTXO distribution'. The redesign of the 'About Daedalus' screen has also been completed, while the 'Block consolidation status' and 'Network status' screens are in the final code review and testing phase.

The team has improved the validation logic of the spending password format. Since the introduction of support for non-Latin characters, the validation rule which was supposed to enforce the use of at least one upper and one lower case character has been ignored. This issue is now resolved.

A small issue with the Japanese content of the 'Support' screen has been fixed. The link to download logs was set on the wrong part of the text.

In the scope of regular maintenance, the team fixed a minor loading-logic issue which allowed the wallet 'Settings' page to be displayed before the wallet data had been fully loaded. The team is also working on the optimization of the visual theming setup, which should reduce complexity when it comes to visual theme management and allow the team to implement new themes in the future more easily.

App Platform

This week the team configured a specialized build pipeline for the smart contract backend to support the current Docker-execution engine, refactored the server to include repositories and a contract controller to better express the model, and completed features assigned to the first milestone. This included upgrading the GraphQL pubsub infrastructure to use Redis for supporting multi-process event origins, preparing the Plutus execution call routing for state and trigger handling, and development of a bundle server as a standalone web service for contract developers to deploy.

BACKEND OPTIMIZATION

This week the team focused on transactions and related operations, starting by extending the core model used to identify and keep track of known transactions as blocks get applied. Along the way, the wallet backend computes some metadata (refined from the previous implementation, but still very similar) and stores the transactions and their metadata in a dedicated location. Work has been done to port and reimplement coin selection from the previous backend version, resulting in an implementation that is closer to the wallet specification and better tested.

Meanwhile, engineers also worked on extending the command-line interface to include more commands reflecting the underlying wallet backend API. The command-line interface will make local HTTP calls to a running server, and offer a human-friendly channel of communication with the API. The commands and CLI specification have been implemented and now only require the API handlers be implemented to be fully functional.

NETWORKING

This week the team ran the first test of the Byron proxy, which was a great success. Blocks were successfully streamed through the protocol on the first run, and the team will soon be adding more functionality to the proxy. Engineers prepared a version negotiation protocol, which has been submitted for review. Work has also been progressing on implementing byte limits for the multiplexing layer, which will aid the detection of malicious actors.

The team finished the Concise Data Definition Language (CDDL) description of cborg codecs for data structures which are passed through a wire. Additionally, the team has been working on block fetch logic tests and will continue with this task next week.

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 and tested the changes in an isolated environment. The changes are being finalized for merging and will be rolled out to all environments by the end of the month.

Rust-Nix Overlay

The team created a Rust-Nix overlay for the Rust tools: cardano-cli, cardano-http-bridge, and jormungandr. The overlay will be merged into iohk-nix soon.

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

Permissive OBFT has been implemented and tested in the consensus layer, has undergone review, and feedback is currently being incorporated. Integration of the ledger and consensus layers is proceeding. The rules for the update system have been implemented. A final pull request to implement bulk chain validation within the node-shell has been submitted. The work on optimizing the memory footprint of the UTXO has been successful, reducing the size of the UTXO in memory by more than 50%.

GOGUEN

This week the Plutus team worked on updates to the ledger rules as well as improvements for signature and transaction encoding. Updates were also made to the Plutus Transaction tutorials, sizing of the editor pane, and alignment of the Login button in the Plutus Playgrounds.

The Marlowe team were busy again this week working on functional and usability improvements in Meadow. The online Marlowe Udemy course was reviewed and finalized and is now ready to be rolled out. Content creation continued on 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.