Hi everyone,
This is the Zcash Foundation’s Engineering update for Sprint 12 (June 4th - June 17th.)
During this sprint, the team worked on decoupling the block scanning functionality from zebrad so that it can run in its own process without directly accessing zebrad’s memory. This could potentially be used to scan for spendable notes and as an example of how to access Zebra’s state from another process in a replacement to the zcashd built-in wallet currently used by exchanges to progress towards zcashd deprecation. This work included creating a new zebra-scan binary, removing the code that starts the scanning functionality on Zebra startup, and making Zebra’s state accessible from other processes.
We have also worked on a number of technical debt issues to improve Zebra’s maintainability, including a simplified zcash_script API to remove its ECC dependencies. This new zcash_script release has now been included in Zebra and makes it possible to update Zebra’s ECC dependencies without updating zcash_script and before zcashd’s dependencies are updated. It also enables building Zebra in the librustzcash CI for better visibility into how changes in librustzcash will affect Zebra. Related to this, we also upgraded Zebra dependencies to no longer rely on BOSL licensed versions of ECC crates.
Finally, we presented the Zebra Launcher project, which was developed during the latest Hacksprint, during a community call on the Zcash Global discord.
The FROST team continued working on the demo to help future integrators of FROST crates with usage of the FROST reference implementation. To this end we have now merged some code to show how the FROST server can be made cypher-suite blind in order to be able to work with multiple cyphersuites at the same time.
On the FROST reference implementation we have been preparing to tag a v2.0.0 release candidate including a number of API breaking changes. These include adding no_std support to FROST, to enable it to be used in embedded systems, improving usability by returning an error when deserializing the identity as well as making the serialization methods consistent with each other and refactoring some code which will break with a future Rust version. These improvements will be released during the coming week in the frost-core v2.0.0-rc.0 release. We welcome feedback on this version ahead of tagging the stable version.
On the Devops side we refactored our pipelines to fix an issue whereby we were building our docker images twice. We also started using Docker Build Cloud to build our docker images. Both of these changes will result in cost savings in our CI infrastructure.
Thank you for reading!