Cardano Weekly Technical Report
The team reports that further progress has been made on the task to finalize V1 API and test coverage for initial rollout. The team has successfully completed the task and addressed all issues pertaining to CSL-2398 – Wire up integration tests as part of CI (Continuous Integration)***. The developers plan to have the tests set up and running in CI this week.
In the case of CSL-2400 Collect missing V1 endpoint data compared to V0 endpoints the team has found that the wallet unit property does not seem to be used anywhere in deadfalls codebase, with the exception of one place where it is set to 0 without any modification. Per this finding, the team has concluded that the issue does not need to be addressed any further and plans to close it.
Furthermore, the developers expect that, from the design and implementation point, the task of CSL-2405 Add ‘feesIncluded’ option to Transactions endpoints will be completed in the current sprint.
Additionally, the team made headway on documenting additional common API use cases. Last week the developers extended the section pertaining to retrieving transactions history, in order to give more details about available filters. Also, rewording of schema definitions of ‘spendingPassword’ and various amounts to reflect more on their actual semantic, has been successfully tackled.
The team has also worked on writing a devops guide for exchanges. Initial version of the exchange documentation has been merged to the develop branch. This new version identifies many of the items previously requiring more definition and fill some proverbial “gaps”.
Implementation of the asynchronous wallet restoration was the team’s primary objective last week. The feature has been successfully implemented, reviewed and tested. There are many UI changes introduced by this new feature: upon restoring dialog submission, users will straight away see the restoring wallet along with its balance in the UI. Wallet’s entry in the sidebar now includes a linear progress indicator which shows restoration progress. On all of the screens of the restoring wallet, an active restoration notification is presented which contains both restoration progress percentage and estimated time of restoration completion. Asynchronous wallet restoration will be released in the next Daedalus release along with many other UI improvements such as the new ‘Add wallet’ screen and ‘Show more transactions’ button which is shown on the wallet’s ‘Summary’ screen if there are more than five transactions in the given wallet. Support page within general settings has new and improved content. It now contains a link to FAQ section on Daedalus website, an option to open the ‘Support request’ dialog and an option to download the logs. NTP time check endpoint handling has been updated as this endpoint now captures both positive and negative time offsets. In order to improve security spending password setting is now switched on by default in both wallet create and restore dialogs. As a part of regular maintenance the team has updated Electron dependency.
In the past week the team undertook many important tasks and made some good progress in various areas. One of the tasks the team spent time on was the effort to decommission the Cardano-SL-1.0 exchanges branch.
A updated migration plan has been documented and fleshed out. As per the new plan, the flag to reflect how the previous stack-based build worked will be disabled. The plan is to start migration in the latter part of this week or early next week. The team currently awaits one of the exchanges to execute their previous migration plan. Another task undertaken by the team was the writing and validating formal specification for the new wallet backend.
After a review from a senior engineer, the history tracking section has been reworked. The section on the transaction submission layer has been rewritten. The changes are more precise and fit well with the rest of the spec. This part however still needs review by a senior engineer. Currently, the remaining and outstanding part of the spec is the study of the input section, on which significant progress has already been made by a senior engineer. Another part that requires attention is the acid-state database, which should be a relatively direct translation of the top-level functions in the wallet model.
Furthermore, in an effort to implement wallet backend’s new data layer following its formal spec, a team member has made further progress on CSL-2382 – Implement “pure” data layer for passive wallet. A required testing suite now runs successfully, however, the speed at which it runs is too slow. Two team members have spent time debugging this together and realized that there was a function that was being called from the testing infrastructure too often. The testing infrastructure in the wallet has been extended to incorporate the fix. The pull request is raised and is located in GitHub.
Another team member reports progress on CSL-2381 – Extend ‘Inductive’ wallet generator to include rollback. Basic implementation is complete, however, the test suite is currently failing. The team will continue to push forward and take this task across the finish line.
The main focus of the week was the effort to speed up verification and application of blocks. The developers added ’serializedSize’ calculation to the ‘Bi’ class. This should be used instead of re-serializing blocks/headers to compute their serialized size. Next step is to build a benchmark, 1) to measure how this helps, and 2) to run the benchmark with profiling information, and analyze it, to find other places where we can make the verification faster.
More details about the network team’s efforts are available in the CARDANO DECENTRALIZATION section of this report.
Last Friday DevOps cut the
release/1.2.0 branch for Cardano and
release/0.10.0 branch for Daedalus, and started preparing Daedalus 1.2 test installers for QA. Throughout the week, leading up to the release cutoff, the team focused on Cardano-SL and Daedalus concerns for the upcoming 1.2 release. While testing the API a team member identified a regression in wallet restoration. The bug has since been resolved by the new async restore feature. Automation tooling was updated to handle Daedalus pinning Cardano-SL by revision instead of branch, the versioning strategies in Cardano-SL and Daedalus were analyzed and a more coherent approach was proposed. To ensure the Linux installer can be included in the conventional release and update workflow, an engineer verified the blockchain-based update mechanism supports adding new tags. Following the Linux Beta release the community pointed out inode resource limits can be an issue in some context. In response an engineer prepared a Linux-specific proof of concept implementation for more efficient block storage. Initial findings are promising, and has motivated discussion about the proper cross-platform solution. Meanwhile, the recommendation for Linux users hitting inode limits is to use an ext3/ext4 partition with more inodes (allocating a larger partition generally helps) or use another filesystem that works well with many small files. DevOps also worked on a mix of support tasks, including helping developers with CI, cleaning up old clusters, and helping exchanges. To improve developer experience on GitHub and community visibility we switched the default branches for Cardano-SL and Daedalus from
develop. The benchmarking team is preparing to get QA more involved in their workflow, and DevOps will be advising how to automate routine experiments. To get familiar with the current situation, an engineer reviewed the benchmarking team’s training materials and reviewed a proposed plan for QA’s onboarding.
The researchers involved with the delegation research paper, discussed about quick recovery and shorter addresses. After which a special section pertaining to these subjects was presented to the team and was then reviewed. Initial feedback was good. The research team is reviewing the document further and might amend the paper slightly. Paper in its entirety is nearing completion. Additionally, the Hamburg presentation of the delegation research was well received and the researchers were able to obtain good feedback from the audience.
A draft of the research paper is still in progress. The research team have agreed on a new set of experiments/simulations that a senior researcher will perform.
In their quest to understand and improve the block verification pipeline and speed up block retrieval, the team has been making tests for serialization instances, and looking into a more efficient way to deal with byte limits for blockchain data.
In regard to block streaming, a team specialist is still testing and benchmarking the streaming implementation, but has now turned to ensuring backwards compatibility with existing nodes that run old software.
On the subject of peer discovery, a team member has abstracted the networking provider so that the team can better test and simulate the system. The team feels that they could use this to gain confidence that it is resistant to various known attacks (the original Kademlia implementation is quite vulnerable).
Attention focused towards the current delegation mechanism of the ‘As is’ state, to prepare transition towards new delegation mechanism. A specialist has joined the effort of extracting the spec for the current system.
Last week the testing for KCC was ongoing on large AWS infrastructure. The team expects to complete 5M tests in under 40 days. Additionally, the team members have started work on blogs and paper. Testing of internal testnet for K-EVM is currently ongoing. The team reports that the delays are due to insufficient knowledge of the AWS infrastructure and performing the related DevOps role in the team. Also, the team engaged in supporting RV in their development and merging of code changes for automated faucet and wallet client for testnets.
Last week saw a small decrease in the number of tickets received. The tech support team received a total of 554 tickets, out of which 251 were successfully resolved and the remaining 303 are being followed up. The top reported issues were:
- Unable to connect to network
- Unable to update wallet
- Cannot sync