Status Update

May 31, 2018

Status Updates (May, 2018) > May 31, 2018

Weekly Development Report

DAEDALUS

Last week the team was primarily focused on maintenance tasks. The biggest of them is the React 16 upgrade which was started and will require a lot of changes in Daedalus codebase. In order to make this upgrade possible the team had to implement ‘ref’ and ‘context’ polyfills in React-Polymorph library. In the scope of the maintenance tasks, the team carried out an npm dependencies security audit which exposed several potential vulnerabilities. The team has resolved these by updating listed dependencies to their latest versions.

The rest of the maintenance tasks include: refactoring of the npm scripts to use colon style, adding Eslint and Flow checks to the Daedalus Storybook directory and internal application to redirect logic refinements.

The team added UI improvement to the ‘Receive’ screen where the textual ‘show/hide used’ addresses toggler was replaced by a nicer looking switch element.

WALLET BACKEND

Last week, the team continued their efforts in adding server side Transport Layer Security check. The work related to cardano-sl has been merged. The team still has work remaining to get the installers on Daedalus' side working.

Additionally, the team put a significant amount of effort to progress new wallet specifications and development. A team member spent the week on the wallet’s transaction submission layer, after discussion with a specialist in terms of the current implementation and found several interesting edge cases which are essential and need to be addressed.

Another team member has spent his week on input selection. He has started to work on the study of Input Selection. Additionally the developer provided significant help to the team in regard to implementation of the wallet’s transaction submission layer, and reviewed the first version of the Coq formalisation of the wallet spec.

A designated member kept working on the transaction fee estimation. He has completed the static size estimation functionality and was in the process of adding correctness tests, which turned out to be a little more subtle than he was anticipating. Taking the aforementioned into account, the developer will continue to work towards it this week as well.

The team also spent the week working on the migration from the old to the new data layer.

NETWORKING

The team continued their push in the ongoing effort to speed up verification and application of blocks. The week was spent working on the new deserialisation that can record bytestring offsets of decoded substructures. Furthermore, the team spent time on rebasing work on top of recent changes in development.

The task of smoothing the block syncing progress bar in Daedalus and the effort to show block sync progress from the latest synced point, was tackled last week.

A developer has completed the routing table maintenance for peer discovery and this work is ready to be reviewed.

DEVOPS

The team continued preparations for testnets, including the recently launched KEVM testnet. For the upcoming Cardano Testnet they have verified a new mechanism to run independent builds of Daedalus at the same time on the same machine works, whether on Windows, macOS, or Linux. Consequently, it will be possible to run both mainnet and testnet versions on the same machine without interference between the two. Additional work on this is ongoing with TLS client-side certificates. More intensive testing is required to ensure the update mechanism continues working. With the KEVM testnet live, we will resume focus on provisioning the Cardano testnet with an appropriate genesis block and integrating the new faucet backend.

DevOps built another release candidate for Cardano 1.2 and Daedalus 0.10, which QA later approved. Plans were made for DevOps to propose this release as an update to the mainnet blockchain on the following Monday, so it would go into effect on Tuesday.

CARDANO DECENTRALIZATION

Delegation

The team had some fruitful discussions with the researchers regarding incentives, and how they should be redistributed.

Incentives

A key researcher continued work on the technical spec of the design document and also had discussions with a senior engineer and a key researcher on some technical issues, especially on the question of how to claim rewards.

GOGUEN

Fundamental Research

Goguen is about smart contracts. The fundamental research phase, necessary for reaching the goal the team has set out to achieve, is nearing completion. The general work on sidechains, multicurrency and chimeric ledger is reaching maturity. Several papers have been submitted. The research team continues to push forward while adhering to IOHK’s unique emphasis on research. On the front of core research, the team is now looking for ways to turn the research into a working prototype that will eventually be used to change the Cardano code base.

Languages and Virtual Machines

The VMs are built using formal semantics and the K framework. The team has also concentrated on enhancing an offering for the smart contract language based on Haskell. This language is being designed and built in a manner to address deficiencies in current smart contract languages. The team is currently engaged in working on building out the language core and its accompanying library as well as the core specifications. This is the foundation of the entire language and is very crucial. Marlow research also continues.

End Users and External Developers

The team is very sensitive to the needs of the end user, specifically those of external developers, and is currently looking for a dedicated product manager to address these needs.

Testnets

On May 28, 2018, the team successfully launched the KEVM testnet, which uses the K framework specifications. Details can be found at https://testnet.iohkdev.io/goguen.

EXCHANGES

The team reports that the effort to implement Version 1 API and test coverage for initial rollout, is on hold, at least until the new-wallet team finalizes the input selection procedure. This task is actually more complex than it seems. The developers feel that there is a need to come up with a strategy for applying fees. Several important questions need to be answered: 1. How to distribute fees (equally between all outputs? proportionally between all outputs? from the inputs?) 2. What to do if, when applying a strategy, one of the inputs or outputs drops below 0? 3. How to deal with rounding issues (if some fees are to be divided non-evenly between two outputs for instance?)

The team is currently pushing to have these questions answered so that the implementation can progress.

MISCELLANEOUS WORKSTREAMS

Hardware Wallets

The team reports that the Ledger integration backend work is progressing well. There are various reasons that it might be sensible to target the release of Ledger integration with the new wallet backend and release both when ready.

Much progress has been made on other fronts as well. The task to allow the creation of a new wallet as well as the feature which would enable the generation of a new address on the device has been successfully completed.

Last, but not least, the feature allowing users to spend Ada from a hardware wallet is reported to be progressing well. The team estimates that the feature will be completed later in the week.

Multisig wallets

The high level design document is effectively split into 2 parts which are Multi-Sig and Communications (between parties participating in a multi-sig wallet). An assumption was made in the document pertaining to the communication between parts of the software in terms of wallet and Multisig, and how it would communicate via the API or another method, which needs to be clarified and agreed upon. The team members plan to meet with the proper resources in order to clarify these points. Once this is confirmed the high level design will need to be updated by the required team.

The team is engaged in a discussion with a senior scientist to determine if staking will be an issue with Multi-sig. After a thorough dialogue, it has been agreed that at the present time this will not be an issue and can be potentially implemented at a later stage.

The team plans to split the development into 3 parts. Core - for which resources have already been assigned, and the Daedalus team will work on communication and UI, while the wallet team will work on integration of Multi-Sig.

Daedalus App Platform

The team managed to make significant progress on the feature of app installation through the UI. It is now possible to install the app by clicking on the ‘Install app’ button in the UI.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as an Exchange Experience Engineer, Development Experience Manager, DevOps Engineers, Cyber Security Manager, Software Test Engineer as well as several others. Please see the IOHK Careers page for more details.