Status Update

August 2, 2018

Status Updates (August, 2018) > August 2, 2018

Weekly Development Report

DAEDALUS

Wallet

Integration of the V1 API with Cardano Wallet continued as the team worked on first two packages of work which is split in a total of five packages.

The team also spent some time on improving the development workflow by switching from Stack to Nix for building the Cardano backend. The only issue with this approach was running the local Cardano cluster which was not working with Nix but is now fixed. This improves the workflow significantly and improves builds speeds since most of the build artifacts can be downloaded from binary cache made by the continuous integration system (CI). Two team members already switched to a new workflow and polished the instructions and documentation for building and running the backend with Nix. The instructions and scripts will soon be available to the broader development community in the GitHub repository.

App Platform

The team started building application infrastructure needed for the upcoming Proof of Concept #1 which is focused on persisting of application and platform state. A unit of work needed for persisting the application state was completed. The team also worked on theming support on the application platform level.

WALLET BACKEND

The team concentrated on porting virtually all the accounts-related endpoints end-to-end (from the Servant handlers to the kernel functions).

Two team members have continued working on extending pure data layer to support rollback. This week the developers concentrated on implementation and testing as well as some refactoring which was required to optimize performance.

Another team member has continued work in their effort of writing tests for block metadata. After some discussion with a specialist, the developers have decided to expand the effort in two directions: define DSL-level BlockMeta for richer comparisons with Cardano + support multiple addresses to test poor actors.

Furthermore, the team worked on their effort to optimize wallet restoration. The developers wrapped up porting the core of the old restoreWallet function to the wallet-new codebase.

Additional tests were created and run on the functionality which would allow to statically compute transaction size estimates.

NETWORKING

Last week the team worked on Delta Q Measurements Design and has developed a test program to take measurements.

Several of the team members have begun to converge on Communication Protocol Design and have now agreed on the same unidirectional producer-to-consumer models. The remaining point of which needs attention is the value (positive or negative) of a peer with a longer chain following that of a peer with a shorter chain.

A team specialist has spent most of their time getting familiar with the current peer discovery library for Peer Discovery Implementation. The team member is now working on expanding tests and has begun to look into integration with cardano-sl.

DEVOPS

On Monday DevOps helped launch the IELE Testnet and associated tools (https://testnet.iohkdev.io/goguen/iele/) which enable Solidity developers to have more confidence in the correctness and security of their smart contract code. Goguen infrastructure improvements are ongoing to improve deployment workflows and robustness.

DevOps reviewed and tested the Cardano Testnet cluster more in preparation for launch. We provided QA with documentation on how to request testnet Ada from the faucet and use Daedalus builds specialized for the cluster.

While testing for the upcoming Daedalus 0.11.0 release, QA discovered a performance bottleneck due to excessive logging. DevOps helped them adjust the configuration to reduce logging. More improvements were made to the AppImage-based Linux builds, and unexpected challenges like DNS lookup failures were discovered. The nix-bundle approach for Linux builds is still viable, however, and one of the two approaches will be considered for a future release.

Cardano cross-compilation on Linux for Windows continues to improve. The focus now is on converging the build pipelines for the cross-compilation branch and the develop branch. The implementation relies on newer packages, so Hydra builds for the branch have been configured to use Stackage LTS 12. To ensure parity between the Windows-based builds, the team is considering how to enable more tests on both build pipelines. Build speed was improved by removing a polling step. Nix and Haskell code in the branch were partially reviewed and refactored to follow project conventions.

To gain practical experience with wallet UtXO fragmentation, a DevOps engineer created a new cluster and implemented a program which intentionally fragments a wallet's UtXO distribution. The engineer also implemented a program to defragment the wallet and verified it works in extreme conditions.

CARDANO DECENTRALIZATION

Research and Design

Last week the research team completed the delegation paper. The design document is nearly complete as well. Currently, the team is discussing and finalizing how the rewards will be collected. Once this is fleshed out, the team plans to present the findings to top management in order to finalize the decision.

Additionally, the team has been working with a senior engineer on a detailed technical implementation plan for delegation.

The incentives research paper has been reviewed and finalized by senior researchers and submitted to a crypto conference for peer review.

Development

The refactoring was initially planned to be completed this week, however the team uncovered some additional opportunities that would provide significant payoff for the level of effort required to complete. The team plans to finish up all additional development in the next few weeks.

A developer spent time working on removing partial field accessors and adding golden/round trip tests as needed. Another developer has spent their time working on reuniting orphan instances with their types or type classes.

The team also concentrated on removing the Mockable type class as well as removing duplicate libraries which will require some extra testing. The team is currently setting up a testing network for this purpose.

Additionally, the team has been working on rearranging the package dependency graph, in order to have the existing functionality with a much less complex structure.

GOGUEN

Languages and Virtual Machines

The team is supervising the work on Plutus and Marlowe.

Testnets

The week was spent on delivering IELE testnet to specification on time.

ANNOUNCEMENTS

IOHK is currently looking for talented people to work with us as a Front End developer, Exchange Experience Engineer/Coordinator, Software Test Engineer, Senior Events Manager, Testnet Community Manager, Development Experience Manager as well as several others. Please see the IOHK Careers page for more details.