Status Updates

August, 2019

Jump to

August 23, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team started the quarterly design implementation review. During this process, the entire Daedalus UI is thoroughly inspected to make sure the implementation is aligned with the original design specifications. The inspection has resulted in a list of tasks which will be addressed next week. The team has continued work on the implementation of the redesigned wallet creation wizard. This process is tightly coupled with the integration of the V2 API endpoints used to create a wallet.

In the scope of regular maintenance tasks, the team has been working on small UI adjustments such as correct pluralization of the number of confirmations shown in the transaction details and improvements to the connection error messages display on the 'Daedalus Diagnostics' screen. They've also been optimizing the newly added 'White' theme.

App Platform

The TCP port management feature for the application platform is almost complete, which will enable integration between services that are dynamically managed. Integration with the smart contract backend is being used to create a natural model and forms part of the default (but overridable) configuration.

In other news, the new approach for Plutus JavaScript runtime validation reached a point of stability, with a proof of concept delivering a first-class TypeScript experience for static checking during development. Tooling is now being developed to generate a bundle for the smart contract backend using this and will be passed to the client for local validation.

Finally, the Cardano GraphQL now implements the DataLoader pattern for batching requests and solves the n+1 problem of field level query resolution. The stack has been dockerized and an integration test written to provide assertions based on queries, tested against a set of real services. This will be the foundation for a load/performance test coming next week.

BACKEND OPTIMIZATION

There is no update this week.

NETWORKING

This week the team worked on verifying that the Byron proxy can relay transactions in all possible scenarios: Byron to Shelley, Shelley to Byron, Shelley to Shelley, and Byron to Byron. Work was also done to improve Byron proxy documentation, as well as enhancing the Byron chain download using a good set of checkpoints.

The team has also been working on testing EBBs with CDDL tests, and have refactored the subscription worker so that it can track peer state and added error policies. This will allow it to classify errors and suspend a consumer or peer for some amount of time.

DEVOPS

This week the DevOps team successfully oversaw the first deployment of the new byron-proxy, cardano-node, and cardano-explorer code to a test cluster. They've also been working on emulating the old explorer API using the new explorer, to ensure complete equivalence between the two.

CARDANO DECENTRALIZATION

The team continued the implementation of the transaction generator this week, and hope to start producing results next week. Additionally, logging code in the node has been rewritten to allow structured logging and support system-level benchmarking.

The ongoing property testing continues to reap rewards, and has turned up several subtle bugs which are extreme edge cases and would have been almost impossible to find in a production environment. Instead, they are being fixed by the team before ever even making it to production.

GOGUEN

This week the Plutus team worked on adding support for multiple modes of execution to the Plutus Core implementation, written in Agda. They also spent time looking at the Playground server tests to improve their speed. In addition, they updated some functions and types in the ledger module of the mockchain from ada to lovelace, for clarity purposes. The Marlowe team have started work on updating the testnet to change instances of Meadow to Marlowe Playground.

The education team made updates to the chapter on state machines in the Plutus ebook to reflect recent code changes.

ANNOUNCEMENTS

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

August 16, 2019

Weekly Development Report

DAEDALUS

Cardano wallet

This week the team made a couple of additions to the upcoming Cardano 1.6 release: the ‘Help’ menu has been extended with a new ‘Safety Tips’ option which opens a related Support Portal article, and a small issue has been resolved where the old ‘GPU safe mode’ text was showing in the Daedalus window title bar while the ‘Blank screen fix’ setting was enabled.

The team has also started the implementation of the redesigned wallet creation wizard. The new design is better organized and provides more information about wallet creation, backup, and recovery processes, which should make even new users more comfortable using Daedalus.

In the scope of regular maintenance tasks, the team worked on improving the Storybook build setup. Build time has been significantly reduced which should eliminate CMS service deployment timeouts, which had caused issues with the QA team’s manual tests in the past.

Finally, the theme management optimizations have been finished. The themes are now much more scalable and the whole process of working with the themes has been properly documented, including the creation of video tutorials with a detailed theming walk-through for developers and contributors.

App platform

This week the team implemented configurable dependency management functionality in the application platform, including fetching from the remote repository, integration with the electron packaging process, and child process management during platform runtime. Work has also commenced on TCP port management of running services.

The design of the Cardano GraphQL codebase has been established, with initial work on the ledger model ongoing. The schema will cover all the features of Cardano, and since it's not coupled with a programming language, nor a particular transport protocol, it will be a suitable candidate for a Cardano API. The team is using a code generator to create TypeScript typedefs for internal use in the server implementation, but this and other outputs will be produced within the CI process for consumer code to perform static type checking.

BACKEND OPTIMIZATION

The team is now fully occupied with the support for the random derivation address scheme, which has required extensive redesign and code changes to enable the core engine to work with either random or sequential derivation. Some remaining work has also been wrapped up regarding filtering and sorting for the transaction API.

The team is also currently reviewing development processes to improve efficiency and make gains in both productivity and code quality. An updated process will be in effect soon.

NETWORKING

This week the team has been working on error classification architecture in the subscription worker, which will help to decide which errors are fatal to a particular connection, and which ones are fatal to the node itself. The team has also been improving testing of the multiplexing layer and progressing with documenting the design.

DEVOPS

This week the DevOps team updated Jörmungandr-nix to version 0.3.2 and created packages for all three main operating systems via Snappy, Chocolatey, and Homebrew. An explorer Python API has also been added as part of the Cardano 1.6 release to ensure the provision of the correct address summary endpoint.

CARDANO DECENTRALIZATION

This week the team started hooking up the tests for invalid chains in the Byron re-write code. As well as succeeding as expected, it's also important that the validation code fails as expected too. Otherwise, it could just be accepting lots of garbage input without complaint. Progress has also been made this week on the Shelley hard fork combinator, which allows the combination of the code of two consensus algorithms into a new one that does a hard fork between them, providing a nice modular design.

Additionally, thanks to the comprehensive property testing that has been underway, a team member found a very subtle bug that existing tests hadn't caught yet. It’s much cheaper to find and fix bugs during development than during QA or in production, and the bug in question made some transaction lookups return the wrong transaction, a problem which would have been difficult to reproduce and diagnose once in a production environment.

GOGUEN

Last week the Plutus team made updates to some contract types and also improved the testing outputs for contracts. They also replaced the game and crowdfunding contracts with new versions and worked on the mock wallet backend, a mockchain with an HTTP interface that simulates wallets interacting with the blockchain for testing purposes. The Marlowe team resolved a semantic merge issue with the Marlowe interpreter and fixed some minor bugs. The education team communicated with the students of the Plutus Udemy course to promote the Plutus ebook this week. They also continued work on new chapters within the ebook.

ANNOUNCEMENTS

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

August 9, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team continued with the integration of the V2 API, which is progressing well.

Since this new version of the API lacks support for ada redemption, the team has removed this feature from the application.

Additionally, all system dialogs have been updated so that they get rendered within the main Daedalus window, eliminating the possibility of window overlap.

In the scope of regular maintenance tasks, the team worked on theme management optimization as well as improving the positioning of external link and copy icons.

App Platform

This week the team made progress on the Daedalus app platform by packaging the single-process version of the smart contract backend for desktop targets using a continuous deployment process suitable for on-demand installation. Work has also commenced on the service dependency management features in the base application stack, using the available service as the first target.

The other area of focus this week has been on the new Cardano Explorer, with the team assigned to defining boundaries within the domain and developing an API service for the frontend application. A solution using GraphQL to provide a holistic queryable model of Cardano has been proofed and will be presented as part of the solution proposal early next week. Not only will this serve the immediate use case for the explorer, but will provide far greater utility for DApps, including the app platform.

BACKEND OPTIMIZATION

Half of the team was on holiday this week, so work progressed slower than usual. There was also some unexpected trouble involving a double upgrade, which included upgrading the integration layer for Jörmungandr to work with its latest version and adjusting the cardano-http-bridge to work with the most recent testnet deployment.

Meanwhile, the team has made significant progress in reimplementing the necessary primitives for managing legacy wallets using a random derivation address scheme. With these primitives, it will now be possible to implement higher-level functionality and eventually make random derivation wallets available in the new wallet backend.

NETWORKING

The networking team made good progress on the Byron proxy this week, and it can now sync from mainnet and serve blocks to the new Shelley nodes. The team has also started working on improving error handling for the networking layer, as well as enhancing tests in the network-mux library. Improvements to the documentation are also underway.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

This week the team worked on extending the framework to capture and route structured log items to backends. A collection of generic tracer transformers is also being implemented that will bridge observables from tracers to the switchboard, where they can be routed to backends as structured items.

In other work, more command-line options have been added as required by the node, and the newest version of cardano-shell has been integrated into cardano-ledger and cardano-node.

The team gave a demo this week as well, which demonstrated that the ChainDB can successfully store and validate blocks from mainnet. Hammering the ChainDB with tons of real blocks helped detect some simple bugs and uncovered some quick performance wins, even before entering QA. Catching and fixing those bugs early will make development much smoother later on.

GOGUEN

This week the Plutus team worked on type checking of input-output pairs and updated the build and type-check docs. They also improved code formatting in the Plutus Playground backend and added a new failure event to provide more flexibility for dealing with exceptions. A style tweak was made to make it easier to read Playground actions. Updates were also made to the data scripts to include the hash so that users can cross-reference the PendingTx and determine the associated output.

The Marlowe team continued their testing efforts within the Marlowe Playground.

The education team continued making minor improvement updates to the Plutus ebook and met to discuss a tracking mechanism for incorporating any feedback that is received from the community. They also discussed ways to further publicize the ebook.

ANNOUNCEMENTS

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

August 2, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team continued integrating the V2 API, which is required for compatibility with the new backend code for Cardano 2.x releases.

Work for the upcoming Cardano 1.6 release was also completed this week, including new UI themes and some smaller fixes for issues found during the testing and quality assurance phase of the release process.

The team also updated all outstanding pull requests which contain changes which will not be shipped with Cardano 1.6 so that they can be merged as soon as possible after the 1.6 release.

App Platform

This week the team worked on multiple features, including platform configuration, TLS certificate provisioning, and writing to a local directory. Work has also begun on implementing the smart contract backend as a platform service, which led to developing a single process mode of operation to better suit a full-stack application.

In other news, the platform UI has been rebooted with a TypeScript implementation of functional React components using the new hooks API for state management. Improvements have also been made to the continuous integration process to improve the granularity of builds and embed the job configuration in source code. Support for the Daedalus backend upgrade project is also ongoing.

BACKEND OPTIMIZATION

This week a new version of the wallet backend was released, with support for two different backend targets: cardano-http-bridge and Jörmungandr. Meanwhile, the team is continuing to work on making the V2 API more complete, as well as extending the engine to support the random address derivation scheme currently used by Daedalus in the Byron era. This will allow current wallets to be loaded and manipulated in the new wallet backend, facilitating migration from the old to the new format.

NETWORKING

This week the team has been working on syncing from mainnet, focusing on the Byron proxy and cardano-node. The team also created an application that can decide whether a given set of nodes reaches consensus, which will allow a small Shelley network to be run as part of continuous integration and have any problems detected early.

The team has also been working on extending debugging information for Shelley nodes, as well as a small refactoring effort for the code base.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

Most of the team has been focusing on testing this week. While there are already tests that simulate a network of core nodes that sync chains, download blocks, and exchange transactions, this has been mostly a 'perfect setup'. The tests are now being extended to simulate a more realistic network: nodes joining later, network partitions, introducing network delays, simulating a disk failure, adversary behavior, etc.

The team has also been hard at work preparing for syncing with mainnet: the new on-disk chain state (ChainDB) is now able to store the mainnet blocks.

GOGUEN

The main focus of the Plutus team this week has been modifying the evaluation rules to include type instantiation and changing the vesting example to use a wallet instead of a public key in the Playground. They also added a user space sealing mechanism, as well as ways to encode the ownership of contracts, and fixed some minor bugs.

The Marlowe team spent time ensuring that the Marlowe Playground name change has been consistently applied across the board, while the education team added some new chapters to the Plutus ebook to cover non-fungible tokens and Marlowe.

ANNOUNCEMENTS

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