Status Update
April 12, 2018
Status Updates (April, 2018) > April 12, 2018
Weekly Development Report
CORE
Last week the the team engaged in a discussion in order to come up with an estimate for a refactoring plan for Core code base. The team feels that the most optimal approach is to have a minimal, viable refactor so that the team can determine and ensure that the Core is stable yet reasonable enough for for the team to be able to start opening up the core base to new features. Currently, the issue seems to be that the codes current state makes it difficult to optimally scope out the problem, therefore as a first stage a core stabilisation document will be produced, which will help estimate the work involved. The team estimates that this entire task should take less than two weeks. A senior engineer has provided some feedback for the document already, thus in the coming week the the team plans to complete the document and have a roadmap to move forward with the agreed approach.
- Exchange Onboarding & Support
The team reports that the documentation of Version 1 API has been completed. New use cases have been added to the documentation and are currently under review. Additionally, the team was able to successfully port over all endpoints required by exchanges to V1. Currently, the V1 API test coverage is being finalised. DevOps guide for exchanges is still in progress. As part of increased attention to optimising communication workflows between the development teams and the exchanges the team has started creating and sending out newsletters and created new Slack channels. Discussions are now under way to determine the an optimal exchange onboarding strategy for DevOps.
- Version 1 API Development
The team engaged in finalising V1 API and test coverage for initial rollout. In the task of (CSL-2375) Wallet API needs to be reviewed after Network Time Protocol refactoring, the new design is extensible for further changes to how we represent time to clients. Work is also underway on (CSL_2398) wiring up integration tests as part of continuous integration (CI). The primary work on integrating various parts has been completed successfully. Work involving (CSL_2400) collecting missing V1 endpoint data compared to V0 endpoints, needs to be updated to current state of the wallet. However, most of the changes have been addressed. Additionally, there is a possibility that (CSL_2405) Adding ‘feesIncluded’ option to Transactions endpoints, will be completed from a design and implementation point, in this sprint Furthermore, last week the team labored to review and gather feedback on the current V1 API. The team is currently implementing the changes which are under final review and awaiting final feedback. Another task which was concentrated on last week was to document additional common API use cases. The developers pushed to extend the section about retrieving transactions history to give more details about available filters. This included an effort to reword schema definitions of ‘spendingPassword’ and various amounts to reflect more on their actual semantic. Also, the team spent time on creating a log file analyser for bug classification. The collaborative team created an interactive project for the ticket classifier, which makes grabbing and managing tickets from multiple sources really easy. Last, but certainly not least, the developers worked to improve block syncing. More specifically the the team concentrated on bug fixing & performance improvements. The team reported that they successfully implemented this feature as well as a test setup to compare streaming against the existing batch download mode. Preliminary results show a roughly 1/3 speedup (streaming takes 2/3 the time) and memory/Garbage Collection (GC) stats are much better. During the current sprint the team will continue to refine streaming to maximise performance.
DAEDALUS
Last week the team finished the paper wallet certificate generator feature. The code was reviewed, the feature was thoroughly tested and the audit process is under way. The team participated in the QA testing phase and the preparation of the Daedalus 0.9.1 and Cardano 1.1.1 hotfix release. There is a substantial list of UI/UX improvements and minor bug fixes which were resolved and will be released with the next release. The team also started with the development of the next big feature which is the asynchronous wallet restoration.
WALLET BACKEND
The team concentrated on decommissioning the Cardano-SL-1.0- exchanges branch. There were unexpected errors in the previous migration plan, which was tracked down with the with-explorer. Apparently, a compile time flag unintentionally enabled in the new environment. An updated migration plan has been documented. This will disable the flag to reflect how the previous stack-based build worked. The team plans to start migration in the latter part of this week or early next week. The team also worked to write and validate formal specification for the new wallet backend. Further progress on the specification has been made. All the aspects of the rollback have now been documented in detail, definitions and corresponding proofs are also much cleaner. A senior engineer has done a first review of the new sections. Additionally, a section has been added for tracking metadata, which is needed for history tracking. However, this has only just been completed and is pending review at. In an effort to implement wallet backend's new data layer following its formal spec: Further progress has been made on (CSL-2382) - Implementing “pure” data layer for passive wallet, despite that the pull request (PR) is not ready yet. However, the design is ready, tests are hooked up to the generator. Currently, tests are failing and the team is debugging the issue. A team member has started looking at the new wallet from the point of view of running it in an actual network. He discovered some strange values reported from the server, and has got to the bottom of that. In the task of adding a server side Transport Layer Security (TLS) check, the Development / Testing certificates in scripts/tls-files have been updated, and a client certificate has been added for testing. The servers-side checks now include client's name verification (information embedded in the client's certificate, matching against values provided to cardano-node via the Command Line Interface (CLI), default to "Daedalus Wallet”). Certificates are generated from a script located on the Daedalus repository. This script has been slightly adjusted and a PR will be issued soon to cover the changes. End-user documentation extension has been submitted to describe the required manipulation of generating and using new certificates. Also, a pull request has been opened for the task of asynchronous restoration of a wallet from seed. This PR will not need to be reviewed by the development team. Front end team work is also required on this PR. Finally, the task of merging remedial work from the master to develop branch has been successfully completed.
NETWORKING
The team spent time on speeding up verification and application of the ‘blocksContinued’ analysis and found out that there are some aspects that need to be changed / completed. A change is required for the Database query in order to stop querying the same data three times during verification. Additionally, it is necessary to push the test for block size in bytes out of verification of the already constructed data.
DEVOPS
DevOps delivered the Daedalus 1.1.1 update for Windows and macOS, as well as the Linux Beta installer. The team automated more of the Daedalus update proposal procedure, improved runtime configuration mechanisms, improved CI build sandboxing, and sent a patch upstream to nix-bundle to clean up temporary directories. In preparation for API V1 of the wallet we finished reviewing the new documentation for exchanges (docs for migrating from API V0 in progress) and automated nixops tests were added to detect regressions. We reviewed and discussed plans to move toward structured logging, started improving fallback communication guidelines, and provided cloud resources for Project Reagan.
MISCELLANEOUS WORKSTREAMS
- Smart Contract Language
Last week the smart contract language team pushed to develop a roadmap and detailed plan for the first month of development and started an investigation into the feasibility of various data type encodings for the smart contract language core.
- K/IELE
The team is currently preparing for a code merge and an internal testnet.
- Misc.
The asset locality paper progress has been good. A draft should be available for review shortly. Additionally, we have started testing KCC (K-framework) on large AWS server.
Tech Support
Last week saw a small decrease in the number of tickets received. The tech support team received a total of 705 tickets, out of which 219 were successfully resolved and the remaining 486 are being followed up. The top reported issues were:
- Unable to connect to network
- Unable to update wallet
- Cannot sync
- Misc.