Status Updates

June, 2018

Jump to

June 28, 2018

Weekly Development Report

DAEDALUS

Last week the team finished the implementation of form submissions using the "Enter" keyboard key. In the scope of this task, the team introduced active button state which marks a button with a focus that will be interacted with in case the "Enter" keyboard key is pressed.

The team continued to work on improvements of the Daedalus IPC setup and started with the support for running multiple copies of Daedalus which connect to different networks, for example, the testnet and mainnet. This support includes configurable ports for the installer for running the Cardano backend and labels in the user interface indicating which network is being used.

In the scope of maintenance tasks, the team added acceptance tests for the "Daedalus update mechanism" feature which make sure Daedalus shows a "New version available" notification message in case a new version of Daedalus is released and that "Apply" and "Postpone" update actions are working as expected. React-Polymorph "Autocomplete" component tests have been extended and now they cover suggestions list selection triggered by "Enter", "Tab" and "Space" keyboard keys.

The team decided to switch from NPM to the Yarn package manager which required application scripts and documentation to be updated.

WALLET BACKEND

Last week the team continued the effort to create the new wallet from their formal specification.

Work on implementing input selection for generating transactions has been completed. Apart from that, input selection is being tested against different edge cases (grouping, fees, short addresses). The task of finishing tests for input specification study and implementing input selection is very crucial. Once complete, the team will have full confidence that what we have in terms of coin selection is sound and behaves as expected.

Furthermore, the team continued to work on the function of wallet restoration from a seed. Particularly, a specialist has been concentrating on integrating work previously done on acid-state with the “wallet worker” code. At the moment they are fixing some of the public API of these two parts of the code necessary for the restoration from seed work, and as they go on they are taking care of exception handling and bracketing all resources involved.

Additionally, the team focused on the Block metadata, as per Section 9 of the spec. Also, the developers report very good progress in supporting history tracking and queries and are hoping to complete the task next week.

NETWORKING

Last week the work to speed up block verification continued. A developer added a test for decoding blocks & headers with external representation and updated the code base up to Cardano SL generators with all tests passing and benchmarks showing good progress.

CARDANO DECENTRALIZATION

Research and Design

In the effort of Research and Design for incentives, the team was trying to understand why the simulations didn’t converge with the updated formula for "pool desirability". At the end of last week, they finally narrowed down the problem to a subtle bug in the simulation code, of which a researcher spent their weekend running lots of experiments with the fixed version, tweaking parameters until they finally reached a satisfactory outcome late Sunday. Now the simulations converge again with the improved "pool desirability" formula.

GOGUEN

Languages and Virtual Machines

The team reports good progress on Plutus and Marlowe.

End Users and External Developers

The new product manager spent the week providing direction on the K/IELE workstream (wallet, testnet status) and is now starting to provide direction and plan for other areas incrementally (external developer and end user).

Testnets

Last week the team started the testing of the IELE testnet. Also, time was spent on content creation and website design for the IELE testnet.

MISCELLANEOUS WORKSTREAMS

HD Wallets

The Ledger backend APIs have been built and successfully unit and integration tested with the existing wallet backend. Unit and integration testing are ongoing while one bug was found and addressed.

Daedalus App Platform

Last week the team finished writing tests for the permissions system and added all relevant information and instructions to the app platform developer's guide.

The team has finished the modelling of the app platform domain and has started with the implementation of a domain layer as an independent module in order for it to be easily extracted if the need arises. Domain is modelled as a state tree, exposing a mutable and observable interface for applications, and can be synchronized using EventEmitters. Redux was reviewed as an alternative to MobX state tree.

In order to have a clearer base for comparison, both solutions need to be compared in actual implementation. However, at this stage, MobX state tree looks like a better solution as it enables us to easily express the domain without having to build an interface first.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a Front End developer, Exchange Experience Engineer/Coordinator, Software Test Engineer, Senior Events Manager, Testnet Community Manager, Development Experience Manager as well as several others. Please see the IOHK Careers page for more details.

June 21, 2018

Weekly Development Report

DAEDALUS

Last week the team finished the work on "Ada redemption" screen updates - this feature is now accessible only through the application menu, and in case there are no wallets in the UI an explanation screen is shown, which instructs the user to add a wallet in order to use this feature.

In order to fix the Japanese characters issue on the Linux version of Daedalus, the team had to replace the font used in the main UI which has been finished and tested.

The team started to work on improvements of the Daedalus IPC (inter-process communication between the main process and rendering processes) setup. The end goal is to extract all of the IPC logic into a separate layer which will reduce code complexity and ease future development. In the scope of maintenance tasks, the team introduced several important acceptance tests. These tests cover wallet, transactions and addresses ordering, "About" dialog presentation and the "maximum wallets limit reached" notification.

In order to improve general UX, the team decided to implement an option of form submissions using "Enter" keyboard key. This work has been started and will continue throughout the next week.

WALLET BACKEND

More effort was put towards new wallet specifications and development.

Two team members concentrated on the task of implementing input selection, “generate transaction”. The duo also has ported the initial code to use concrete Cardano types, and started working on a substantial amount of Quickcheck properties.

One of those team members has also spent time on an input specification study. The developer successfully modified his input policies to allow a maximum number of inputs to be specified (in order to keep the size of a transaction at bay) as well as modifying the random input selection policy to better deal with some edge cases.

Another team member continued on implementing the REST (Representational State Transfer) endpoint akin to the old wallet’s restoreWalletFromSeed, but using new wallet types and storage.

The team also finalised the ‘AcidState Wallet’ PR and started work on BlockMeta initialisation.

A new team member spent the week getting acquainted with the code base. Specifically, trying to understand how WalletLayer should work and connecting the different layers to the V1 API.

API rewrite

Last week, one of the team’s main efforts were improving the wallet’s error handling. The team reports that the work is progressing nicely and plans to release the improvements in the upcoming 1.3.0 update. Currently, the team is engaged in identifying what errors can be easily triggered by the API via integration testing and addressing those errors.

NETWORKING

In the task of communication protocol design, one of the team’s senior developers has come up with a potential solution for chain selection, doing away with "recovery mode".

DEVOPS

Last week DevOps released Cardano 1.2.1 and Daedalus 0.10.1. An engineer also resolved an upstream regression in NTP and improved monitoring resolution for NTP drift on the Cardano clusters in time for the 1.2.1 update. In preparation for the 1.3 release branch cutoff the team worked to get Windows builds for Cardano passing again on the develop branch. Blockers to creating a new genesis block suitable for Cardano testnet were resolved. Developers needed a web server to host internal reports, so we provisioned one for them. Lastly, DevOps started supporting an exchange over recent performance issues and considered strategies to optimize their wallet.

CARDANO DECENTRALIZATION

Research and Design

A senior team member has concentrated their efforts on the Delegation design document. It builds upon extensive discussions involving both researchers and engineers, and describes how delegation will be implemented in Cardano, and how it will interact with the rest of the system. The current version is under review by another senior engineer, and a few sections are currently being updated to reflect recent optimizations of the design. The author will add a summary section, which will describe how each of the requirements will be satisfied by the design in the document.

Another researcher continued working on the proof pertaining to the Incentives research paper. A senior researcher ran some more experiments on the proof and successfully identified the cause of the unfavorable results of the last simulation.

GOGUEN

Fundamental Research

The team reports that an agreement has been reached on the plan for how the formal methods team will prototype multi-currency ledgers.

Languages and Virtual Machines

Plutus and Marlowe work is progressing well.

End Users and External Developers

The Product manager, who joined the team a little while ago, has spent the week familiarizing themselves with end user and external developer requirements and requests.

Testnets

Last week, the QA team focused on the IELE testnet and preparing a presentation of the overall strategy. Furthermore, the market analysis for IELE testnet have been successfully completed. The team has also baselined content and design for the IELE testnet as well as started on content creation for development work, videos, and learning through development.

MISCELLANEOUS WORKSTREAMS

Daedalus App Platform

Last week the team was focused on quality assurance tasks. The team finished writing integration tests for app installation process and integration tests for app interaction (triggering actions, receiving UI updates). The team is now focusing on writing tests for the permissions system. The team also worked on modelling the app platform domain and prototyping a solution for managing app and platform state, which will remove the hard-coded information in the view and the state. The research was done regarding the usage of the observer pattern for unlocking a reactive app interface and the usage of a state tree to allow synchronization and reduction in brittle code.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a Front End developer, Exchange Experience Engineer/Coordinator, Software Test Engineer, Senior Events Manager, Testnet Community Manager, Development Experience Manager as well as several others. Please see the IOHK Careers page for more details.

June 14, 2018

Weekly Development Report

DAEDALUS

Last week the team worked on preparations for Daedalus 0.10.1 with Cardano 1.2.1 hotfix release. The main task was increasing maximum wallets limit from 10 to 20 wallets along with a UI logic which prevents users from adding more than 20 wallets.

In order to reduce application resource usage, the team decided to replace the "About window" with an overlay dialog shown in the main UI window.

The team has started the work on "Ada redemption" screen updates - the button for this screen is to be removed from the application sidebar, and placed under application menu. A new screen is to be added for the situation where a user has not added any wallets yet, which will direct the user to add a wallet in order to use this feature

WALLET BACKEND

Last week saw a lot of progress as the team engaged in various important tasks. One of these tasks was the effort to investigate high (and recurrent) IO traffic in the wallet. This task was successfully completed and the team has concluded that the large spikes were due to flushing large logs that had multiple megabyte log lines present in them.

Additionally, more progress was made on the task of creating new wallet specifications and development.

A different team member continued with input selection policy evaluation. The plan was to introduce a max-number-of-inputs in the model and implement a fallback policy that combines the largest first input with the randomized algorithm. Also the team member helped with the Coq formalization and spent some time reviewing and providing feedback on various other PR’s.

One of the teams research specialists have been busy writing their functional pearl on "Ghost of Departed Proofs". Apart from successfully finishing the paper, the team member also had some discussions with another specialist on the subject of wallet restoration as well as refactoring of the wallet worker state machine to make it cleaner and more testable as the team add new states like "restoring".

Additionally, the team continued to work on the data migration and plans to dedicate the coming week to pending restoration work.

Furthermore, work continued on the AcidState wallet adding of HdAddresses during wallet creation and applyBlock.

NETWORKING

Last week one of the main focuses of the teams’ work was on the communication protocol design. A senior member of the team has begun to design an implementation of a new inter-node communication protocol using a single bidirectional channel for all data and control message. The team spent time on studying and discussing how to deal with the download of chains of length > 1 and forks.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

Research and Design

Last week the research team engaged in work on the Delegation design document. The team addressed the malleability issue as well as the requirements.

Furthermore, the researchers continued work on the Incentives paper. While work had progressed nicely, the team felt that the proofs needed more engagement. They ran several simulations which confirmed their position. As a result, a number of modifications were introduced and a new simulation is planned to be administered this week.

GOGUEN

Fundamental Research

Last week was spent primarily on writing up papers for multi-currency and chimeric ledger for submission to the Journal Of Financial Technology (JFT). The ledger supports various UtXO and account based transactions.

The Reagan paper on experimentation to test the K-framework is being developed; the K-framework performed well using industry-standard COMPCERT tests.

Languages and Virtual Machines

The team reports that good progress was made on Plutus and Marlowe.

On the side of Plutus, the team spent time working on the Core as well as Smart Contract Modelling.

Marlowe is continuing with the analyses phase.

End Users and External Developers

A product manager has been hired. One of the tasks they plan to work on immediately is developing an understanding of the needs of external developers and end-users as it relates to smart contracts.

Testnets

The team reports that they have started the Cloud Infrastructure design work for the IELE testnet. Additionally, content design work for IELE testnet started.

MISCELLANEOUS WORKSTREAMS

Hardware Wallets

The developers report that the ledger integration backend work is progressing well. The team feels that there are various reasons that it might be sensible to target the Ledger Integration with the New Wallet Backend and release both when ready. Ledger backend and Daedalus work will continue in parallel with the new backend.

Additionally, the team successfully finished work on the ‘Create new wallet’ functionality, the functionality that allows it to generate new address on the device as well as spend Ada from the hardware wallet.

Daedalus App Platform

Last week the team finished working on app installation errors handling and updated the documentation with app packaging instructions. The biggest focus was putting on the development of JSX to RJX compiler which will enable the developers to write apps in standard JSX format, and then the compiler will take care of converting it into RJX code used by the app platform. This work was completed and the team refactored existing demo apps to JSX. The team started working on transparent actions handling which makes sure developers only pass event handler functions to React components.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a Front End developer, Exchange Experience Engineer/Coordinator, Software Test Engineer, Senior Events Manager, Testnet Community Manager, Development Experience Manager as well as several others. Please see the IOHK Careers page for more details.

June 7, 2018

Weekly Development Report

DAEDALUS

Last week the team continued with the React 16 upgrade which includes integration of the latest React-Polymorph version. This work has been completed and the code is in the final review and testing stage.

The team resolved paper wallet certificate PDF compatibility issues which prevented printing of the certificate on some systems.

In order to improve security, the team decided to disable Node.js integration in Daedalus rendering process. The work on this task was started and will be continued throughout the next week.

The team added all of the existing wallet screens to Daedalus Storybook integration. Storybook is a UI development environment used for rapid UI prototyping and inclusion of existing wallet screens will ease and speed up future UI development.

In the scope of the maintenance tasks, the team started with the implementation of acceptance tests which will cover Daedalus update mechanism and toggling of used wallet addresses on the wallet "Receive" screen.

WALLET BACKEND

Last week the team once again concentrated on new wallet specifications and development.

A team member has spent the week working on implementing the input selection for generating transactions. He also spent part of the week working with a different team member on fees. In particular, the duo have extended the code to deal with fee estimation, introducing the concept of ExpenseRegulation, a generalization which allows it to specify if the sender or the receivers pays for the fee.

The latter part of the duo has spent their week on continuing with the study of input selection. The team is striving to optimize the input selection strategy in an effort to keep the UTxO small and avoid creation of dust entries. This strategy is currently being thoroughly tested via various simulators.

A different team member continued working on the data migration from the old storage to the new storage. However, towards the end of the week, the team have realized that they could avoid the tricky migration process altogether and rely on wallet recovery instead (that is, going from a local copy of the blockchain towards the new wallet and metadata storage), since this process is not as time-consuming as was previously estimated, and is more reliable and precise (for example, regarding checkpoints). However, not all metadata is present in the blockchain, some are still only present in the old wallet storage. The team is now making sure they recover that data in the old wallet as necessary to properly populate the new HdWallet and TxMeta.

Another team member is in the process of starting to wrap up his work on the acid state implementation.

NETWORKING

Last week the team started to work on the communication protocol design and the goal here is to move away from synchronous request/response. The request/response design is essentially a node that sends requests to another peer to get a block and gets a response with that block. A team member has begun to sketch an implementation of a new inter-node communication protocol using a single bidirectional channel for all data and control messages.

DEVOPS

Early last week DevOps supported the launch of KEVM Testnet, Cardano 1.2, and Daedalus 0.10. As issues were discovered, DevOps helped to diagnose and prepare fixes. A scenario was identified where the Windows installer for Daedalus may not replace the previous version automatically. We also found a regression which prevented the Cardano launcher from logging. Fixes have been implemented for both issues and will undergo QA testing in a hotfix release candidate soon.

CARDANO DECENTRALIZATION

Research and Design

Incentives

In the continuing effort of compiling an Incentives design document, a meeting was held with the team to discuss how monetary expansion will work and the proposed incentive mechanism. A research paper is planned to be submitted by the end of July/beginning of August for a conference in December.

Additionally, three blogs will be published online with embedded videos, covering the following:

  • How do we ensure Sybil attack resistance on the level of stake pools
  • What is the optimal level of decentralization for the system
  • What will be the final monetary policy before the launch

GOGUEN

Fundamental Research

Last week saw a lot of progress in terms of high level planning on formal methods approach. The team is currently reaching out to other IOHK researchers in order to amplify the effort.

Languages and Virtual Machines

The team has successfully completed the 5M test runs for Reagan.

End Users and External Developers

Since reaching out and working with external developers and end users is such a big part of the project, the team has spent an ample amount of time last week in supporting preparations for activation of the StackExchange site, dedicated to the Goguen release and its various features.

Testnets

Last week saw the successful launch of the KEVM testnet. This of course meant that the team had to engage in supporting KEVM testnet. The team reports that this effort is progressing very well.

Additionally, the team is preparing plans for IELE testnet and gathering lessons learned in order to have a smoother roll-out and support of the upcoming testnet.

EXCHANGES

The core of the work pertaining to the Version 1 API is complete and will be released in 1.3.0. The team plans to outline further development strategy in the coming days.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a Front End developer, Exchange Experience Engineer/Coordinator, Software Test Engineer, Senior Events Manager, Testnet Community Manager, Development Experience Manager as well as several others. Please see the IOHK Careers page for more details.