Status Updates
January, 2020
January 31, 2020
WEEKLY DEVELOPMENT REPORT
Daedalus
Wallet
This week the team implemented three new features for the Incentivized Testnet version of Daedalus. First, stake pool ranking for ada holders looking to delegate. The ranking is based on desirability parameters, including stake pool profit margin, operational costs, performance, and rewards per epoch. Second, a stake pool saturation meter, which indicates how close a given stake pool is to being saturated (after which point it will provide diminishing returns). Finally, an option for users to resynchronize their wallet with the blockchain has been added to the wallet settings screen. For users who have been experiencing problems, such as the known zero-balance issue, this resynchronization option should fix those problems without the need to delete and restore a wallet.
In the scope of regular maintenance tasks, the team continued working on adding more automated tests for Shelley features.
App Platform
There is no update this week since the team was focused on helping out with Daedalus and Cardano explorer development.
Cardano Explorer
Work was done this week to separate application navigation from router implementation, which allows for better test cases and improvements in maintainability for the future. Decoupling these aspects of a web application makes it easier to reason about the path a user takes, so that ongoing development is faster and of better quality. The team also established full end-to-end integration testing this week, which has been used to run scenarios from the outside in, testing the UI as part of every codebase change.
Wallet backend
This week the team added support for new stake pool metrics on the Incentivized Testnet: desirability and saturation. These metrics will help ada holders decide which stake pools to delegate to, thereby supporting the decentralization of the network. On the side, the team has also been resolving some database issues and migrations from previous versions.
The team also reached a significant milestone this week: connecting the re-written Haskell nodes with the wallet backend and restoring mainnet wallets using the same API as on the Incentivized Testnet. Work has already begun on the next step of creating a launcher for Daedalus — once complete, it will mark the end of the old Cardano SL era and the beginning of the new Haskell nodes era!
Networking
This week the networking team has continued work on the connection manager: a component that sits between a server and the peer-to-peer governor to manage connections. The team has also been working on lazy mux, simplifying how it manages and controls threads. Finally, the team has been refactoring the NTP client and prepared a pull request to include a socket interface, a common API for Berkeley sockets and Windows named pipes.
DevOps
This week the team has been working on performance improvements for the upcoming 1.4.0 node release. Next week the team plans to do a full end-to-end test of a cluster upgrade from the legacy Cardano codebase to the new Cardano node.
In terms of the explorer, the team has improved the docker image so runit processes can be stopped and started, as well as adding a transaction endpoint into the docker image that can be used to send raw transactions to the network.
Cardano Decentralization
This week the team worked on more generators for testing purposes, making improvements to operational certificate generation, amongst others. They are now able to generate valid traces with operational certificates, provided the trace itself is not too long.
The team also uncovered a few small but important items that were missing from the executable specification, mostly to do with pointer addresses. These have now been fixed, along with a few issues that were discovered as a result of the work with the Isabelle automated theorem prover.
Goguen
This week the team added a Ledger.Constraints
module for contracts, which resulted in changes to both the on-chain code and off-chain code. They also made changes to the rules for currency forging, by adding a new field to Tx, which contains the monetary policies that will be run against the transaction. For every currency forged, the corresponding monetary policy must appear in the transaction.
In addition, they researched how to increase efficiencies with error handling in Plutus Core, and a reference was added in the Readme file to link to the rendered ETUXO paper.
The Marlowe team investigated the optimization of symbolic maps this week. They wanted to establish whether there is a means of fixing the length of the lists that represent maps in symbolic execution, so that it is not necessary to use the symbolic versions of tail and head.
January 24, 2020
WEEKLY DEVELOPMENT REPORT
Daedalus
Wallet
This week the team improved the instructions for users on the wallet ‘Settings’ screen and during the ‘Delete Wallet’ dialog. The process of validating a paper wallet recovery phrase was also optimized, as well as custom scrollbars being added to the UI. Elsewhere, the work on transaction date filtering on the ‘Transactions’ screen is in the final stage of QA and review.
In the scope of regular maintenance tasks, the team improved the display of the switch, radio-button, and checkbox components, and continued working on adding more automated tests for Shelley features.
App Platform
There is no update this week since the team was helping out with development work for Daedalus and the Cardano Explorer.
Cardano Explorer
This week the team worked on polishing a few small UI issues and preparing for the final QA and testing phase of the upcoming Cardano Explorer Byron release. Work has also started on modeling the Shelley data structure in Cardano GraphQL, which will enable the team to work with mocked GraphQL results and continue with the Explorer development.
Wallet backend
The team spent time this week working on improved statistics and ranking for stake pools, as well as performing an internal audit of the wallet API. The results of the audit were positive, and the areas highlighted for improvement were already covered by backlog work items that the team was planning on doing anyway! The team also focused on improving stability and resilience this week to better support future releases of Daedalus.
Networking
This week the networking team started working on a connection manager: a component to connect peer-to-peer governors (which drive gossiping) with a server that accepts connections. The team also spotted and fixed a performance issue in the outgoing part of the mux-network.
Thanks to this week’s work, the network now uses fixed-size service data units (SDUs) and can group multiple messages in a single SDU. The team has also started implementing a standard API for Berkeley sockets and Windows named pipes, after implementing interruptible Windows I/O operations.
DevOps
This week the team has been working on performance improvements for the upcoming 1.4.0 node release. Next week the team plans to do a full end-to-end test of a cluster upgrade from the legacy Cardano codebase to the new Cardano node.
In terms of the explorer, the team has improved the docker image so runit processes can be stopped and started, as well as adding a transaction endpoint into the docker image that can be used to send raw transactions to the network.
Cardano Decentralization
This week the team finished work on a multi-signature generator and associated tests, allowing for rapid and reliable testing of all kinds of multi-signature transactions and scenarios. The team also addressed a lot of small issues that were discovered while formalizing and proving the properties of the ledger in Isabelle, which is an automated theorem prover. Finally, Shelley ledger states are now defined in the abstract specification as well as implemented and used in the executable specification.
Goguen
This week the team researched how to implement spending policies for currencies where conditions are imposed when spending that currency. They also studied how smart contracts should interact with rollbacks.
The team added an emulator trace within the Plutus Playground to improve the simulation feedback. They also started to investigate which interfaces can be used from the wallet backend integration, as well as making improvements to package documentation.
The Marlowe team reviewed the multicurrency support content within the Marlowe tutorial. They also worked on how to generate the user interface for Marlowe contracts.
January 17, 2020
WEEKLY DEVELOPMENT REPORT
Daedalus
Wallet
This week the team finished work on the redesigned wallet restoration feature, which now supports hardware wallet restoration. The newsfeed feature was also improved by implementing single-language newsfeed item support and localized date presentation. In other work, the team is almost finished with the implementation of a transaction date filtering option on the ‘Transactions’ screen.
In the scope of regular maintenance tasks, the team implemented a smart link component that simplifies the handling of external links. Additionally, many new automated tests have been created to cover new Shelley features.
Wallet backend
Work got back to its usual pace this week, with the majority of the team back from their leave. They spent some time wrapping up existing work, as well as finalizing the requirements and analysis for the next steps in integrating the wallet backend with the Haskell nodes. Most of the outstanding issues from the Incentivized Testnet launch have also been fixed, and the team has made improvements to catch bugs earlier in the process, as well as finding better ways to diagnose software issues.
Networking
This week the networking team spent some time profiling the networking code, resulting in a 10% speed improvement in the code that sends messages in the network-mux library. The team also prepared a pull request to add Windows Socket support using I/O completion ports.
DevOps
This week the DevOps team supported the 1.3 release for the Cardano node on both testnet and mainnet. The team also worked to prepare for the OBFT hard fork on mainnet, which will be happening soon. Users should ensure that they’re using a recent version of Daedalus (0.14 or later).
Cardano Decentralization
This week the team finished work on improving the generation of multi-signature transactions, including better transaction generation and the creation of delegation certificates with multi-signature support. They are also almost done with work on chain trace generation.
Goguen
The main focus for the team this week has been on making improvements within contracts, including working on a better interface for UnbalancedTx, as well as re-organizing elements within plutus-contract itself.
In addition, several front-end changes were made to make documentation links more prominent and to improve the scrolling experience, so that scrolling to a particular line also takes focus. Some obsolete imports were also removed, and the rendering of the Balances chart was fixed so that it is displayed correctly when switching tabs.
The Marlowe team worked on a stack overflow issue in the simulator of the Marlowe Playground. They also worked on a transaction wrapper for semantics in version 3.0.
January 10, 2020
WEEKLY DEVELOPMENT REPORT
Daedalus
Wallet
After a well-deserved break, the Daedalus team was back this week implementing a redesigned wallet restoration feature that now supports hardware wallet restoration.
Wallet backend
Most of the team was on leave this week, but the priority has been on finalizing the API and testing the new hardware wallet restoration process. The team also worked closely with Daedalus engineers to ensure that integration testing was as thorough as possible.
The team also took advantage of the quiet period at the start of the year to make some extensive changes to the wallet implementation. Work has been underway to restructure logging processes to provide more control and granularity, which will result in improved debugging if and when problems occur.
Networking
There are no updates from the networking team this week since they have all been enjoying some leave. Normal operations will resume again next week.
DevOps
There are no updates from the team this week since they have all been enjoying some leave. Normal operations will resume again next week.
Cardano Decentralization
There are no updates from the team this week since they have all been enjoying some leave. Normal operations will resume again next week.
Goguen
Over the past few weeks, the Plutus team implemented a much-improved error formatting solution, in particular for evaluation errors. They also started to investigate a compilation error that occurred in the Plutus Playground when trying to implement a state machine. Work is ongoing on this issue.
Elsewhere, some simplifications were made to the game demo, and the team has also started to investigate whether it is efficient to merge the payments function and the check function in the state machine library.