February 21, 2020
Status Updates (February, 2020) > February 21, 2020
WEEKLY DEVELOPMENT REPORT
This week the team worked on preparing the next release of Daedalus for the Incentivized Testnet, Daedalus 2.1.0-ITN1, which includes better representation of pending delegation preferences, a new tooltip to identify experimental features, and improved display of delegation status while restoring a wallet. The team also implemented a few small copy changes and general UI improvements.
This week the team worked on the implementation of the new Cardano launcher, an orchestration library for full-node Node.js applications, using Daedalus as a test-bed. The initial focus is on logging output domains, but the eventual goal of the library is to lift application-agonistic behavior from Daedalus, making it accessible for other full-node applications, including the Application Platform itself.
The QA team completed a first pass over the application this week, and the development team has been working in tandem to resolve the issues that were discovered.
This week the team has been continuing to improve and integrate bug fixes to ensure the most stable release possible. Work has also continued on the new Haskell node integration, closing the gap on the missing API endpoints from the integrated wallet. It is now a matter of performing in-depth integration tests and analysis to ensure that the integration is indeed a full success.
Last week the networking team continued their refactoring of the mux layer, and the handshake protocol was improved to support the version negotiation parameters required for peer-to-peer release. This change introduces a handshake negotiation that announces a peer as initiator (or client) only.
A substantial refactoring of the Windows asynchronous network library was also completed this week, which removed almost all C wrappers, ensuring that everything is now in Haskell. Work also continued on the connection manager, and the team is more confident now that they’ve had the chance to test the new changes in a local branch of cardano-node.
This week the DevOps team has been preparing for the OBFT hard fork. The team has also been finalizing the haskell.nix transition to the latest version across all repositories and started testing the new 1.6 Cardano release. Work is also progressing on an Amazon Machine Imagine (AMI) builder that can be used to simulate 10K Daedalus connections, to help identify any performance syncing issues at scale before the new Daedalus and wallet backend are ready.
After a lot of work, the team got the generation of update proposals working this week. Now that the generators are producing chains that span multiple epochs, the team is encountering a new layer of predicate failures that need to be resolved, since epoch boundaries place much higher demands on the generators to produce valid chain data. These failures are most likely the result of the generators needing a few tweaks. There is an outside chance that testing will reveal bugs in the specification, although the team considers this unlikely.
The team has finished up the pull request that introduced transaction metadata to the Shelley ledger, which included several discussions about how it will integrate with Plutus in the future.
Elsewhere, a new check to ensure that the block number in the block body is always increased by precisely one was added to the formal specification and executable model. Prior to that, the calculations were using the previous header hash and increasing slots to achieve the same, but it became apparent that this needs to be explicit for the consensus layer.
The team has also made a lot of progress towards being able to guarantee that the Shelley CDDL (wire format) is correct (i.e. that what the Ruby tool generates from our CDDL file can be deserialized by the Haskell code). There is still a good bit of work to do, however. So far, most of the inconsistencies stem from using a mock cryptocurrency for testing purposes. The team has also been removing the canonicity constraints that were imposed by cardano-base.
This week the team added a slot number field to the chain state so that it’s easier to query the current slot. They also updated the oracle implementation to verify the cryptographic signatures of messages. Additionally, they continued work on spending policies for currencies and started a draft of a comprehensive glossary of Plutus concepts.
The Marlowe team started work on the display of new warnings in the Marlowe Playground to warn users about negative payments and negative deposits, as well as the use of bindings that have not been initialized. In addition, they investigated the possibility of having an interactive tutorial in the Marlowe Playground.