Status Update

October 11, 2019

Status Updates (October, 2019) > October 11, 2019

WEEKLY DEVELOPMENT REPORT

Daedalus

Cardano wallet

This week the team finished the integration of the available V2 API endpoints, which will enable the support of Shelley features. Work is continuing on modifications to the automated end-to-end tests so that they can be used to check that the API integration is working as intended. Work also started on new desktop installers for the upcoming incentivized testnet version of Daedalus.

In the scope of regular maintenance tasks, the team finished working on reorganizing Storybook stories and improving the automated testing suite to better match the Daedalus UI structure.

App Platform

The PostgreSQL views were further optimized this week based on some performance issues which were discovered during testing. The improved views have been submitted to the upstream repository Cardano Explorer, making the interfaces available for all database users. Hasura configuration is also incorporated into the code repository now, completing the hands-off setup of the stack.

The first pre-production version of Cardano GraphQL was also released this week for the Explorer team to use as the target for the Byron mainnet.

Work on Jörmungandr integration for the incentivized testnet version continued, establishing a Docker image and inclusion in the project’s stack.

Finally, testing infrastructure has been set up to stress-test Cardano GraphQL against a fully-synced Byron mainnet data source, where the scaling strategies for hosted deployments will be determined. A scope was also determined with the Plutus team for the chain publishing node client.

Cardano Explorer

This week the team finished the implementation of the address details and block details pages and started working on the transaction details and stake pools list pages. The team has also implemented theming support, which is an important step as there will be multiple Cardano Explorer instances (one for each network), and each will have a different theme to distinguish it from the others.

Wallet backend

The team is now working on three fronts simultaneously: Byron wallet support, stake pool tracking, and chain following in a decentralized network where forks may happen arbitrarily. The latter two are finishing up and are getting most of the team’s attention in the form of testing.

The team has also reworked the networking layer to reflect that nodes may switch to different chains as they see fit. The change was handled in such a way that the logic can be implemented for Jörmungandr while leaving the overall interface sufficiently flexible to allow implementation using a different networking interface, such as the Haskell cardano-node.

Finally, the team is now also collecting data about stake pools and returning a list of existing stake pools with the number of blocks they are producing. In the next iteration, a performance metric will be introduced to allow clients to list and order stake pools according to how well they perform.

Networking

This week the team spent time planning work for the upcoming peer-to-peer component and has already started implementing the first aspect, which is graph simulation. Soon the team will be able to develop and asses local policies for nodes that will govern which nodes should and shouldn’t be connected to. This is the first time such policies have been created for a globally-operating proof-of-stake system, and the team is being especially careful in the evaluation process of the policies.

In other news, after the pipelining of the chain-sync protocol was included, memory consumption of the node was reduced, and block-fetch protocol constants updated, the team achieved a 6.97 Mb/s download synchronization speed for the Shelley node. As a result, the team was able to synchronize the current blockchain in just fifty minutes.

Finally, the team is finishing off work on an implementation of a pure STM monad (software transaction memory), which includes the last missing orElse operator, together with a test that translates the formal specification of STM. The team was able to validate their implementation with GHC's implementation and haven't found a single bug across millions of iterations of QuickCheck property tests (that is, each property test was run over millions of randomly generated STM transactions).

DevOps

This week the DevOps team updated the Snappy and Nix scripts for the 0.5.6 networked testnet release, as well as creating a new Chocolatey package for 0.5.6. A new node cluster has been created so that the team can do some performance testing of the testnet network, and a new tool has been added to the jormungandr-nix repository to analyze block production over both individual epochs and the entire chain.

Cardano Decentralization

Using the infrastructure developed to detect space leaks, the team was able to fix all space leaks in the node this week, resulting in lower and more predictable memory usage.

Goguen

This week the Plutus team added a new UtxoAt query to allow contracts to query the UTXO set through the node client. This changes the way the WalletAPI is implemented in the emulator as wallets now keep track of the entire UTXO set, not just the subset of unspent outputs at the addresses in which they are interested.

The team also removed the Sealed type and added a generic Data type for use in contracts. In addition, they simplified how script outputs are represented to make them more consistent with how they are handled in PlutusTx. Changes were also made to make the writing of parsers easier.

The Marlowe team updated the Marlowe tutorial to include a new section about static analysis. They are also preparing for the new version of the Udemy course for publication soon.