Status Updates

September, 2019

Jump to

September 27, 2019

WEEKLY DEVELOPMENT REPORT

DAEDALUS

Cardano Wallet

This week the team met up and had a workshop together in Croatia. There were lots of productive discussions and presentations, which were aimed at improving the team’s development process and ultimately making Daedalus a better product. The most important outcome of this workshop was the successful implementation of a brand new feature: ‘Newsfeed’. This feature introduces a new communication channel through which Daedalus users will get important Daedalus and Cardano-related updates. The new feature will be included in the upcoming Cardano 1.7.0 release.

App Platform

This week the team developed PostgreSQL views in coordination with the Haskell team to improve the interface of the Cardano Postgres database. This unlocks the primary data source for Cardano GraphQL, which is being accessed via Hasura to handle runtime GraphQL to PostgreSQL query compilation and results mapping. Work was also done this week on a TypeScript HTTP Cardano node client, with the goal of developing a chain projector service for the platform. The design considers translation of the chain data a separate module for flexibility and ease of implementation, with chain subscription and rollbacks handled by a common component. Finally, a service to fetch and cache off-chain stake pool metadata was designed and mostly implemented within Cardano GraphQL. API consumers will get the benefit of a merged data source over a single query.

Cardano Explorer

This week the team continued working on the implementation of the new Cardano Explorer UI. The ‘Home’ page design implementation has been completed, and the team has continued working on the rest of the pages. In addition to that, the feature specification was refined and the beginnings of a Cucumber test suite drawn up.

WALLET BACKEND

Wallet After the restructuring of database schema during the previous weeks, the team has now focused on adjusting the internal implementation of the database layer so that multiple wallet checkpoints are stored as the chain is followed. Work has now begun on the final step: allowing arbitrary rollbacks to previous checkpoints.  On the side, work continues to improve testing, following the Jörmungandr releases closely and integrating them as they are published. Work is being done to refactor several parts of the code to improve reliability and simplify the manipulation of some data-structures.

NETWORKING

The networking team has been focused on documenting their designs this week.  Work to finish the implementation of the Byron Proxy is also progressing, with the team spending time finding and making various performance optimizations. Performance still isn’t quite up to scratch, however, and the team is working with QA on testing to find more places to improve.  Finally, the CDDL tests are being improved with a CBOR codec specification for mini-protocols.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

The new transaction generator now integrates with the new explorer, which has helped the team to analyze the correctness of produced blocks. Phase two of transaction generation has also been completed, after an initial merge into the master branch of cardano-node. The code is now refactored. The team has obtained its first results, which will now drive the implementation of the analytical pipeline and the preparation of a distributed benchmark.

GOGUEN

The Plutus team made improvements to the Plutus tutorial this week, as well as improving the handling of logging and errors within contracts. Work also started on an effort to restrict data scripts to contain only data specified by a simple fixed type. The main advantage of this is that the contents of the outgoing data scripts from a transaction could be embedded directly in the PendingTx structure, and provide a clean and straightforward solution to the problem of validating the outgoing data scripts. The team also worked on removing the eighty character line in the Plutus Playground editor as well as its print marker.  The Marlowe team finished the remaining updates to the new versions of the tutorial, including a Blockly tutorial, and also made preparations for the new version launch next week in Sofia. In conjunction with the education team, they created new recordings and content for the updated version of the Udemy course.  Finally, the new edition of the Plutus ebook is being prepared and new versions will be uploaded to the publishing portals next week. 

September 20, 2019

WEEKLY DEVELOPMENT REPORT

DAEDALUS

Cardano Wallet

This week the team reviewed and tested most of the integrated V2 API endpoints which will enable the transition to Shelley features. The team also implemented a 'Wallet recovery phrase verification' feature which will help users to keep their wallet recovery phrases safe. The final pieces of the Daedalus Jörmungandr development setup are complete, with the Nix workflow now including the interactive command-line interface for secret generation. Node dependencies have also been modularized to ensure a stable and dynamic development environment while the team works in parallel to deliver both the upcoming Haskell Byron backend upgrade and the Jörmungandr-based testnet.

App Platform

This week the team worked with the Haskell wallet team to create an address introspection utility for JavaScript applications. Daedalus and other applications such as the new Cardano Explorer will be able to use this utility to perform client-side logical operations before sending network requests. The tool has been written into a low-level library that has minimal dependencies and will be a core part of the growing TypeScript offering from the team.

Cardano Explorer

This week the team finished the design work for the Cardano Explorer Shelley features. Elsewhere, the implementation of the new Cardano Explorer UI is progressing well. The 'Home' page design implementation is currently in the final review and testing phase, and the team is starting work on the rest of the pages. The Cardano GraphQL project now supports different node implementations, with Jörmungandr to be the first implementation outside of the requirements for the new Cardano Explorer. Work was also started on a small chain projection service to write block data to a Postgres database using the chain-libs derived package js-chain-libs. It will serve as a complementary and alternative option for the Explorer data sources.

WALLET BACKEND

Wallet This week the team revised the database layout to better support wallet checkpoints, which will be essential for supporting rollback (which may occur arbitrarily often in a decentralized context). The team reviewed the internal structure of the database to enable the storing of multiple checkpoints and the ability to navigate through them efficiently. The team is also wrapping up testing on the new endpoint (and associated CLI command) regarding the submission of externally-signed transactions. Meanwhile, as part of a new agile process, the team is going through a recovery phase focused on improving the quality of the existing source code and its surrounding documentation. The team also spent time migrating its continuous integration environment from one service to another for performance reasons, and in doing so made several improvements and fixes to integration test scenarios, making them more reliable and quicker to execute. Work was also done to polish some existing areas ahead of the next release. This release doesn't contain many visible changes for end-users but extends the core Haskell libraries the wallet is built upon with essential building blocks. In particular, it provides all the necessary primitives to create wallets compatible with the legacy address scheme currently in production.

NETWORKING

The team has made progress this week on networking support for local clients such as wallets and explorers on Windows operating systems. The team also consolidated and specialized the networking interface, which simplifies work for other teams when developing their clients and nodes. More low-level traces were added this week too, and the team is making progress with the chain sync pipelined client, which is expected to improve the performance of syncing the chain from upstream nodes. Finally, work continues on writing and reviewing documentation.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

This week the team worked on the high-speed transaction submitter tool. There was an issue with forming correct transactions using the tool, so the team has also unintentionally tested the performance of the node in rejecting transactions, which exceeded expectations. Eventually, however, the team successfully achieved the goal of being able to generate transactions substantially faster - where previously this would have taken hours, it now only takes minutes. In other work, the interaction of the launcher with Daedalus and the update mechanism are now extensively modeled and tested in QuickCheck state-machine tests.

GOGUEN

This week the Plutus team updated the vesting contract and also refactored the ledger validation code. They also worked on the development docker image. The Marlowe team continued work on the new tutorial and added symbolic execution functionality to the Marlowe Playground. In conjunction with the education team, they started to update the recordings and content for the new version of the Udemy course. The new auction chapter for the Plutus ebook was reviewed and finalized this week too. Updates were also made to the extended UTXO chapter. A new edition of the book is being prepared, and the new version will be uploaded to the publishing portals shortly.

September 13, 2019

WEEKLY DEVELOPMENT REPORT

DAEDALUS

Wallet

This week the team continued working on the V2 API integration, which will enable the transition to Shelley features. There are a few V2 API endpoints that are still not ready to be integrated, but all of the available endpoints were integrated this week and the code is in the final review and testing phase. The team has also finished implementing modifications to the automated test suite so that it can run against the V2 API.

In the scope of regular maintenance tasks, the team continued working on reorganizing UI components in Storybook to better match the structure of the Daedalus UI.

App Platform

The Shelley models were developed in Cardano GraphQL this week, and are currently returning mocked responses for initial feedback and testing. Next week the team will be working on specific implementations to connect the API with the incentivized testnet node, forming the primary interface for the application platform, Daedalus, and the new Cardano Explorer. The design allows for local or remote datastores, leveraging GraphQL query delegation and remote schema to resolve queries from a common interface, served by the main Electron process or a standard NodeJS webserver.

The team also assisted with the Daedalus incentivized testnet design and development set up this week, swapping in Jörmungandr as the backing node for the V2 integration work, and refining the existing proposal for any Cardano network to take advantage of being developed for the mainnet fork. Additionally, the smart contract backend feature of loading contracts on startup was completed and is now ready for integration with the extended UTXO node client which the Plutus team are working on.

Cardano Explorer

This week the team continued working on the implementation of the new Cardano Explorer UI. The work on the ‘Home’ page design implementation is progressing well and should be completed by the end of the next week. The team is also finishing work on design preparation for the Cardano Explorer Shelley features. Views were specified for implementation in the Postgres database being built by the backend team, based on the model defined in Cardano GraphQL. This will improve the query interface for consumers and enables the use of Hasura with a simple configuration using a metadata table in the database.

WALLET BACKEND

Wallet

This week the team worked on revising the database layout to better accommodate wallet checkpoints. Checkpoints are essential for supporting rollback capability, which may occur arbitrarily often in a decentralized context. The internal database structure has been reviewed so that it can support storing multiple checkpoints and navigating through them efficiently. The team is also wrapping up testing on the new endpoint (and associated command on the command-line interface) for the submission of externally signed transactions. Meanwhile, as part of a new agile process, the team is going through a recovery phase focused on improving the quality of the existing source code and its surrounding documentation.

NETWORKING

The team is making progress with Windows support of named pipes, which is an important requirement for local clients on Windows such as wallets and explorers. A bug in the block fetch client was also fixed this week, where counting requests were off by one. Finally, the team has been making progress with their design document.

DEVOPS

There is no update this week.

CARDANO DECENTRALIZATION

Benchmarking of the new node started this week, although due to space leaks in upstream code this is only valid for a short running time. The team is working on fixing this issue and hope to have it resolved next week.

GOGUEN

This week the Plutus team updated the frontend to support new lattice classes for interval values and also started working on IOTS changes as requested by the application platform team. They also made some small refactoring changes and performance improvements to the Plutus Playground to increase responsiveness.

The Marlowe team worked on a new tutorial and changes to the semantics for version 3.0 and is also working with the education team on updating the Udemy course. Both Marlowe and Plutus teams are also busy preparing for some upcoming hackathons.

A new auction chapter has been written for the Plutus ebook and is currently in review. A new version of the ebook will be uploaded to various platforms shortly to include this new chapter.

Announcements

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

September 6, 2019

Weekly Development Report

DAEDALUS

Wallet

This week the team has focused on integration of the V2 API, which will enable the transition to Shelley features. The separation of legacy and new-schema wallet UI and data handling has been finished, and API request error handling has also been updated to support new V2 API error outputs. Work has also started on modifying the automated test suite so that it can run against the V2 API.

Elsewhere, the new internet connection status detection feature has been implemented and is in the final review and testing stage.

In the scope of regular maintenance tasks, the team is working on reorganizing UI components in Storybook to better match the structure of the Daedalus UI.

App Platform

This week the team set up Cardano GraphQL as a development dependency in the Cardano Explorer App repository, enabling frontend development to commence in parallel. A Docker build job was also added to the Cardano GraphQL continuous integration pipeline, and a dev start script written to ensure parity with the stable develop branch and to generate TypeScript definition from the exposed server on startup.

Work began on support for more expressive queries this week, which will allow the use of multiple logical operators, and a GraphQL to PostgreSQL compiler has been introduced to handle the resulting added complexity. With this new approach a more precise database query is possible, with only exact data being returned to the API server and natural handling of the operators. Query validation has also been implemented which enforces pagination for large result sets, and a depth limitation added to reduce the attack surface of tree-like models.

Finally, a feature was developed for the smart contract backend which will transpile the typed runtime interface from a Plutus contract running as an HTTP service. This feature addresses a current process limitation that relies on pre-compiled bundles and will be useful in other contexts as well. While working on this new feature, the team identified a simplification that can be made to the loading process, and they will be working on it next week.

Cardano Explorer

This week the Daedalus team began work on creating a new Cardano Explorer! After an extensive assessment of the existing Cardano Explorer functionality, website, and code base, it was decided that a new and improved version should be created so that users can more easily browse the history of the Cardano blockchain.

The team is currently working on the ‘Home’ page, which is the most complex of the new designs. They expect to be done with work on it next week.

Backend Optimization

There is no update this week.

Networking

The team has made progress on a number of items this week, including a document that formally describes the design decisions that were made while developing the network stack for the Shelley era, a high-throughput transaction submission engine for benchmarking purposes, and a named socket API for Windows.

Work has also progressed on the chain-sync client, with pull requests prepared which will implement pipelining. Once pipelining is in place, the Shelley node will be able to make optimal use of network availability, further improving node syncing times.

Finally, the team has been profiling the Shelley node to identify key usage metrics, as well as testing various aspects of the Byron-Shelley proxy.

Devops

There is no update this week.

Cardano Decentralization

This week the team worked on developing the transaction generator, which is now able to send transactions and will be used for testing purposes. Work is now underway to extend the transaction generator so that it can send transactions for a defined time at a fixed transactions per second (TPS) rate.

Meanwhile, in cardano-node, more tracer transformers have been integrated to support forwarding logs to the logging framework and stop logging directly to the console. Traced items can be annotated with severity and privacy annotations in a declarative way.

Goguen

This week the Plutus team worked on performance enhancements for the abbreviate functionality, as well as some minor front end changes. Changes were also made to the transaction fees to ensure they work correctly for the contract APIs. Members of the team have also been working on papers that will be presented at a conference.

Good progress was made by the Marlowe team on updates to the tutorial for version 3.0 of Marlowe this week.

The education team were busy working on new chapters for the Plutus ebook, as well as making editorial edits to the Plutus Tx chapter. They also added in a Contributing Writers section to acknowledge contributions from other individuals who wrote chapters in the book.

Announcements

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