Status Update

June 21, 2019

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

Weekly Development Report

DAEDALUS

Wallet

This week the team continued work on the implementation of the UI designs for Shelley features.

The implementation of the “Delegation setup” wizard UI is nearly done and the team has started the implementation of the “Delegation center” screen. Several minor UI/UX adjustments have been implemented on the “Stake Pools” screen. These were mostly related to the “Stake Pool” tooltip’s positioning and display logic.

In the scope of regular maintenance tasks, the team has improved the “React-Polymorph” numeric input component by simplifying the logic and reducing code complexity. The team is working on improvements of the screen switching logic for all the screens that are available from the application menu. These screens are shown in the form of an overlay which requires the team to prevent the display of two or more of these screens at the same time.

App Platform

The team completed the Ledger Nano S key manager in the Cardano JS SDK, which demonstrates the benefits of establishing an interface for application-specific implementations to be configured by the application. A Cardano interface was also introduced, decoupling the SDK from particular implementations of the Cardano primitives, and the Rust-derived bindings were implemented as the default. Work was also dedicated to state handling in the Smart Contract backend, which aligns with the existing repository design. A diff on the current and new state of the contract will be used to manage triggers. The team has also been contributing to an upcoming integration effort, and is investigating the use of generated clients using the OpenAPI specification.

BACKEND OPTIMIZATION

The team has put effort into making the new wallet backend server usable for Daedalus. This is an important milestone because we want to have Daedalus starting integration as soon as possible now that the http-bridgebackend is ready and stable. In the meantime, the team is making progress with the Jörmungandr integration and is extending the testing in this area too. The developers are now able to spin up a Jörmungandr node and interact with it to retrieve BFT blocks. The next major step in this area is the ability to submit signed transactions and is landing very soon on the new wallet backend!

NETWORKING

This week the network team worked on tx-submission protocols. There are two scenarios where they will be needed: a client submitting transactions to a local node (e.g. a wallet submitting transactions), and node-2-node tx-submission protocol which will carry transactions across the network. They have different threat models, and thus we decided to have two different protocols. We also progressed with a dns resolver implementation, which now includes tests in simulation. The developers decoupled consensus node initialization from networking, and cleaned up and simplified the integration of consensus node with real networking. Additionally, the team out carried an analysis for ΔQ measurements and extracted delays depending on block size.

DEVOPS

The team has created helper launch scripts with nix for running Jormungandr in the https://github.com/input-output-hk/jormungandr-nix repository. These scripts allow launching a cluster using Genesis Praos with multiple stake pools running in the same process. The team has also added GELF support to Jormungandr to support logging to a central server so IOHK can review logs of participants of the Shelley testnet launch. The team has added NixOS services and tested a tool that turns NixOS services into docker containers in a docker-compose file.

CARDANO DECENTRALIZATION

The team are expanding their property tests to the update mechanism, which allows to modify protocol parameters on-chain. Once those are complete the developers will be able to run conformance tests of the update system, that check executable spec against the concrete implementation. Expanding these property tests and finishing the conformance tests are the last parts of the Byron ledger work, other than integration. Once this is done the team will be moving people over to the Shelley concrete implementation!

The team have a working PoC of a federated extension of the framework to allow a process forward observables using a new backend TraceForwarder to a distant process that runs the new backend TraceAcceptor to insert these data into its local switchboard and further process them. This allows a slim integration of the framework in an application doing benchmarking, logging and monitoring without including all the special dependencies and offloading the processing to another, probably distant, process.

Another new backend has been implemented to forward log messages to Graylog, a tool used by devops to aggregate logs.

GOGUEN

The Plutus team worked on ways to track gas usage, and started to look at ways to deliver better executable contracts. They also looked at how to link to GitHub for commits within the Plutus Playground and how to decode values from Plutus Core back into Haskell.

This week the Marlowe team evaluated the MonadApp type and continued work on tests for the logic of the "Undo" button and a way to record the Meadow simulations.

The Education team are working on reviews of some research papers and adding content to the Plutus ebook.

ANNOUNCEMENTS

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