Status Updates

December, 2019

Jump to

December 20, 2019

WEEKLY DEVELOPMENT REPORT

Daedalus

Wallet

This week the team has finalized the new Daedalus Rewards wallet for the Incentivized Testnet. Wallet delegation and undelegation features have been finished, and the remaining stake pool metadata implemented for the stake pool details window. The wallet creation process has also been improved and modified to accommodate some specifics of the Incentivized Testnet.

App Platform

There is no update this week since the team was focused on supporting the release of the new Daedalus rewards wallet for the Incentivized Testnet.

Wallet backend

The team has been working hard this week making improvements to support the Incentivized Testnet. They’ve added the finishing touches to the wallet backend, including the introduction of off-chain metadata to the stake pools list. This enables wallet clients like Daedalus to provide a high-quality user experience where available stake pools can be browsed, compared, and eventually chosen based on many criteria. The team is also preparing to support hardware wallets by offering ‘coin selection as a service’ in the API. Finally, the team has added new benchmarks to measure HTTP request latency on various wallets so that they can identify bottlenecks in the API and, if necessary, spend time on optimizations later.

Networking

The team has continued working on peer discovery this week, and are preparing for an internal demo of their progress on the peer-to-peer functionality. Exploratory work has been underway, with the goal of ensuring that for any reasonably-sized network, all nodes will be reachable within four to five connections. Finally, some optimizations have been made to make more efficient use of resources and improve performance.

DevOps

This week the DevOps team started the hard fork process on the Byron testnet, which will be completed by the start of the next epoch. They also worked round the clock to help support the launch of the Incentivized Testnet, as well as providing support to community-run stake pools that were getting set up.

Cardano Decentralization

This week the team started working on the CBOR deserialization to match the new serialization and expect to finish both next week. They also completely removed Hedgehog from the codebase, following the decision to use QuickCheck for property testing. Progress was also made this week on the automatic generation of certificates for property-based testing, although some bugs took a while to figure out, and work remains to fix these. The team also completed work on generators for proposal updates, as well as wiring in some more properties with the new generators.

Goguen

This week the Plutus team has been restructuring the emulator to use effects, resulting in things being greatly simplified, helping to resolve the fact that plutus-contract library has a separate notion of traces. They also looked at improving the speed of state machine tests, which were running more slowly than the team would like. They also completed work on the extended UTXO specification and implemented integration tests for the backend in the Plutus Playground. The Marlowe team fixed the UselessTransaction check, as the Marlowe semantics was only checking whether a contract had been modified, to determine whether or not a transaction was useless. They added a new condition to check that accounts have to be also empty, if for some reason a contract consists only of Close, but has accounts with money on them. They also worked on the implementation of multi-currency support for Marlowe, fixed some bugs in the Marlowe Playground, and started to investigate support for tokenized Marlowe contract roles.

December 13, 2019

WEEKLY DEVELOPMENT REPORT

Daedalus

Wallet

This week the team has been entirely focused on finalizing the new Daedalus rewards wallet for the Incentivized Testnet, which will hopefully be released soon. The integration of API endpoints for listing, joining, and leaving stake pools was finished, and all UI changes required to support stake delegation are now complete.

App Platform

There is no update this week since the team was focused on supporting the release of the new Daedalus rewards wallet for the Incentivized Testnet.

Cardano Explorer

This week the team has been working on preparing deployments, resolving edge-case integration issues, and performing full-scale performance auditing of the web application.

Wallet backend

The wallet backend team has been working around the clock this week to get everything ready for rewards on the Incentivized Testnet. In addition to the wallet available balance and total balance, a new wallet reward balance is now in place, which will automatically track the rewards earned when delegating stake to a productive stake pool.

A new reward-credentials command has also been added to the command-line interface to enable pool operators to use cardano-wallet (and by extension Daedalus) to track their own rewards and set up their stake pool using their existing wallet. Step-by-step guides are now available on the Cardano Foundation stake pool registry wiki.

Networking

This week the team has continued to work on peer discovery in the network and the features required to support it, including testing some of the newly-implemented peer discovery functionality over DNS on the current relays.

DevOps

The DevOps team has been working hard this week to support the work of the Daedalus team in preparing the release of the new Daedalus rewards wallet for the Incentivized Testnet.

Cardano Decentralization

As of this week, the team is close to having gone through all the serialization decisions up to an entire block. Transactions and block header bodies are done, all that’s left is packaging up the header body with the block body and transaction witnesses. Note that for all the serialization changes that have been made, corresponding deserialization changes also need to be made. The team is still finishing up the annotated serialization changes for the Byron codebase, and once that’s done they will be doing the same for Shelley.

The team also made two small changes to the specifications this week. For the purposes of integration with consensus, some checks need to be separated from the header transition. In particular, for transactions sitting in the mempool, there needs to be a way to move time along to see if transactions are still valid in the absence of a block header for those transactions (in the case where the node is trying to mint a new block from the mempool). The second change to the specification was suggested by the Ouroboros Praos authors, namely that certain proofs that they wanted to do would be easier if it was possible to include certain block header hashes into the epoch nonces. Both these changes have been made to the formal specification and the execution model.

On the testing side, writing the generators for all the certificates in Shelley is making progress, and the work could potentially be completed by next week. The goal for the next two weeks is to have all the generators needed to make transactions.

Finally, the team improved the validation mode of the database that stores the immutable part of the chain (ImmutableDB) so that it can detect any random bitflip in a block. CRCs are used to speed up this process, falling back to checking the signatures of blocks when the index file containing the CRCs is missing or corrupt.

Goguen

This week the Plutus team added a transaction validity rule for validity intervals to the EUTXO model document. They also added a timeout to 'handleBlockchainEvents' and merged the plutus-core-interpreter into language-plutus-core.

In addition, they worked on how to determine memory costs for scripts so that they could begin to predict memory requirements and investigated using MAST for Plutus Core.

The Marlowe team continued to fix some minor issues that were appearing in the Marlowe Playground.

December 6, 2019

WEEKLY DEVELOPMENT REPORT

Daedalus

Wallet

This week the team continued working on preparations for the delivery of the Daedalus rewards wallet for the Incentivized Testnet. The team integrated API endpoints for listing, joining, and leaving stake pools, along with implementing UI changes to the delegation center and the delegation setup wizard. The network splash screen has also been updated with information about the Incentivized Testnet network, and there will be a new Daedalus icon that will be used for this version of the wallet client.

The team also implemented a number of other changes: external link icons were added to application menu items that open web content, the display of ada amounts in the wallet sidebar was improved, error messages on the ‘Send’ screen were improved, new mainnet and testnet Daedalus icons were implemented, and a new ‘Receive’ screen was designed. The team also updated the wording on the ‘Loading’ screen and ‘Daedalus Diagnostic’ dialog, as well as extending the list of stories in Storybook and fixing some minor translation issues.

Finally, in the scope of regular maintenance tasks, the team added a script that ensures that the yarn.lock file is correctly formatted and removed some unused third-party dependencies.

App Platform

There is no update this week since the team was focused on supporting the release of the new Daedalus rewards wallet for the Incentivized Testnet.

Cardano Explorer

This week the team worked on ensuring that all services in the Explorer backend now have Docker images, which are used internally by the project team for integration testing and as a local development environment. For implementors, this also provides a convenient approach using container-based hosting environments. Elsewhere, Cardano GraphQL achieved a first release candidate, an important milestone in the project’s readiness for production, as the API is now stable and there will be only fixes applied until the QA process is complete.

Wallet backend

As a result of the team’s work this week, the wallet can now delegate to a stake pool and requires only one API call from users to do so. Behind the scenes, the wallet handles the creation and signing of delegation certificates and selects the necessary funds from the wallet to complete the delegation. Users can see how their delegation request is progressing by monitoring the transaction to which it corresponds. Once found in the ledger, delegation certificates are tracked by the wallet, making sure that they also survive any potential chain switches and rollbacks.

Work is still being done on finalizing how rewards will be tracked and displayed to users. The team is planning to finish the integration of reward balances next week.

Networking

The team has been making progress on the peer-to-peer governor this week. The first non-trivial QuickCheck test was passed, demonstrating that the governor successfully finds all reachable peers, or reaches a limit of peers to find. The team has also been working on specifying the distinction between local and public roots: local roots are IP addresses known in advance to the governor, whereas public roots are IP addresses that are discovered through DNS servers (which are known in advance as well).

In other work, the team successfully ran a full-duplex connection integrated with consensus protocols, simplified the ouroboros-network API, and adjusted the chairman application, which checks consensus between Shelley nodes, for a mixed cluster of Byron and Shelly nodes together with Byron proxies. This mixed cluster is run on every commit on CI. The documentation for the 1.0.0 release was also updated.

DevOps

This week the DevOps team started the transition testing of OBFT-era core nodes. They aim to have all testnet core nodes replaced in the next few weeks.

Cardano Decentralization

The team has been making progress across a number of areas this week, including finishing and checking the code needed for block production, addressing a few bugs turned up by testing, and improving performance by adding some infrastructure that allows blocks to be served as binary BLOBs without deserializing them.

There has also been progress on both Shelley and Byron ledgers. For the Byron ledger: some improvements in data representation have been ported over from the Shelley ledger, and an internal audit has been underway, comparing the formal specification with the executable specification to ensure as much parity as possible. While for the Shelley ledger, the automatic property-based tests are being extended so that they cover more of the ledger rules, and the ledger implementation is being integrated with the consensus implementation using Ouroboros Praos.

Finally, work is being done to establish system-level benchmarks, with stability and performance looking excellent so far. The test cluster currently spans three continents, and the test system remains completely stable when batches of 50,000 test transactions are submitted – with not a single transaction being lost in any run so far.

Goguen

This week the Plutus team started work on updating the contracts that are used as example use cases in the Plutus Playground. They also updated the game state machine and started to investigate how to improve running the Plutus Playground server tests. In addition, they began researching using MAST for Plutus Core.

The Marlowe team fixed some minor issues that were appearing in the Marlowe Playground.