ZF Engineering update: 2024 Sprint 13 (June 18th - July 1st.)

Hi everyone,

This is the Zcash Foundation’s Engineering update for Sprint 13 (June 18th - July 1st.)

During this sprint, the Zebra team continued to focus on zcashd deprecation with a focus on the new architecture required for a replacement to the built-in zcashd wallet. To that effect we have created a new zebra-scanner binary and added the ability for it to query both Zebra finalized state and non-finalized state. We have also moved all tests related to this new scanner outside of zebrad and are working on fully testing this new binary to ensure it behaves as expected. Another element of the new wallet architecture to complement the scanner is an indexer service for transparent data. We have been working on mapping out the data that this indexer service will require, in order to start implementing it in Zebra.

Other work on Zebra during this sprint included setting a default unpaid actions limit of 0, given that most wallets have now implemented support for the fees outlined in ZIP-317. We lowered the mandatory checkpoint sync height, enabling semantic block validation during the ZIP-212 grace period when checkpoint sync is disabled, and we documented the new custom testnets functionality. We also cleaned up some pending work for restoring Windows support some sprints ago by re-enabling and fixing some tests that were sporadically failing on Windows and we updated our documentation to reflect the fact that Windows is now a Tier 2 supported platform in Zebra. In preparation for an upcoming community call on the OpenAPI spec hacksprint project, we made some updates to a number of RPC methods in order for them to be compatible with the OpenAPI spec.

Finally, we prepared the Zebra 1.8.0 release which was published yesterday.

The FROST team has continued to work on the FROST demo implementation to help FROST integrators understand how to use FROST for various different use cases. During this sprint we have been focusing on the frost server, which helps FROST participants communicate with each other. We have completed a refactor to improve how ciphersuites are selected on the FROST server, to additionally enable multiple ciphersuites to be supported at a time. We have also started working on adding a simple user registration mechanism to the FROST server. This is a usability improvement that will make it easier for participants to find and download each others’ public keys and authenticate participants’ connections, among other things.

On the FROST reference implementation side, we are continuing to work on the refresh share functionality, for both a Trusted Dealer and DKG scenario. We also tagged an initial FROST 2.0.0 release candidate. We look forward to receiving any feedback on this version ahead of publishing the 2.0.0 stable release.

Last but not least, Devops continued to work on building librustzcash on our CI to identify breaking changes affecting Zebra earlier, looked into adding arm64 support to our docker images and worked on adding notifications for failures on our weekly scheduled integration tests.

There was a lot of firefighting going on in DevOps during the second half of this sprint as we worked on troubleshooting an issue with the Foundation’s hosted DNSSeeder not responding to requests. As a result of this, we have now added monitoring with an alert to inform us when this service is down and created a status page to show DNSSeeder status. This is internal for now but could be made public based on community interest and feedback.

Thank you for reading!