Status Updates

May, 2018

Jump to

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.

May 24, 2018

Weekly Development Report

CORE

There is no update this week.

DAEDALUS

Last week the team finished QA tasks for the upcoming Daedalus 0.10.0 with Cardano 1.2.0 release.

The biggest task during last week was the expansion of the Ada redemption feature with support for redeeming Ada with the certificates from the recovery service. In the scope of this update two new tabs were added to the Ada redemption screen: "Recovery - regular" and "Recovery - force vended". The implementation has been completed and the code is in the review stage.

The team has finalized the implementation of test coverage improvements of the React-Polymorph library.

WALLET BACKEND

In regard to adding server side Transport Layer Security (TLS) check, last week the team merged the last bits of the story together and resynced the branch with the latest develop branch. The code is currently building and final checks still need to be made.

Furthermore, the team has been concentrating on the task of new wallet specification and development. A team member has completed the initial work on choosing an existent solution or implementing a bespoke persistent key-value storage for transaction metadata, however the pull request cannot be merged due to some Continuous Integration (CI) issues which Devops are helping with. While the CI issue is being addressed, the developer moved to the task associated with submitting transactions to the network.

A different team member has cleaned up the unit tests, corrected treatment of expected UTxO in the specification, translated the rollback invariants to Haskell, assisted a specialist on the Coq formalization of the wallet spec, along with providing feedback on a few other things.

Additionally, more work has been done on the task of wallet data migration. A senior developer has written some concrete migration code and tests.

A team member has made good progress in the effort to use persistent state in the data layer. He has rebased to the new Generator/test code and almost done with extending prefiltering.

API rewrite

All tasks are completed and the API is ready for release 1.2. The only outstanding task is to improve the wallet’s error handling.

NETWORKING

The team reports good progress on Peer Discovery Implementation. A team member worked on a few security-related issues that were detected last week while finishing the routing table maintenance task which resulted in a delay. Most of them were solved, however, the feature is not yet fully operational.

DEVOPS

DevOps continued efforts to make CI systems more transparent for QA and established conventions issue reporting and tracking which should lead to more productive CI resolutions in the future. The team fixed several classes of build issues, including bypassing a new optional Daedalus development environment feature which broke builds, and overcoming a linker size limit by statically linking macOS builds.

The team continued working with wallet developers to identify the cause of the bug which has been blocking the Daedalus and Cardano 1.2 release. After adding more diagnostics to the reproduction case and testing various scenarios we realized the regression arose due to a small yet significant type change. On Friday, the developers' fix was merged and DevOps incorporated it into the Daedalus release branch so it can be tested from a user's perspective.

In preparation for the KEVM testnet, DevOps identified and tracked operational details that should be fully addressed before launch, such as deployment process and monitoring. For Cardano testnet, work continued to support installing and running multiple instances of Daedalus which connect to different clusters, develop the faucet, and provision the cluster itself.

CARDANO DECENTRALIZATION

Delegation

A researcher is awaiting feedback from the team on when the research paper can be published. The team has not outlined a clear plan for publication as of yet, however a senior scientist feels that the research is complete and that development can go ahead.

Incentives

Researchers have been busy working on the white paper that is tentatively planned to be finished later this month. Good progress has been made on the design document. A senior researcher has updated the document which determines monetary expansion and provided a couple of figures as input for the team to review.

GOGUEN

The fundamental research for the project is at a mature stage; the team is now in the preliminary phase of design discussion about how this work (sidechains, multi-currency and chimeric ledger) will be integrated into the Cardano Core platform.

The team is currently preparing for the first testnet of Goguen on May 28 which will allow smart contract developers to run their Solidity contracts on the KEVM which is a formal semantics implementation of the Ethereum Virtual Machine (EVM) using the K framework.

MISCELLANEOUS WORKSTREAMS

Testnet update

The team is planning on delivering several videos and PowerPoint presentations to the community, created by the IOHK Education Department and project managers. The team hopes to use these materials to engage with the community in terms of what they are working on.

In regard to the release rollout strategy, it was decided that the team will go with a single release strategy rather than incremental as we see no value to deliver small incremental releases to the community.

The team plans to have a PM monthly update video released to the community at the end of the month. As part of that update, they look to provide a summary of the testnet process of where they are and what to expect.

There is a testnet readiness checklist that will be used to identify and track all tasks to go live for the testnet, which will be broken down by function (Marketing, Communications, DevOps, QA, documentation and development).

May 17, 2018

Weekly Development Report

CORE

Exchanges

Last week the team concentrated their efforts on Version 1 API and test coverage for the initial roll-out. The developers wrote small tools to easily generate and validate swagger json schemas corresponding to the wallet's backend API specs. Example addresses are now more representative of what they might be in real-life.

The effort to review and gather feedback on the current V1 API is now complete and awaits feedback from the exchanges.

DAEDALUS

Last week the team tested Daedalus update mechanism in the scope of QA tasks for the upcoming Daedalus 0.10.0 with Cardano 1.2.0 release.

The team implemented multiple UI improvements such as prevention of drag and drop actions on static UI elements and a fix for wallet navigation tabs where the long text would break in multiple lines on smaller screens in case of the Japanese language.

In the scope of regular maintenance, the team introduced better Electron IPC API and improved Cardano API error handling.

The team is working on the finalization of test coverage improvements of the React-Polymorph library.

WALLET BACKEND

The team spent time on tidying up the incorrect (0) balance issue. The issue is old and the underlying code has much evolved since then. It is possible that this was fixed in some recent additions; What's certain however is that the issue is complicated to reproduce. The team will need to confirm with support this week whether similar cases have been reported recently. If not then this issue will be closed.

In regard to adding server side Transport Layer Security (TLS) check, significant progress has been made. Currently, the developers need to verify that each of the files required by the wallet to start is available on disk (--tlsca, --tlscert and --tlskey). If one of them is missing, the generation tool generates new ones (overriding any existing file).

The team was also able to make progress on investigating high (and recurrent) IO traffic in the wallet. The root cause has been identified and the exchanges has now finally applied the patch that the team provided a few weeks ago. They are currently awaiting feedback from the exchanges.

The formal specification for the new wallet backend is now completed and available on the Cardano Docs website. The only part that still requires an in-depth study is input selection, which is a separate study and for which another separate tickets has been raised. But this will be looked at further down the line once development has progressed.

API rewrite

The task to design wallet’s V1 API is now completed. All tasks are completed and this is ready for release 1.2 The only outstanding tasks is to improve the wallet’s error handling.

NETWORKING

The team engaged in an effort to speed up verification and application of blocks. The developers discovered and fixed a flaw in profiling & criterion benchmarks of blocks verification, optimized calls to getCurrentSlot, getAdoptedBVFull, also generated profile data that was analyzed with a senior engineer, which now has led to new ideas on how to optimize.

Furthermore, work was done to smooth block syncing and to have a progress bar that would show block sync progress from latest synced point. Currently the Daedalus UI does not have this feature, therefore, a call will be made this week with the required stakeholders to decide if this task should be closed or further worked on.

DEVOPS

DevOps continued supporting QA efforts for the upcoming Daedalus and Cardano release. The team worked with QA and developers to reproduce and troubleshoot a bug identified during release candidate testing which impacts whether Daedalus opens correctly. This is considered a blocker for the release and efforts are ongoing to resolve it. DevOps also submitted new installers to the internal staging blockchain to help QA test the update mechanism.

In preparation for the upcoming Cardano Byron testnet, an engineer started developing a new faucet backend and its supporting infrastructure, and two engineers are making Daedalus installers more modular independent copies which target different clusters may be built and simultaneously run on the same machine. Part of the Daedalus work includes adding an IPC mechanism so Cardano can advertise which port its using, and as a perk we anticipate IPC will enable Daedalus to relaunch the Cardano backend in the event that it fails. Two other engineers are working closely with the Mantis team to prepare operational aspects of the K-EVM testnet.

The team continued handling CI support requests and making improvements. When an integration test failed we determined it was due to a missing /etc/protocols file, and proposed a fix. We also started working with developers to incorporate Haskell benchmarking into CI. To make macOS build machines more maintainable an engineer integrated nix-darwin into DevOps' tooling, and also bumped much of our infrastructure to nix 2.0.

CARDANO DECENTRALIZATION

Delegation

One of the researchers has found a potential issue with chain delegation in the research paper, which he has bounced back to the researchers. This might have an impact on the research paper as it could require a minor modification.

Networking

On the front of Peer Discovery Implementation the researchers are continuing to make good progress. Last week public interface was completed, one potential security problem fixed and routing table maintenance is almost ready.

MISCELLANEOUS WORKSTREAMS

The Gougan team is currently preparing for K-EVM testnet launch. Additionally, detailed planning for the smart contract language and Marlowe based on signed off roadmap has begun and the team reports good progress. The team also spent time Working with RV on deliverables; raising concerns about test reporting and gas model in IELE.

Tech Support

Last week saw a decrease in the number of tickets received. The tech support team received a total of 748 tickets, out of which 322 were successfully resolved. The top reported issues were:

  • Unable to connect to network
  • Unable to update wallet
  • Cannot sync
  • Misc.