Status Update

March 13, 2020

Status Updates (March, 2020) > March 13, 2020

WEEKLY DEVELOPMENT REPORT

Daedalus

Cardano Wallet

This week, the team successfully released Daedalus 2.3.0-ITN1. This introduces new versions of the cardano-wallet and Jörmungandr node, which should improve Daedalus connecting and syncing times.

In the scope of regular maintenance tasks, the team implemented test coverage for custom number, date, and time formats, and re-enabled theme selection on the Settings screen. Lastly, the team continued to work on updating the third-party packages in Daedalus.

Application Platform

The team added CORS configuration to Cardano GraphQL to enable greater control over API access, with the ability to provide a single or comma-separated array of origins. The automatically generated TypeScript definitions for the GraphQL schema is also now being published for consumption as a package, decoupling the need for a direct dependency on the running service for client-side type safety.

Cardano Explorer

The QA team completed the frontend design and application logic changes, to conform with QA testing results. A new staging continuous deployment process was established to aid with further development, establishing an improved standard for the team moving forward with other web projects.

ADRESTIA

Wallet

The team produced the first E2E integration scenarios of sending a transaction from a Byron wallet to another Byron wallet using a combination of cardano-wallet and cardano-node. This is a major milestone, and the team hopes to release it next week after a few more integration scenarios have been controlled.

The team is also investigating a few issues recently discovered - in particular, some odd behaviors noticed on Windows machine - and are close to being able to run automated nightly tests on a Windows environment, which should improve issue identification and resolution speeds.

NETWORKING

This week, the networking team calculated size limits, which protect multiplexer ingress queue, and refactored the code so all required parameters which have an influence on the bytes in-flight (for example, how many messages are pipelined) are set in a central location. The team also implemented timeouts for the handshake mini-protocol, and fixed some bugs which did not allow the cardano-db-sync client to connect to a node.

DEVOPS

The team has been working on Windows CI automation for the new Cardano node and packaging Daedalus with the new Haskell node and wallet.

CARDANO DECENTRALIZATION

This week, the team performed bug fixing, and put proper block header size and block body size functions in place (which replaced the naive spec functions). More work is yet to be done, however, and the team intends to adopt annotated serializes to avoid re-hashing.

The team also added a much-needed optimization for the VRF checks (storing ln (1-f) instead of computing it every time) and swapped out active stake for total stake in the reward calculation, as recommended by IOHK’s researchers. Relative stake is still represented elsewhere, however, such as in performance, etc.

Additionally, the team added a mechanism to halt outdated nodes. There is now a new global variable for a max major protocol version, after which blocks are deemed valid. They also added optional stake pool metadata and stake pool relays to the stake pool registration parameters, renamed the Shelley-ledger Haskell packages and modules, and worked on testing performance.

GOGUEN

This week, the team added a multi-agent effect for signing transactions to the emulator and removed the sign function from the walletAPI. They also added a chain index that keeps track of unspent outputs and the transactions that produced them, so that data values can be retrieved. In conjunction, a stateful chain follower protocol was added to the mock node, so that queries can be made for the most recent blocks only, and the entire blockchain does not need to be transmitted every time.

Last but not least, a runGuardedStep was added to the StateMachine module so that an additional predicate is used, which is checked before actually submitting a transaction.

Meanwhile, the Marlowe team worked on making block explanations more compact in Blockly. They also added a QuickCheck property for Marlowe static analysis and investigated the usage of LiquidHaskell for proving contracts properties.