ZF Engineering Update: 2025 Sprint 10 (May 12 - May 23)

Hi everyone,

This is the Zcash Foundation’s Engineering update for Sprint 10 (May 12th - May 23rd) of 2025.

During this sprint we’ve been trying to finish off the last remaining RPC methods required to enable zebra to replace zcashd in the new Z3 stack. We’ve been continuing to work on on constructing shielded coinbase transactions, adding the valuePools and chainSupply fields to the getblock RPC method response as well as updating the getaddressbalance RPC method for block explorer usage. We have also been tackling a potential DoS vulnerability in the getblocktemplate RPC.

We’ve been responding to feedback that we might want to make the zebra-rpc crate explicitly usable by RPC clients such as Zaino and have been working on ensuring that zebra-rpc can work both as a server and client library. We have also been working on a way to notify RPC clients when there has been a change to the mempool.

To support the work to provide a Rust implementation of zcash_script, we tagged a new zcash_script release including @sellout’s latest changes and have updated the pending changes for zebra to use this latest version.This work is very close to being completed and enabling us to test the old and new implementations side by side before fully switching over to the Rust implementation.

In order to ensure that the new Z3 stack will behave in the same way as zcashd, and that we implement the required functionality for existing zcashd users, we have been working on making the RPC testing framework work with Zallet and Zebra. This process has uncovered some of the functionality that needs to be implemented in Zallet and we have been busy creating some issues in the Zallet repo to reflect this. As part of this work, we have also now implemented a preliminary framework to test some of Zallet’s RPCs.

In preparation for increased production usage of Zebra, we have been working on improving our procedures when it comes to doing hotfix releases. We’ve been working on an updated process for tagging and communicating hotfix releases and will be doing a dry-run of this process in the upcoming weeks.

Looking ahead to NU6.1, we’ve started some of the preliminary work in zebra of adding the required network upgrade constants.

On DevOps, we’ve been focusing on some issues with CI that arose due to how we choose cached states for testing Zebra.

We have also been working on containerising the Z3 stack and have submitted some PRs to the Zaino and Zallet repos to help with standardising our approach and having a single container image to share with stakeholders.

Thank you for reading!

14 Likes